summaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt403
1 files changed, 287 insertions, 116 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 37f88e0..c6525ff 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,139 +5,142 @@ endif( POLICY CMP0037 )
project(LibVNCServer)
include(CheckFunctionExists)
+include(CheckSymbolExists)
include(CheckIncludeFile)
include(CheckTypeSize)
include(TestBigEndian)
include(CheckCSourceCompiles)
-include(CheckCXXSourceCompiles)
include(CheckCSourceRuns)
+enable_testing()
+
set(PACKAGE_NAME "LibVNCServer")
set(FULL_PACKAGE_NAME "LibVNCServer")
set(VERSION_MAJOR "0")
set(VERSION_MINOR "9")
-set(VERSION_PATCHLEVEL "11")
-set(VERSION_SO "0")
+set(VERSION_PATCHLEVEL "12")
+set(VERSION_SO "1")
set(PACKAGE_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCHLEVEL}")
-set(PROJECT_BUGREPORT_PATH "http://sourceforge.net/projects/libvncserver")
-set(CMAKE_C_FLAGS "-O2 -W -Wall -g")
+set(PROJECT_BUGREPORT_PATH "https://github.com/LibVNC/libvncserver/issues")
set(LIBVNCSERVER_DIR ${CMAKE_CURRENT_SOURCE_DIR}/libvncserver)
set(COMMON_DIR ${CMAKE_CURRENT_SOURCE_DIR}/common)
set(LIBVNCCLIENT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/libvncclient)
-set(LIBVNCSRVTEST_DIR ${CMAKE_CURRENT_SOURCE_DIR}/examples)
-set(LIBVNCCLITEST_DIR ${CMAKE_CURRENT_SOURCE_DIR}/client_examples)
+set(LIBVNCSRVEXAMPLE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/examples)
+set(LIBVNCCLIEXAMPLE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/client_examples)
+set(TESTS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/test)
+set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/libvncserver ${CMAKE_CURRENT_SOURCE_DIR}/common)
-find_package(ZLIB)
-find_package(JPEG)
-find_package(PNG)
-find_package(SDL)
-find_package(GnuTLS)
-find_package(Threads)
-find_package(X11)
-find_package(OpenSSL)
-find_package(PkgConfig)
-find_library(LIBGCRYPT_LIBRARIES gcrypt)
-
-# Check whether the version of libjpeg we found was libjpeg-turbo and print a
-# warning if not.
-set(CMAKE_REQUIRED_LIBRARIES ${JPEG_LIBRARIES})
-set(CMAKE_REQUIRED_FLAGS -I${JPEG_INCLUDE_DIR})
-
-set(JPEG_TEST_SOURCE "\n
- #include <stdio.h>\n
- #include <jpeglib.h>\n
- int main(void) {\n
- struct jpeg_compress_struct cinfo;\n
- struct jpeg_error_mgr jerr;\n
- cinfo.err=jpeg_std_error(&jerr);\n
- jpeg_create_compress(&cinfo);\n
- cinfo.input_components = 3;\n
- jpeg_set_defaults(&cinfo);\n
- cinfo.in_color_space = JCS_EXT_RGB;\n
- jpeg_default_colorspace(&cinfo);\n
- return 0;\n
- }")
-
-if(CMAKE_CROSSCOMPILING)
- check_c_source_compiles("${JPEG_TEST_SOURCE}" FOUND_LIBJPEG_TURBO)
-else()
- check_c_source_runs("${JPEG_TEST_SOURCE}" FOUND_LIBJPEG_TURBO)
+# all the build configuration switches
+option(BUILD_SHARED_LIBS "Build shared libraries" ${UNIX})
+option(WITH_ZLIB "Search for the zlib compression library to support additional encodings" ON)
+option(WITH_LZO "Search for the LZO compression library to omit internal miniLZO implementation" ON)
+option(WITH_JPEG "Search for the libjpeg compression library to support additional encodings" ON)
+option(WITH_PNG "Search for the PNG compression library to support additional encodings" ON)
+option(WITH_SDL "Search for the Simple Direct Media Layer library to build an example SDL vnc client" ON)
+option(WITH_THREADS "Search for a threading library to build with multithreading support" ON)
+option(WITH_GNUTLS "Search for the GnuTLS secure communications library to support encryption" ON)
+option(WITH_OPENSSL "Search for the OpenSSL cryptography library to support encryption" ON)
+option(WITH_SYSTEMD "Search for libsystemd to build with systemd socket activation support" ON)
+option(WITH_GCRYPT "Search for libgcrypt to support additional authentication methods in LibVNCClient" ON)
+option(WITH_FFMPEG "Search for FFMPEG to build an example VNC to MPEG encoder" ON)
+option(WITH_TIGHTVNC_FILETRANSFER "Enable filetransfer if there is pthreads support" ON)
+option(WITH_24BPP "Allow 24 bpp" ON)
+option(WITH_IPv6 "Enable IPv6 Support" ON)
+option(WITH_WEBSOCKETS "Build with websockets support" ON)
+option(WITH_SASL "Build with SASL support" ON)
+
+
+
+if(WITH_ZLIB)
+ find_package(ZLIB)
+endif(WITH_ZLIB)
+
+if(WITH_LZO)
+ find_package(LZO)
endif()
-set(CMAKE_REQUIRED_LIBRARIES)
-set(CMAKE_REQUIRED_FLAGS)
-set(CMAKE_REQUIRED_DEFINITIONS)
-
-if(NOT FOUND_LIBJPEG_TURBO)
- message(WARNING "*** The libjpeg library you are building against is not libjpeg-turbo. Performance will be reduced. You can obtain libjpeg-turbo from: https://sourceforge.net/projects/libjpeg-turbo/files/ ***")
-endif()
+if(WITH_JPEG)
+ find_package(JPEG)
+ if(JPEG_FOUND)
+ # Check whether the version of libjpeg we found was libjpeg-turbo and print a
+ # warning if not.
+ set(CMAKE_REQUIRED_LIBRARIES ${JPEG_LIBRARIES})
+ set(CMAKE_REQUIRED_FLAGS -I${JPEG_INCLUDE_DIR})
+
+ set(JPEG_TEST_SOURCE "\n
+ #include <stdio.h>\n
+ #include <jpeglib.h>\n
+ int main(void) {\n
+ struct jpeg_compress_struct cinfo;\n
+ struct jpeg_error_mgr jerr;\n
+ cinfo.err=jpeg_std_error(&jerr);\n
+ jpeg_create_compress(&cinfo);\n
+ cinfo.input_components = 3;\n
+ jpeg_set_defaults(&cinfo);\n
+ cinfo.in_color_space = JCS_EXT_RGB;\n
+ jpeg_default_colorspace(&cinfo);\n
+ return 0;\n
+ }")
+
+ if(CMAKE_CROSSCOMPILING)
+ check_c_source_compiles("${JPEG_TEST_SOURCE}" FOUND_LIBJPEG_TURBO)
+ else()
+ check_c_source_runs("${JPEG_TEST_SOURCE}" FOUND_LIBJPEG_TURBO)
+ endif()
-# On systems such as GNU/Linux with glibc, __b64_ntop is defined in a
-# separate library, libresolv. On some others, such as FreeBSD, it is
-# part of libc itself. We first check if __b64_ntop is found without
-# additional libraries, and then try looking for it with libresolv if
-# the first test fails.
-check_function_exists(__b64_ntop HAVE_B64_IN_LIBC)
-if(NOT HAVE_B64_IN_LIBC)
- set(CMAKE_REQUIRED_LIBRARIES resolv)
- check_function_exists(__b64_ntop HAVE_B64_IN_LIBRESOLV)
set(CMAKE_REQUIRED_LIBRARIES)
+ set(CMAKE_REQUIRED_FLAGS)
+ set(CMAKE_REQUIRED_DEFINITIONS)
- if(HAVE_B64_IN_LIBRESOLV)
- set(RESOLV_LIB "resolv")
- endif(HAVE_B64_IN_LIBRESOLV)
-endif(NOT HAVE_B64_IN_LIBC)
+ if(NOT FOUND_LIBJPEG_TURBO)
+ message(WARNING "*** The libjpeg library you are building against is not libjpeg-turbo. Performance will be reduced. You can obtain libjpeg-turbo from: https://sourceforge.net/projects/libjpeg-turbo/files/ ***")
+ endif()
+ endif(JPEG_FOUND)
+endif(WITH_JPEG)
-if(Threads_FOUND)
- option(TIGHTVNC_FILETRANSFER "Enable filetransfer" ON)
-endif(Threads_FOUND)
-if(ZLIB_FOUND)
- set(LIBVNCSERVER_HAVE_LIBZ 1)
-endif(ZLIB_FOUND)
-if(JPEG_FOUND)
- set(LIBVNCSERVER_HAVE_LIBJPEG 1)
-endif(JPEG_FOUND)
-if(PNG_FOUND)
- set(LIBVNCSERVER_HAVE_LIBPNG 1)
-endif(PNG_FOUND)
-option(LIBVNCSERVER_ALLOW24BPP "Allow 24 bpp" ON)
-pkg_check_modules(SYSTEMD "libsystemd")
-if(SYSTEMD_FOUND)
- option(LIBVNCSERVER_WITH_SYSTEMD "Build with systemd socket activation support" ON)
-endif(SYSTEMD_FOUND)
+if(WITH_PNG)
+ find_package(PNG)
+endif(WITH_PNG)
-if(LIBVNCSERVER_WITH_SYSTEMD)
- add_definitions(-DLIBVNCSERVER_WITH_SYSTEMD)
- include_directories(${SYSTEMD_INCLUDE_DIRS})
- set(ADDITIONAL_LIBS ${ADDITIONAL_LIBS} ${SYSTEMD_LIBRARIES})
-endif(LIBVNCSERVER_WITH_SYSTEMD)
-if(GNUTLS_FOUND)
- set(LIBVNCSERVER_WITH_CLIENT_TLS 1)
- option(LIBVNCSERVER_WITH_WEBSOCKETS "Build with websockets support (gnutls)" ON)
- set(WEBSOCKET_LIBRARIES ${RESOLV_LIB} ${GNUTLS_LIBRARIES})
- set(WSSRCS ${LIBVNCSERVER_DIR}/rfbssl_gnutls.c ${LIBVNCSERVER_DIR}/rfbcrypto_gnutls.c)
- include_directories(${GNUTLS_INCLUDE_DIR})
-elseif(OPENSSL_FOUND)
- option(LIBVNCSERVER_WITH_WEBSOCKETS "Build with websockets support (openssl)" ON)
- set(WEBSOCKET_LIBRARIES ${RESOLV_LIB} ${OPENSSL_LIBRARIES})
- set(WSSRCS ${LIBVNCSERVER_DIR}/rfbssl_openssl.c ${LIBVNCSERVER_DIR}/rfbcrypto_openssl.c)
- include_directories(${OPENSSL_INCLUDE_DIR})
-else()
- option(LIBVNCSERVER_WITH_WEBSOCKETS "Build with websockets support (no ssl)" ON)
- set(WEBSOCKET_LIBRARIES ${RESOLV_LIB})
- set(WSSRCS ${LIBVNCSERVER_DIR}/rfbssl_none.c ${LIBVNCSERVER_DIR}/rfbcrypto_included.c ${COMMON_DIR}/md5.c ${COMMON_DIR}/sha1.c)
-endif()
+if(WITH_SDL)
+ find_package(SDL2)
+endif(WITH_SDL)
+
+
+if(WITH_THREADS)
+ find_package(Threads)
+endif(WITH_THREADS)
+
+
+if(WITH_GNUTLS)
+ find_package(GnuTLS)
+endif(WITH_GNUTLS)
+
+
+if(WITH_OPENSSL)
+ find_package(OpenSSL)
+endif(WITH_OPENSSL)
-if(LIBGCRYPT_LIBRARIES)
- message(STATUS "Found libgcrypt: ${LIBGCRYPT_LIBRARIES}")
- set(LIBVNCSERVER_WITH_CLIENT_GCRYPT 1)
- set(ADDITIONAL_LIBS ${ADDITIONAL_LIBS} ${LIBGCRYPT_LIBRARIES})
-endif(LIBGCRYPT_LIBRARIES)
+
+if(WITH_SYSTEMD AND NOT ANDROID)
+ find_package(PkgConfig)
+ pkg_check_modules(SYSTEMD "libsystemd")
+endif(WITH_SYSTEMD AND NOT ANDROID)
+
+
+if(WITH_GCRYPT)
+ find_library(LIBGCRYPT_LIBRARIES gcrypt)
+endif(WITH_GCRYPT)
+
+if(WITH_FFMPEG)
+ find_package(FFMPEG 3.1.0)
+endif(WITH_FFMPEG)
check_include_file("endian.h" LIBVNCSERVER_HAVE_ENDIAN_H)
@@ -150,6 +153,8 @@ 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)
+check_include_file("sys/uio.h" LIBVNCSERVER_HAVE_SYS_UIO_H)
+
# headers needed for check_type_size()
check_include_file("vfork.h" LIBVNCSERVER_HAVE_VFORK_H)
@@ -159,15 +164,115 @@ 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)
+# error out if required headers not found
+if(NOT HAVE_STDINT_H)
+ message(FATAL_ERROR "Could NOT find required header stdint.h")
+endif()
+
check_function_exists(gettimeofday LIBVNCSERVER_HAVE_GETTIMEOFDAY)
check_function_exists(vfork LIBVNCSERVER_HAVE_VFORK)
check_function_exists(vprintf LIBVNCSERVER_HAVE_VPRINTF)
+check_function_exists(mmap LIBVNCSERVER_HAVE_MMAP)
+check_function_exists(fork LIBVNCSERVER_HAVE_FORK)
+check_function_exists(ftime LIBVNCSERVER_HAVE_FTIME)
+check_function_exists(gethostbyname LIBVNCSERVER_HAVE_GETHOSTBYNAME)
+check_function_exists(gethostname LIBVNCSERVER_HAVE_GETHOSTNAME)
+check_function_exists(inet_ntoa LIBVNCSERVER_HAVE_INET_NTOA)
+check_function_exists(memmove LIBVNCSERVER_HAVE_MEMMOVE)
+check_function_exists(memset LIBVNCSERVER_HAVE_MEMSET)
+check_function_exists(mkfifo LIBVNCSERVER_HAVE_MKFIFO)
+check_function_exists(select LIBVNCSERVER_HAVE_SELECT)
+check_function_exists(socket LIBVNCSERVER_HAVE_SOCKET)
+check_function_exists(strchr LIBVNCSERVER_HAVE_STRCHR)
+check_function_exists(strcspn LIBVNCSERVER_HAVE_STRCSPN)
+check_function_exists(strdup LIBVNCSERVER_HAVE_STRDUP)
+check_function_exists(strerror LIBVNCSERVER_HAVE_STRERROR)
+check_function_exists(strstr LIBVNCSERVER_HAVE_STRSTR)
+
+check_symbol_exists(htobe64 "endian.h" LIBVNCSERVER_HAVE_HTOBE64)
+check_symbol_exists(OSSwapHostToBigInt64 "libkern/OSByteOrder.h" LIBVNCSERVER_HAVE_OSSWAPHOSTTOBIGINT64)
+
+if(Threads_FOUND)
+ set(ADDITIONAL_LIBS ${ADDITIONAL_LIBS} ${CMAKE_THREAD_LIBS_INIT})
+endif(Threads_FOUND)
+if(ZLIB_FOUND)
+ set(LIBVNCSERVER_HAVE_LIBZ 1)
+else()
+ unset(ZLIB_LIBRARIES) # would otherwise contain -NOTFOUND, confusing target_link_libraries()
+endif(ZLIB_FOUND)
+if(LZO_FOUND)
+ set(LIBVNCSERVER_HAVE_LZO 1)
+else()
+ unset(LZO_LIBRARIES CACHE) # would otherwise contain -NOTFOUND, confusing target_link_libraries()
+endif()
+if(JPEG_FOUND)
+ set(LIBVNCSERVER_HAVE_LIBJPEG 1)
+else()
+ unset(JPEG_LIBRARIES) # would otherwise confuse target_link_libraries()
+endif(JPEG_FOUND)
+if(PNG_FOUND)
+ set(LIBVNCSERVER_HAVE_LIBPNG 1)
+endif(PNG_FOUND)
+if(NOT OPENSSL_FOUND)
+ unset(OPENSSL_LIBRARIES) # would otherwise contain -NOTFOUND, confusing target_link_libraries()
+endif()
+if(SYSTEMD_FOUND)
+ add_definitions(-DLIBVNCSERVER_WITH_SYSTEMD)
+ include_directories(${SYSTEMD_INCLUDE_DIRS})
+ set(ADDITIONAL_LIBS ${ADDITIONAL_LIBS} ${SYSTEMD_LIBRARIES})
+endif(SYSTEMD_FOUND)
+
+if(LIBVNCSERVER_HAVE_SYS_UIO_H)
+ if(GNUTLS_FOUND)
+ message(STATUS "Building crypto with GnuTLS")
+ set(CRYPTO_LIBRARIES ${GNUTLS_LIBRARIES})
+ set(CRYPTO_SOURCES ${COMMON_DIR}/rfbcrypto_gnutls.c)
+ include_directories(${GNUTLS_INCLUDE_DIR})
+ elseif(OPENSSL_FOUND)
+ message(STATUS "Building crypto with OpenSSL")
+ set(CRYPTO_LIBRARIES ${OPENSSL_LIBRARIES})
+ set(CRYPTO_SOURCES ${COMMON_DIR}/rfbcrypto_openssl.c)
+ else()
+ message(STATUS "Building crypto with builtin functions")
+ set(CRYPTO_SOURCES ${COMMON_DIR}/rfbcrypto_included.c ${COMMON_DIR}/md5.c ${COMMON_DIR}/sha1.c)
+ endif()
+ set(LIBVNCSERVER_HAVE_CRYPTO 1)
+endif(LIBVNCSERVER_HAVE_SYS_UIO_H)
+
+
+if(WITH_WEBSOCKETS AND LIBVNCSERVER_HAVE_CRYPTO AND (LIBVNCSERVER_HAVE_HTOBE64 OR LIBVNCSERVER_HAVE_OSSWAPHOSTTOBIGINT64))
+ set(LIBVNCSERVER_WITH_WEBSOCKETS 1)
+endif()
+
+if(WITH_GCRYPT AND LIBGCRYPT_LIBRARIES)
+ message(STATUS "Found libgcrypt: ${LIBGCRYPT_LIBRARIES}")
+ set(LIBVNCSERVER_WITH_CLIENT_GCRYPT 1)
+ set(ADDITIONAL_LIBS ${ADDITIONAL_LIBS} ${LIBGCRYPT_LIBRARIES})
+endif(WITH_GCRYPT AND LIBGCRYPT_LIBRARIES)
+
+if(GNUTLS_FOUND)
+ set(LIBVNCSERVER_HAVE_GNUTLS 1)
+endif(GNUTLS_FOUND)
+
+if(OPENSSL_FOUND)
+ set(LIBVNCSERVER_HAVE_LIBSSL 1)
+endif(OPENSSL_FOUND)
+
+if(WITH_IPv6)
+ if(WIN32 AND LIBVNCSERVER_HAVE_WS2TCPIP_H AND LIBVNCSERVER_HAVE_VPRINTF)
+ set(LIBVNCSERVER_IPv6 1)
+ endif()
+ if(NOT WIN32)
+ set(LIBVNCSERVER_IPv6 1)
+ endif()
+endif(WITH_IPv6)
-if(LIBVNCSERVER_HAVE_WS2TCPIP_H AND LIBVNCSERVER_HAVE_VPRINTF)
- option(LIBVNCSERVER_IPv6 "Enable IPv6 Support" ON)
+if(WITH_24BPP)
+ set(LIBVNCSERVER_ALLOW24BPP 1)
endif()
+
if(CMAKE_USE_PTHREADS_INIT)
set(LIBVNCSERVER_HAVE_LIBPTHREAD 1)
endif(CMAKE_USE_PTHREADS_INIT)
@@ -190,11 +295,23 @@ endif(NOT HAVE_LIBVNCSERVER_IN_ADDR_T)
TEST_BIG_ENDIAN(LIBVNCSERVER_WORDS_BIGENDIAN)
+if(WITH_SASL)
+ find_path(SASL2_INCLUDE_DIR sasl/sasl.h)
+ find_library(LIBSASL2_LIBRARIES sasl2 libsasl.lib)
+endif(WITH_SASL)
+
+if(WITH_SASL AND LIBSASL2_LIBRARIES AND SASL2_INCLUDE_DIR)
+ message(STATUS "Building with SASL: ${LIBSASL2_LIBRARIES} and ${SASL2_INCLUDE_DIR}")
+ set(LIBVNCSERVER_HAVE_SASL 1)
+ set(ADDITIONAL_LIBS ${ADDITIONAL_LIBS} ${LIBSASL2_LIBRARIES})
+ include_directories(${SASL2_INCLUDE_DIR})
+endif(WITH_SASL AND LIBSASL2_LIBRARIES AND SASL2_INCLUDE_DIR)
+
# TODO:
# LIBVNCSERVER_ENOENT_WORKAROUND
# inline
-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/rfb/rfbconfig.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/rfb/rfbconfig.h)
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/rfb/rfbconfig.h.cmakein ${CMAKE_CURRENT_BINARY_DIR}/rfb/rfbconfig.h)
set(LIBVNCSERVER_SOURCES
${LIBVNCSERVER_DIR}/main.cc
@@ -216,7 +333,6 @@ set(LIBVNCSERVER_SOURCES
${COMMON_DIR}/d3des.c
${COMMON_DIR}/vncauth.c
${LIBVNCSERVER_DIR}/cargs.c
- ${COMMON_DIR}/minilzo.c
${LIBVNCSERVER_DIR}/ultra.c
${LIBVNCSERVER_DIR}/scale.c
)
@@ -227,24 +343,51 @@ set(LIBVNCCLIENT_SOURCES
${LIBVNCCLIENT_DIR}/rfbproto.c
${LIBVNCCLIENT_DIR}/sockets.c
${LIBVNCCLIENT_DIR}/vncviewer.c
- ${COMMON_DIR}/minilzo.c
)
+if(JPEG_FOUND)
+ set(LIBVNCCLIENT_SOURCES
+ ${LIBVNCCLIENT_SOURCES}
+ ${COMMON_DIR}/turbojpeg.c
+ )
+endif()
+
if(GNUTLS_FOUND)
set(LIBVNCCLIENT_SOURCES
${LIBVNCCLIENT_SOURCES}
${LIBVNCCLIENT_DIR}/tls_gnutls.c
)
+ set(LIBVNCSERVER_SOURCES
+ ${LIBVNCSERVER_SOURCES}
+ ${LIBVNCSERVER_DIR}/rfbssl_gnutls.c
+ )
+ include_directories(${GNUTLS_INCLUDE_DIR})
elseif(OPENSSL_FOUND)
set(LIBVNCCLIENT_SOURCES
${LIBVNCCLIENT_SOURCES}
${LIBVNCCLIENT_DIR}/tls_openssl.c
)
+ set(LIBVNCSERVER_SOURCES
+ ${LIBVNCSERVER_SOURCES}
+ ${LIBVNCSERVER_DIR}/rfbssl_openssl.c
+ )
+ include_directories(${OPENSSL_INCLUDE_DIR})
else()
set(LIBVNCCLIENT_SOURCES
${LIBVNCCLIENT_SOURCES}
${LIBVNCCLIENT_DIR}/tls_none.c
)
+ set(LIBVNCSERVER_SOURCES
+ ${LIBVNCSERVER_SOURCES}
+ ${LIBVNCSERVER_DIR}/rfbssl_none.c
+ )
+endif()
+
+if(LIBVNCSERVER_HAVE_SASL)
+ set(LIBVNCCLIENT_SOURCES
+ ${LIBVNCCLIENT_SOURCES}
+ ${LIBVNCCLIENT_DIR}/sasl.c
+ )
endif()
if(ZLIB_FOUND)
@@ -259,6 +402,20 @@ if(ZLIB_FOUND)
)
endif(ZLIB_FOUND)
+if(LZO_FOUND)
+ add_definitions(-DLIBVNCSERVER_HAVE_LZO)
+ include_directories(${LZO_INCLUDE_DIR})
+else()
+ set(LIBVNCSERVER_SOURCES
+ ${LIBVNCSERVER_SOURCES}
+ ${COMMON_DIR}/minilzo.c
+ )
+ set(LIBVNCCLIENT_SOURCES
+ ${LIBVNCCLIENT_SOURCES}
+ ${COMMON_DIR}/minilzo.c
+ )
+endif()
+
if(JPEG_FOUND)
add_definitions(-DLIBVNCSERVER_HAVE_LIBJPEG)
include_directories(${JPEG_INCLUDE_DIR})
@@ -268,7 +425,6 @@ endif(JPEG_FOUND)
if(PNG_FOUND)
add_definitions(-DLIBVNCSERVER_HAVE_LIBPNG)
include_directories(${PNG_INCLUDE_DIR})
- set(TIGHT_C ${LIBVNCSERVER_DIR}/tight.c ${COMMON_DIR}/turbojpeg.c)
endif(PNG_FOUND)
set(LIBVNCSERVER_SOURCES
@@ -276,7 +432,7 @@ set(LIBVNCSERVER_SOURCES
${TIGHT_C}
)
-if(TIGHTVNC_FILETRANSFER)
+if(WITH_TIGHTVNC_FILETRANSFER AND CMAKE_USE_PTHREADS_INIT)
set(LIBVNCSERVER_SOURCES
${LIBVNCSERVER_SOURCES}
${LIBVNCSERVER_DIR}/tightvnc-filetransfer/rfbtightserver.c
@@ -284,14 +440,16 @@ if(TIGHTVNC_FILETRANSFER)
${LIBVNCSERVER_DIR}/tightvnc-filetransfer/filetransfermsg.c
${LIBVNCSERVER_DIR}/tightvnc-filetransfer/filelistinfo.c
)
-endif(TIGHTVNC_FILETRANSFER)
+endif(WITH_TIGHTVNC_FILETRANSFER AND CMAKE_USE_PTHREADS_INIT)
if(LIBVNCSERVER_WITH_WEBSOCKETS)
add_definitions(-DLIBVNCSERVER_WITH_WEBSOCKETS)
set(LIBVNCSERVER_SOURCES
${LIBVNCSERVER_SOURCES}
${LIBVNCSERVER_DIR}/websockets.c
- ${WSSRCS}
+ ${LIBVNCSERVER_DIR}/ws_decode.c
+ ${COMMON_DIR}/base64.c
+ ${CRYPTO_SOURCES}
)
endif(LIBVNCSERVER_WITH_WEBSOCKETS)
@@ -301,7 +459,13 @@ tde_add_library( tdevncclient STATIC_PIC AUTOMOC
SOURCES
${LIBVNCCLIENT_SOURCES}
LINK
- pthread ${ADDITIONAL_LIBS} ${ZLIB_LIBRARIES} ${JPEG_LIBRARIES} ${GNUTLS_LIBRARIES} ${OPENSSL_LIBRARIES}
+ pthread
+ ${ADDITIONAL_LIBS}
+ ${ZLIB_LIBRARIES}
+ ${LZO_LIBRARIES}
+ ${JPEG_LIBRARIES}
+ ${GNUTLS_LIBRARIES}
+ ${OPENSSL_LIBRARIES}
)
##### tdevncserver (static) ########################
@@ -310,5 +474,12 @@ tde_add_library( tdevncserver STATIC_PIC AUTOMOC
SOURCES
${LIBVNCSERVER_SOURCES}
LINK
- ${ADDITIONAL_LIBS} ${ZLIB_LIBRARIES} ${JPEG_LIBRARIES} ${PNG_LIBRARIES} ${WEBSOCKET_LIBRARIES}
+ ${ADDITIONAL_LIBS}
+ ${ZLIB_LIBRARIES}
+ ${LZO_LIBRARIES}
+ ${JPEG_LIBRARIES}
+ ${PNG_LIBRARIES}
+ ${CRYPTO_LIBRARIES}
+ ${GNUTLS_LIBRARIES}
+ ${OPENSSL_LIBRARIES}
)