@ -27,17 +27,30 @@ set(LIBVNCCLITEST_DIR ${CMAKE_CURRENT_SOURCE_DIR}/client_examples)
include_directories ( ${ CMAKE_CURRENT_SOURCE_DIR } ${ CMAKE_CURRENT_BINARY_DIR } ${ CMAKE_CURRENT_SOURCE_DIR } /libvncserver ${ CMAKE_CURRENT_SOURCE_DIR } /common )
include_directories ( ${ CMAKE_CURRENT_SOURCE_DIR } ${ CMAKE_CURRENT_BINARY_DIR } ${ CMAKE_CURRENT_SOURCE_DIR } /libvncserver ${ CMAKE_CURRENT_SOURCE_DIR } /common )
# a l l t h e b u i l d c o n f i g u r a t i o n s w i t c h e s
option ( WITH_ZLIB "Search for the zlib compression library to support additional encodings" 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_TIGHTVNC_FILETRANSFER "Enable filetransfer if there is multithreading support" ON )
option ( WITH_24BPP "Allow 24 bpp" ON )
option ( WITH_IPv6 "Enable IPv6 Support" ON )
option ( WITH_WEBSOCKETS "Build with websockets support" ON )
if ( WITH_ZLIB )
find_package ( ZLIB )
find_package ( ZLIB )
find_package ( JPEG )
endif ( WITH_ZLIB )
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 )
if ( WITH_JPEG )
find_package ( JPEG )
# C h e c k w h e t h e r t h e v e r s i o n o f l i b j p e g w e f o u n d w a s l i b j p e g - t u r b o a n d p r i n t a
# C h e c k w h e t h e r t h e v e r s i o n o f l i b j p e g w e f o u n d w a s l i b j p e g - t u r b o a n d p r i n t a
# w a r n i n g i f n o t .
# w a r n i n g i f n o t .
set ( CMAKE_REQUIRED_LIBRARIES ${ JPEG_LIBRARIES } )
set ( CMAKE_REQUIRED_LIBRARIES ${ JPEG_LIBRARIES } )
@ -71,6 +84,45 @@ set(CMAKE_REQUIRED_DEFINITIONS)
if ( NOT FOUND_LIBJPEG_TURBO )
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/ ***" )
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 ( )
endif ( WITH_JPEG )
if ( WITH_PNG )
find_package ( PNG )
endif ( WITH_PNG )
if ( WITH_SDL )
find_package ( SDL )
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 ( WITH_SYSTEMD )
find_package ( PkgConfig )
pkg_check_modules ( SYSTEMD "libsystemd" )
endif ( WITH_SYSTEMD )
if ( WITH_GCRYPT )
find_library ( LIBGCRYPT_LIBRARIES gcrypt )
endif ( WITH_GCRYPT )
# O n s y s t e m s s u c h a s G N U / L i n u x w i t h g l i b c , _ _ b 6 4 _ n t o p i s d e f i n e d i n a
# O n s y s t e m s s u c h a s G N U / L i n u x w i t h g l i b c , _ _ b 6 4 _ n t o p i s d e f i n e d i n a
# s e p a r a t e l i b r a r y , l i b r e s o l v . O n s o m e o t h e r s , s u c h a s F r e e B S D , i t i s
# s e p a r a t e l i b r a r y , l i b r e s o l v . O n s o m e o t h e r s , s u c h a s F r e e B S D , i t i s
@ -95,7 +147,6 @@ if(NOT HAVE_B64_IN_LIBC)
endif ( NOT HAVE_B64_IN_LIBC )
endif ( NOT HAVE_B64_IN_LIBC )
if ( Threads_FOUND )
if ( Threads_FOUND )
option ( TIGHTVNC_FILETRANSFER "Enable filetransfer" ON )
set ( ADDITIONAL_LIBS ${ ADDITIONAL_LIBS } ${ CMAKE_THREAD_LIBS_INIT } )
set ( ADDITIONAL_LIBS ${ ADDITIONAL_LIBS } ${ CMAKE_THREAD_LIBS_INIT } )
endif ( Threads_FOUND )
endif ( Threads_FOUND )
if ( ZLIB_FOUND )
if ( ZLIB_FOUND )
@ -107,41 +158,40 @@ endif(JPEG_FOUND)
if ( PNG_FOUND )
if ( PNG_FOUND )
set ( LIBVNCSERVER_HAVE_LIBPNG 1 )
set ( LIBVNCSERVER_HAVE_LIBPNG 1 )
endif ( PNG_FOUND )
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 ( LIBVNCSERVER_WITH_ SYSTEMD)
if ( SYSTEMD_FOUND )
add_definitions ( -DLIBVNCSERVER_WITH_SYSTEMD )
add_definitions ( -DLIBVNCSERVER_WITH_SYSTEMD )
include_directories ( ${ SYSTEMD_INCLUDE_DIRS } )
include_directories ( ${ SYSTEMD_INCLUDE_DIRS } )
set ( ADDITIONAL_LIBS ${ ADDITIONAL_LIBS } ${ SYSTEMD_LIBRARIES } )
set ( ADDITIONAL_LIBS ${ ADDITIONAL_LIBS } ${ SYSTEMD_LIBRARIES } )
endif ( LIBVNCSERVER_WITH_SYSTEMD )
endif ( SYSTEMD_FOUND )
if ( WITH_WEBSOCKETS )
set ( LIBVNCSERVER_WITH_WEBSOCKETS 1 )
if ( GNUTLS_FOUND )
if ( GNUTLS_FOUND )
set ( LIBVNCSERVER_WITH_CLIENT_TLS 1 )
set ( LIBVNCSERVER_WITH_CLIENT_TLS 1 )
option ( LIBVNCSERVER_WITH_WEBSOCKETS "Build with websockets support (gnutls)" ON )
message ( STATUS "Building websockets with GnuTLS" )
set ( WEBSOCKET_LIBRARIES ${ RESOLV_LIB } ${ GNUTLS_LIBRARIES } )
set ( WEBSOCKET_LIBRARIES ${ RESOLV_LIB } ${ GNUTLS_LIBRARIES } )
set ( WSSRCS ${ LIBVNCSERVER_DIR } /rfbssl_gnutls ${ LIBVNCSERVER_DIR } /rfbcrypto_gnutls )
set ( WSSRCS ${ LIBVNCSERVER_DIR } /rfbssl_gnutls ${ LIBVNCSERVER_DIR } /rfbcrypto_gnutls )
include_directories ( ${ GNUTLS_INCLUDE_DIR } )
include_directories ( ${ GNUTLS_INCLUDE_DIR } )
elseif ( OPENSSL_FOUND )
elseif ( OPENSSL_FOUND )
option ( LIBVNCSERVER_WITH_WEBSOCKETS "Build with websockets support (openssl)" ON )
message ( STATUS "Building websockets with OpenSSL" )
set ( WEBSOCKET_LIBRARIES ${ RESOLV_LIB } ${ OPENSSL_LIBRARIES } )
set ( WEBSOCKET_LIBRARIES ${ RESOLV_LIB } ${ OPENSSL_LIBRARIES } )
set ( WSSRCS ${ LIBVNCSERVER_DIR } /rfbssl_openssl ${ LIBVNCSERVER_DIR } /rfbcrypto_openssl )
set ( WSSRCS ${ LIBVNCSERVER_DIR } /rfbssl_openssl ${ LIBVNCSERVER_DIR } /rfbcrypto_openssl )
include_directories ( ${ OPENSSL_INCLUDE_DIR } )
include_directories ( ${ OPENSSL_INCLUDE_DIR } )
else ( )
else ( )
option ( LIBVNCSERVER_WITH_WEBSOCKETS "Build with websockets support (no ssl)" ON )
message ( STATUS "Building websockets without SSL" )
set ( WEBSOCKET_LIBRARIES ${ RESOLV_LIB } )
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 )
set ( WSSRCS ${ LIBVNCSERVER_DIR } /rfbssl_none.c ${ LIBVNCSERVER_DIR } /rfbcrypto_included.c ${ COMMON_DIR } /md5.c ${ COMMON_DIR } /sha1.c )
endif ( )
endif ( )
endif ( WITH_WEBSOCKETS )
if ( LIBGCRYPT_LIBRARIES)
if ( WITH_GCRYPT AND LIBGCRYPT_LIBRARIES)
message ( STATUS "Found libgcrypt: ${LIBGCRYPT_LIBRARIES}" )
message ( STATUS "Found libgcrypt: ${LIBGCRYPT_LIBRARIES}" )
set ( LIBVNCSERVER_WITH_CLIENT_GCRYPT 1 )
set ( LIBVNCSERVER_WITH_CLIENT_GCRYPT 1 )
set ( ADDITIONAL_LIBS ${ ADDITIONAL_LIBS } ${ LIBGCRYPT_LIBRARIES } )
set ( ADDITIONAL_LIBS ${ ADDITIONAL_LIBS } ${ LIBGCRYPT_LIBRARIES } )
endif ( LIBGCRYPT_LIBRARIES)
endif ( WITH_GCRYPT AND LIBGCRYPT_LIBRARIES)
check_include_file ( "endian.h" LIBVNCSERVER_HAVE_ENDIAN_H )
check_include_file ( "endian.h" LIBVNCSERVER_HAVE_ENDIAN_H )
@ -168,9 +218,20 @@ check_function_exists(vfork LIBVNCSERVER_HAVE_VFORK)
check_function_exists ( vprintf LIBVNCSERVER_HAVE_VPRINTF )
check_function_exists ( vprintf LIBVNCSERVER_HAVE_VPRINTF )
if ( LIBVNCSERVER_HAVE_WS2TCPIP_H AND LIBVNCSERVER_HAVE_VPRINTF )
if ( WITH_IPv6 )
option ( LIBVNCSERVER_IPv6 "Enable IPv6 Support" ON )
if ( WIN32 AND LIBVNCSERVER_HAVE_WS2TCPIP_H AND LIBVNCSERVER_HAVE_VPRINTF )
set ( LIBVNCSERVER_IPv6 1 )
endif ( )
endif ( )
if ( NOT WIN32 )
set ( LIBVNCSERVER_IPv6 1 )
endif ( )
endif ( WITH_IPv6 )
if ( WITH_24BPP )
set ( LIBVNCSERVER_ALLOW24BPP 1 )
endif ( )
if ( CMAKE_USE_PTHREADS_INIT )
if ( CMAKE_USE_PTHREADS_INIT )
set ( LIBVNCSERVER_HAVE_LIBPTHREAD 1 )
set ( LIBVNCSERVER_HAVE_LIBPTHREAD 1 )
@ -280,7 +341,7 @@ set(LIBVNCSERVER_SOURCES
$ { T I G H T _ C }
$ { T I G H T _ C }
)
)
if ( TIGHTVNC_FILETRANSFER)
if ( WITH_ TIGHTVNC_FILETRANSFER AND Threads_FOUND )
set ( LIBVNCSERVER_SOURCES
set ( LIBVNCSERVER_SOURCES
$ { L I B V N C S E R V E R _ S O U R C E S }
$ { L I B V N C S E R V E R _ S O U R C E S }
$ { L I B V N C S E R V E R _ D I R } / t i g h t v n c - f i l e t r a n s f e r / r f b t i g h t s e r v e r . c
$ { L I B V N C S E R V E R _ D I R } / t i g h t v n c - f i l e t r a n s f e r / r f b t i g h t s e r v e r . c
@ -288,7 +349,7 @@ if(TIGHTVNC_FILETRANSFER)
$ { L I B V N C S E R V E R _ D I R } / t i g h t v n c - f i l e t r a n s f e r / f i l e t r a n s f e r m s g . c
$ { L I B V N C S E R V E R _ D I R } / t i g h t v n c - f i l e t r a n s f e r / f i l e t r a n s f e r m s g . c
$ { L I B V N C S E R V E R _ D I R } / t i g h t v n c - f i l e t r a n s f e r / f i l e l i s t i n f o . c
$ { L I B V N C S E R V E R _ D I R } / t i g h t v n c - f i l e t r a n s f e r / f i l e l i s t i n f o . c
)
)
endif ( TIGHTVNC_FILETRANSFER)
endif ( WITH_ TIGHTVNC_FILETRANSFER AND Threads_FOUND )
if ( LIBVNCSERVER_WITH_WEBSOCKETS )
if ( LIBVNCSERVER_WITH_WEBSOCKETS )
add_definitions ( -DLIBVNCSERVER_WITH_WEBSOCKETS )
add_definitions ( -DLIBVNCSERVER_WITH_WEBSOCKETS )
@ -349,12 +410,12 @@ if(Threads_FOUND)
)
)
endif ( Threads_FOUND )
endif ( Threads_FOUND )
if ( TIGHTVNC_FILETRANSFER)
if ( WITH_ TIGHTVNC_FILETRANSFER AND Threads_FOUND )
set ( LIBVNCSERVER_TESTS
set ( LIBVNCSERVER_TESTS
$ { L I B V N C S E R V E R _ T E S T S }
$ { L I B V N C S E R V E R _ T E S T S }
f i l e t r a n s f e r
f i l e t r a n s f e r
)
)
endif ( TIGHTVNC_FILETRANSFER)
endif ( WITH_ TIGHTVNC_FILETRANSFER AND Threads_FOUND )
if ( MACOS )
if ( MACOS )
set ( LIBVNCSERVER_TESTS
set ( LIBVNCSERVER_TESTS
@ -396,7 +457,7 @@ file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/client_examples)
foreach ( test ${ LIBVNCCLIENT_TESTS } )
foreach ( test ${ LIBVNCCLIENT_TESTS } )
add_executable ( client_examples_ ${ test } ${ LIBVNCCLITEST_DIR } / ${ test } .c ${ LIBVNCCLITEST_DIR } / ${ ${test } _EXTRA_SOURCES} )
add_executable ( client_examples_ ${ test } ${ LIBVNCCLITEST_DIR } / ${ test } .c ${ LIBVNCCLITEST_DIR } / ${ ${test } _EXTRA_SOURCES} )
set_target_properties ( client_examples_ ${ test } PROPERTIES OUTPUT_NAME client_examples/ ${ test } )
set_target_properties ( client_examples_ ${ test } PROPERTIES OUTPUT_NAME client_examples/ ${ test } )
target_link_libraries ( client_examples_ ${ test } vncclient ${ CMAKE_THREAD_LIBS_INIT } ${ X11_LIBRARIES} ${ SDL_LIBRARY} ${ FFMPEG_LIBRARIES } )
target_link_libraries ( client_examples_ ${ test } vncclient ${ CMAKE_THREAD_LIBS_INIT } ${ SDL_LIBRARY} ${ FFMPEG_LIBRARIES } )
endforeach ( test ${ LIBVNCCLIENT_TESTS } )
endforeach ( test ${ LIBVNCCLIENT_TESTS } )
# t h i s g e t s t h e l i b r a r i e s n e e d e d b y T A R G E T i n " - l i b x - l i b y . . . " f o r m
# t h i s g e t s t h e l i b r a r i e s n e e d e d b y T A R G E T i n " - l i b x - l i b y . . . " f o r m