summaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authordscho <dscho>2008-01-29 11:49:14 +0000
committerdscho <dscho>2008-01-29 11:49:14 +0000
commit09d902c5b7ce1881e7a4d9642bfae8202f13387f (patch)
treeffa9432de01d77b73670d2900c9659913fcc60af /CMakeLists.txt
parentc07091b3900ad1d66bb9665a892bf93c685d031a (diff)
downloadlibtdevnc-09d902c5b7ce1881e7a4d9642bfae8202f13387f.tar.gz
libtdevnc-09d902c5b7ce1881e7a4d9642bfae8202f13387f.zip
Add CMake support (thanks to Christian Ehrlicher)
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt243
1 files changed, 243 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..4841cd0
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,243 @@
+project(LibVNCServer)
+include(CheckFunctionExists)
+include(CheckIncludeFile)
+include(CheckTypeSize)
+include(TestBigEndian)
+
+set(PACKAGE_NAME "LibVNCServer")
+set(FULL_PACKAGE_NAME "LibVNCServer")
+set(PACKAGE_VERSION "0.9.2")
+set(PROJECT_BUGREPORT_PATH "http://sourceforge.net/projects/libvncserver")
+
+include_directories(${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/libvncserver)
+
+find_package(ZLIB)
+find_package(JPEG)
+find_package(SDL)
+
+if(SDL_FOUND) # == pthread.h available
+ option(TIGHTVNC_FILETRANSFER "Enable filetransfer" ON)
+endif(SDL_FOUND)
+if(ZLIB_FOUND)
+ set(LIBVNCSERVER_HAVE_LIBZ 1)
+endif(ZLIB_FOUND)
+if(JPEG_FOUND)
+ set(LIBVNCSERVER_HAVE_LIBJPEG 1)
+endif(JPEG_FOUND)
+option(LIBVNCSERVER_ALLOW24BPP "Allow 24 bpp" ON)
+
+check_include_file("fcntl.h" LIBVNCSERVER_HAVE_FCNTL_H)
+check_include_file("netinet/in.h" LIBVNCSERVER_HAVE_NETINET_IN_H)
+check_include_file("pthread.h" LIBVNCSERVER_HAVE_LIBPTHREAD)
+check_include_file("sys/socket.h" LIBVNCSERVER_HAVE_SYS_SOCKET_H)
+check_include_file("sys/stat.h" LIBVNCSERVER_HAVE_SYS_STAT_H)
+check_include_file("sys/time.h" LIBVNCSERVER_HAVE_SYS_TIME_H)
+check_include_file("sys/types.h" LIBVNCSERVER_HAVE_SYS_TYPES_H)
+check_include_file("sys/wait.h" LIBVNCSERVER_HAVE_SYS_WAIT_H)
+check_include_file("unistd.h" LIBVNCSERVER_HAVE_UNISTD_H)
+
+# headers needed for check_type_size()
+check_include_file("arpa/inet.h" HAVE_ARPA_INET_H)
+check_include_file("stdint.h" HAVE_STDINT_H)
+check_include_file("stddef.h" HAVE_STDDEF_H)
+check_include_file("sys/types.h" HAVE_SYS_TYPES_H)
+
+check_function_exists(gettimeofday LIBVNCSERVER_HAVE_GETTIMEOFDAY)
+
+if(LIBVNCSERVER_HAVE_SYS_SOCKET_H)
+ # socklen_t
+ list(APPEND CMAKE_EXTRA_INCLUDE_FILES "sys/socket.h")
+endif(LIBVNCSERVER_HAVE_SYS_SOCKET_H)
+if(HAVE_ARPA_INET_H)
+ # in_addr_t
+ list(APPEND CMAKE_EXTRA_INCLUDE_FILES "arpa/inet.h")
+endif(HAVE_ARPA_INET_H)
+
+check_type_size(pid_t LIBVNCSERVER_PID_T)
+check_type_size(size_t LIBVNCSERVER_SIZE_T)
+check_type_size(socklen_t LIBVNCSERVER_SOCKLEN_T)
+check_type_size(in_addr_t LIBVNCSERVER_IN_ADDR_T)
+if(NOT HAVE_LIBVNCSERVER_IN_ADDR_T)
+ set(LIBVNCSERVER_NEED_INADDR_T 1)
+endif(NOT HAVE_LIBVNCSERVER_IN_ADDR_T)
+
+TEST_BIG_ENDIAN(LIBVNCSERVER_WORDS_BIGENDIAN)
+
+# TODO:
+# LIBVNCSERVER_ENOENT_WORKAROUND
+# inline
+
+configure_file(${CMAKE_SOURCE_DIR}/rfb/rfbconfig.h.cmake ${CMAKE_BINARY_DIR}/rfb/rfbconfig.h)
+configure_file(${CMAKE_SOURCE_DIR}/rfb/rfbint.h.cmake ${CMAKE_BINARY_DIR}/rfb/rfbint.h)
+
+set(LIBVNCSERVER_DIR ${CMAKE_SOURCE_DIR}/libvncserver)
+set(LIBVNCCLIENT_DIR ${CMAKE_SOURCE_DIR}/libvncclient)
+set(LIBVNCSRVTEST_DIR ${CMAKE_SOURCE_DIR}/examples)
+set(LIBVNCCLITEST_DIR ${CMAKE_SOURCE_DIR}/client_examples)
+
+set(LIBVNCSERVER_SOURCES
+ ${LIBVNCSERVER_DIR}/main.c
+ ${LIBVNCSERVER_DIR}/rfbserver.c
+ ${LIBVNCSERVER_DIR}/rfbregion.c
+ ${LIBVNCSERVER_DIR}/auth.c
+ ${LIBVNCSERVER_DIR}/sockets.c
+ ${LIBVNCSERVER_DIR}/stats.c
+ ${LIBVNCSERVER_DIR}/corre.c
+ ${LIBVNCSERVER_DIR}/hextile.c
+ ${LIBVNCSERVER_DIR}/rre.c
+ ${LIBVNCSERVER_DIR}/translate.c
+ ${LIBVNCSERVER_DIR}/cutpaste.c
+ ${LIBVNCSERVER_DIR}/httpd.c
+ ${LIBVNCSERVER_DIR}/cursor.c
+ ${LIBVNCSERVER_DIR}/font.c
+ ${LIBVNCSERVER_DIR}/draw.c
+ ${LIBVNCSERVER_DIR}/selbox.c
+ ${LIBVNCSERVER_DIR}/d3des.c
+ ${LIBVNCSERVER_DIR}/vncauth.c
+ ${LIBVNCSERVER_DIR}/cargs.c
+ ${LIBVNCSERVER_DIR}/minilzo.c
+ ${LIBVNCSERVER_DIR}/ultra.c
+ ${LIBVNCSERVER_DIR}/scale.c
+)
+
+set(LIBVNCCLIENT_SOURCES
+ ${LIBVNCCLIENT_DIR}/cursor.c
+ ${LIBVNCCLIENT_DIR}/listen.c
+ ${LIBVNCCLIENT_DIR}/rfbproto.c
+ ${LIBVNCCLIENT_DIR}/sockets.c
+ ${LIBVNCCLIENT_DIR}/vncviewer.c
+ ${LIBVNCCLIENT_DIR}/minilzo.c
+)
+
+if(ZLIB_FOUND)
+ add_definitions(-DLIBVNCSERVER_HAVE_LIBZ)
+ include_directories(${ZLIB_INCLUDE_DIR})
+ set(LIBVNCSERVER_SOURCES
+ ${LIBVNCSERVER_SOURCES}
+ ${LIBVNCSERVER_DIR}/zlib.c
+ ${LIBVNCSERVER_DIR}/zrle.c
+ ${LIBVNCSERVER_DIR}/zrleoutstream.c
+ ${LIBVNCSERVER_DIR}/zrlepalettehelper.c
+ )
+endif(ZLIB_FOUND)
+
+if(JPEG_FOUND)
+ add_definitions(-DLIBVNCSERVER_HAVE_LIBJPEG)
+ include_directories(${JPEG_INCLUDE_DIR})
+ set(LIBVNCSERVER_SOURCES
+ ${LIBVNCSERVER_SOURCES}
+ ${LIBVNCSERVER_DIR}/tight.c
+ )
+endif(JPEG_FOUND)
+
+if(TIGHTVNC_FILETRANSFER)
+ set(LIBVNCSERVER_SOURCES
+ ${LIBVNCSERVER_SOURCES}
+ ${LIBVNCSERVER_DIR}/tightvnc-filetransfer/rfbtightserver.c
+ ${LIBVNCSERVER_DIR}/tightvnc-filetransfer/handlefiletransferrequest.c
+ ${LIBVNCSERVER_DIR}/tightvnc-filetransfer/filetransfermsg.c
+ ${LIBVNCSERVER_DIR}/tightvnc-filetransfer/filelistinfo.c
+ )
+endif(TIGHTVNC_FILETRANSFER)
+
+add_library(vncclient SHARED ${LIBVNCCLIENT_SOURCES})
+add_library(vncserver SHARED ${LIBVNCSERVER_SOURCES})
+if(WIN32)
+ set(ADDITIONAL_LIBS ws2_32)
+endif(WIN32)
+
+target_link_libraries(vncclient
+ ${ADDITIONAL_LIBS}
+ ${ZLIB_LIBRARIES}
+ ${JPEG_LIBRARIES}
+ ${SDL_LIBRARY}
+)
+target_link_libraries(vncserver
+ ${ADDITIONAL_LIBS}
+ ${ZLIB_LIBRARIES}
+ ${JPEG_LIBRARIES}
+ ${SDL_LIBRARY}
+)
+
+# tests
+set(LIBVNCSERVER_TESTS
+ backchannel
+ camera
+ colourmaptest
+ example
+ fontsel
+ pnmshow
+ pnmshow24
+ regiontest
+ rotate
+ simple
+ simple15
+ storepasswd
+ vncev
+ )
+
+if(SDL_FOUND)
+ set(LIBVNCSERVER_TESTS
+ ${LIBVNCSERVER_TESTS}
+ blooptest
+ )
+endif(SDL_FOUND)
+
+if(TIGHTVNC_FILETRANSFER)
+ set(LIBVNCSERVER_TESTS
+ ${LIBVNCSERVER_TESTS}
+ filetransfer
+ )
+endif(TIGHTVNC_FILETRANSFER)
+
+if(MACOS)
+ set(LIBVNCSERVER_TESTS
+ ${LIBVNCSERVER_TESTS}
+ mac
+ )
+endif(MACOS)
+
+set(LIBVNCCLIENT_TESTS
+ backchannel
+ ppmtest
+)
+
+if(SDL_FOUND)
+ include_directories(${SDL_INCLUDE_DIR})
+ set(LIBVNCCLIENT_TESTS
+ ${LIBVNCCLIENT_TESTS}
+ SDLvncviewer
+ )
+endif(SDL_FOUND)
+
+if(HAVE_FFMPEG)
+ set(LIBVNCCLIENT_TESTS
+ ${LIBVNCCLIENT_TESTS}
+ vnc2mpg
+ )
+endif(HAVE_FFMPEG)
+
+
+file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/examples)
+foreach(test ${LIBVNCSERVER_TESTS})
+ add_executable(examples/${test} ${LIBVNCSRVTEST_DIR}/${test}.c)
+ target_link_libraries(examples/${test} vncserver)
+endforeach(test ${LIBVNCSERVER_TESTS})
+
+file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/client_examples)
+foreach(test ${LIBVNCCLIENT_TESTS})
+ add_executable(client_examples/${test} ${LIBVNCCLITEST_DIR}/${test}.c)
+ target_link_libraries(client_examples/${test} vncclient ${SDL_LIBRARIES} ${FFMPEG_LIBRARIES})
+endforeach(test ${LIBVNCCLIENT_TESTS})
+
+install_targets(/lib vncserver)
+install_targets(/lib vncclient)
+install_files(/include/rfb FILES
+ rfb/keysym.h
+ rfb/rfb.h
+ rfb/rfbclient.h
+ rfb/rfbconfig.h
+ rfb/rfbint.h
+ rfb/rfbproto.h
+ rfb/rfbregion.h
+)