Merge branch 'build' of https://github.com/CendioOssman/tigervnc
diff --git a/BUILDING.txt b/BUILDING.txt
index 897a51a..8f686cc 100644
--- a/BUILDING.txt
+++ b/BUILDING.txt
@@ -14,16 +14,15 @@
* See "Building FLTK" below.
-- If building TLS support:
- * GnuTLS and its dependencies (libgcrypt, libtasn1, libgpg-error)
+ * GnuTLS
-- If building native language support (NLS):
* Gnu gettext 0.14.4 or later
* See "Building Native Language Support" below.
--- libjpeg-turbo SDK
- * If your system does not include libjpeg-turbo, then you can download the
- SDK from http://sourceforge.net/projects/libjpeg-turbo/files/
- * See "Building High-Performance JPEG Support" below.
+-- libjpeg-turbo
+ * "Normal" libjpegv6 is also supported, although it is not
+ recommended as it is much slower.
=========================
@@ -253,62 +252,20 @@
Add "-DCMAKE_BUILD_TYPE=Debug" to the CMake command line.
-Self-Contained GCC Build
-------------------------
+Portable (semi-static) Build
+----------------------------
-If TigerVNC is built using GCC (including MinGW), then it may depend on the
-libgcc or libstdc++ dynamic libraries. To eliminate this dependency, add
+TigerVNC can under favourble circumstances be built in a way that allows
+the resulting binaries to run on any system without having to also install
+all the dynamic libraries it depends on. Enable this mode by adding:
-DBUILD_STATIC=1
to the CMake command line.
-
-======================================
-Building High-Performance JPEG Support
-======================================
-
-In order to achieve its high levels of performance, TigerVNC relies on
-libjpeg-turbo (http://www.libjpeg-turbo.org), a derivative of libjpeg which
-uses SIMD instructions to accelerate baseline JPEG compression and
-decompression. If you are building TigerVNC on an operating system that
-includes libjpeg-turbo as a system library (for instance, Fedora 14 and later),
-then the TigerVNC build system should detect the system version of
-libjpeg-turbo automatically and link against it. However, this produces a
-version of TigerVNC that depends on the libjpeg-turbo dynamic libraries, and
-thus the TigerVNC binaries are not portable.
-
-To build a fully portable, cross-compatible version of TigerVNC with
-high-performance JPEG support, it is necessary to link against the
-libjpeg-turbo static library. This is also necessary when building the
-Windows or OS X versions of TigerVNC. To link against the libjpeg-turbo static
-library, first install the libjpeg-turbo SDK, which is available from
-https://sourceforge.net/projects/libjpeg-turbo/files/. Next, use the
-JPEG_INCLUDE_DIR and JPEG_LIBRARY CMake variables to specify the location of
-libjpeg-turbo. For example, adding
-
- -DJPEG_INCLUDE_DIR=/opt/libjpeg-turbo/include \
- -DJPEG_LIBRARY=/opt/libjpeg-turbo/lib/libjpeg.a
-
-to the CMake command line will link TigerVNC against a static version of
-libjpeg-turbo installed under /opt/TigerVNC (which is the normal install
-location for the libjpeg-turbo SDK on Unix and Linux platforms.) Replace "lib"
-with "lib32" or "lib64" to use the 32-bit or 64-bit version of the library on
-64-bit Linux platforms.
-
-When building on Windows systems, adding
-
- -DJPEG_INCLUDE_DIR=/c/libjpeg-turbo-gcc[64]/include \
- -DJPEG_LIBRARY=/c/libjpeg-turbo-gcc[64]/lib/libjpeg.a
-
-to the CMake command line will link TigerVNC against the static version of
-libjpeg-turbo provided by the libjpeg-turbo SDK for GCC (MinGW.)
-
-CMake will report:
-
- Performing Test FOUND_LIBJPEG_TURBO - Success
-
-if it successfully finds libjpeg-turbo.
+Note that the method used to achieve this is very fragile and it may be
+necessary to tweak cmake/StaticBuild.cmake to make things work on your
+specific system.
=====================
@@ -390,87 +347,6 @@
libiconv and libintl included in the MinGW Developer Toolkit.
-===============================================
-Building Transport Layer Security (TLS) support
-===============================================
-
-VeNCrypt (the TigerVNC security and authentication extensions) can be built
-with TLS support, which provides built-in encryption for VNC sessions. This
-requires GnuTLS, which is readily available in many Linux distributions but not
-as readily available in binary form on other types of systems. This section
-describes the issues associated with building a version of TigerVNC with TLS
-support and how to work around those issues.
-
-
-Unix/Mac
---------
-
-In general, if you are building on a Unix-ish platform that has the GnuTLS
-libraries and include files installed in the standard system locations, then
-the TigerVNC build system should detect the system version of GnuTLS
-automatically and link against it. However, this produces a version of
-TigerVNC that depends on the GnuTLS dynamic libraries, and thus the TigerVNC
-binaries are not portable.
-
-To build a fully portable, cross-compatible version of TigerVNC with TLS
-support, it is necessary to link against the GnuTLS static library (as well
-as the static libraries of its dependencies.) If you are lucky enough, then
-your O/S distribution may include pre-packaged versions of these static
-libraries. Otherwise, it will be necessary to build GnuTLS, libgcrypt,
-libtasn1, and libgpg-error from source.
-
-You can manipulate the GNUTLS_INCLUDE_DIR and GNUTLS_LIBRARY CMake variables to
-build TigerVNC against a custom build of GnuTLS that is installed in a
-non-system directory. For instance, adding
-
- -DGNUTLS_INCLUDE_DIR=/opt/gnutls/include \
- -DGNUTLS_LIBRARY='/opt/gnutls/lib/libgnutls.a;/opt/gnutls/lib/libgcrypt.a;/opt/gnutls/lib/libgpg-error.a;/opt/gnutls/lib/libtasn1.a' \
- -DUSE_INCLUDED_ZLIB=1
-
-to the CMake or 'build-xorg build' command line will cause TigerVNC to be
-statically linked against a custom installation of GnuTLS that resides under
-/opt/gnutls. GnuTLS depends on zlib, so specifying -DUSE_INCLUDED_ZLIB=1 will
-satisfy that dependency using TigerVNC's in-tree version of zlib, which
-prevents TigerVNC from depending on the libz dynamic library.
-
-
-MinGW
------
-
-An installer containing the GnuTLS header files, as well as static and dynamic
-link libraries for 32-bit MinGW, can be downloaded from the following site:
-
-http://josefsson.org/gnutls4win/
-
-As of this writing, GnuTLS cannot be built cleanly with MinGW64 due to the fact
-that portions of the code assume an LP64 data model (Windows uses LLP64.)
-Thus, it is not possible at this time to produce a Win64 version of TigerVNC
-with TLS support.
-
-Whether you use the above installer or build GnuTLS from source, make sure that
-you install the libraries and headers into a pathname that doesn't contain
-spaces (the installer will try to install under c:\Program Files unless you
-tell it otherwise.) If the GnuTLS include path contains spaces, then the MinGW
-resource compiler will barf when you try to build TigerVNC.
-
-You can manipulate the GNUTLS_INCLUDE_DIR and GNUTLS_LIBRARY CMake variables to
-specify the directory under which you installed GnuTLS. For instance, adding
-
- -DGNUTLS_INCLUDE_DIR=/c/gnutls/include \
- -DGNUTLS_LIBRARY=/c/gnutls/lib/libgnutls.dll.a
-
-to the CMake command line when using MinGW will cause TigerVNC to be linked
-against GnuTLS DLLs that are installed under c:\gnutls.
-
-Adding
-
- -DGNUTLS_INCLUDE_DIR=/c/gnutls/include \
- -DGNUTLS_LIBRARY='/c/gnutls/lib/libgnutls.a;/c/gnutls/lib/libgcrypt.a;/c/gnutls/lib/libtasn1.a;/c/gnutls/lib/libgpg-error.a'
-
-to the CMake command line will cause TigerVNC to be statically linked against
-GnuTLS libraries that are installed under c:\gnutls.
-
-
===================
Installing TigerVNC
===================
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 24e923e..1dcfd9e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -89,49 +89,6 @@
message(STATUS "32-bit build")
endif()
-# This ensures that we don't depend on libstdc++ or libgcc
-if(CMAKE_COMPILER_IS_GNUCXX AND NOT APPLE AND NOT CYGWIN)
- option(BUILD_STATIC
- "Link statically against libgcc and libstdc++, if possible" OFF)
- if(BUILD_STATIC)
- # For some reason, simply passing ${CMAKE_CXX_FLAGS} to the compiler in
- # execute_process() doesn't work. Grrr...
- if(CMAKE_SIZEOF_VOID_P MATCHES 8)
- execute_process(COMMAND ${CMAKE_CXX_COMPILER} -m64
- --print-file-name=libstdc++.a OUTPUT_VARIABLE LIBSTDCPLUSPLUS
- RESULT_VARIABLE RESULT)
- else()
- execute_process(COMMAND ${CMAKE_CXX_COMPILER} -m32
- --print-file-name=libstdc++.a OUTPUT_VARIABLE LIBSTDCPLUSPLUS
- RESULT_VARIABLE RESULT)
- endif()
- string(REGEX REPLACE "\n" "" LIBSTDCPLUSPLUS ${LIBSTDCPLUSPLUS})
- if(RESULT MATCHES 0 AND LIBSTDCPLUSPLUS)
- message(STATUS "Linking with static libstdc++:\n ${LIBSTDCPLUSPLUS}")
- file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/staticlib)
- execute_process(COMMAND ${CMAKE_COMMAND} -E remove
- ${CMAKE_BINARY_DIR}/staticlib/libstdc++.a)
- if(MINGW)
- execute_process(COMMAND ${CMAKE_COMMAND} -E copy
- ${LIBSTDCPLUSPLUS} ${CMAKE_BINARY_DIR}/staticlib/libstdc++.a)
- else()
- execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink
- ${LIBSTDCPLUSPLUS} ${CMAKE_BINARY_DIR}/staticlib/libstdc++.a)
- endif()
- set(CMAKE_EXE_LINKER_FLAGS
- "${CMAKE_EXE_LINKER_FLAGS} -L${CMAKE_BINARY_DIR}/staticlib")
- set(CMAKE_SHARED_LINKER_FLAGS
- "${CMAKE_SHARED_LINKER_FLAGS} -L${CMAKE_BINARY_DIR}/staticlib")
- else()
- message(WARNING Cannot find static libstdc++. TigerVNC will depend on dynamic libstdc++.)
- endif()
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libgcc")
- set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc")
- set(CMAKE_SHARED_LINKER_FLAGS
- "${CMAKE_SHARED_LINKER_FLAGS} -static-libgcc")
- endif()
-endif()
-
# CMake doesn't properly support resource compilation with MinGW. Boo!
if(MINGW)
if(NOT DEFINED RC)
@@ -310,20 +267,8 @@
option(ENABLE_GNUTLS "Enable protocol encryption and advanced authentication" ON)
if(ENABLE_GNUTLS)
find_package(GnuTLS)
- find_package(Gcrypt)
- find_package(Gpg_Error)
if (GNUTLS_FOUND)
include_directories(${GNUTLS_INCLUDE_DIR})
- if (GCRYPT_FOUND)
- include_directories(${GCRYPT_INCLUDE_DIR})
- set(GNUTLS_LIBRARIES ${GNUTLS_LIBRARIES};${GCRYPT_LIBRARIES})
- set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${GCRYPT_LIBRARIES})
- if (GPG_ERROR_FOUND)
- include_directories(${GPG_ERROR_INCLUDE_DIR})
- set(GNUTLS_LIBRARIES ${GNUTLS_LIBRARIES};${GPG_ERROR_LIBRARIES})
- set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${GPG_ERROR_LIBRARIES})
- endif()
- endif()
add_definitions("-DHAVE_GNUTLS")
add_definitions(${GNUTLS_DEFINITIONS})
@@ -332,7 +277,6 @@
set(CMAKE_EXTRA_INCLUDE_FILES gnutls/gnutls.h)
set(CMAKE_REQUIRED_LIBRARIES ${GNUTLS_LIBRARIES})
if(WIN32)
- set(CMAKE_EXTRA_INCLUDE_FILES gcrypt.h ${CMAKE_EXTRA_INCLUDE_FILES})
set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ws2_32 user32)
endif()
if(ZLIB_FOUND)
@@ -386,6 +330,8 @@
add_definitions(-DHAVE_CONFIG_H)
include_directories(${CMAKE_BINARY_DIR})
+include(cmake/StaticBuild.cmake)
+
add_subdirectory(common)
if(WIN32)
diff --git a/cmake/Modules/FindGcrypt.cmake b/cmake/Modules/FindGcrypt.cmake
deleted file mode 100644
index 2158081..0000000
--- a/cmake/Modules/FindGcrypt.cmake
+++ /dev/null
@@ -1,36 +0,0 @@
-# - Find gcrypt
-# Find the native GCRYPT includes and library
-#
-# GCRYPT_FOUND - True if gcrypt found.
-# GCRYPT_INCLUDE_DIR - where to find gcrypt.h, etc.
-# GCRYPT_LIBRARIES - List of libraries when using gcrypt.
-
-if (GCRYPT_INCLUDE_DIR AND GCRYPT_LIBRARIES)
- set(GCRYPT_FIND_QUIETLY TRUE)
-endif (GCRYPT_INCLUDE_DIR AND GCRYPT_LIBRARIES)
-
-# Include dir
-find_path(GCRYPT_INCLUDE_DIR
- NAMES
- gcrypt.h
-)
-
-# Library
-find_library(GCRYPT_LIBRARY
- NAMES gcrypt
-)
-
-# handle the QUIETLY and REQUIRED arguments and set GCRYPT_FOUND to TRUE if
-# all listed variables are TRUE
-INCLUDE(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(GCRYPT DEFAULT_MSG GCRYPT_LIBRARY GCRYPT_INCLUDE_DIR)
-
-IF(GCRYPT_FOUND)
- SET( GCRYPT_LIBRARIES ${GCRYPT_LIBRARY} )
-ELSE(GCRYPT_FOUND)
- SET( GCRYPT_LIBRARIES )
-ENDIF(GCRYPT_FOUND)
-
-# Lastly make it so that the GCRYPT_LIBRARY and GCRYPT_INCLUDE_DIR variables
-# only show up under the advanced options in the gui cmake applications.
-MARK_AS_ADVANCED( GCRYPT_LIBRARY GCRYPT_INCLUDE_DIR )
diff --git a/cmake/Modules/FindGpg_Error.cmake b/cmake/Modules/FindGpg_Error.cmake
deleted file mode 100644
index 2f1d372..0000000
--- a/cmake/Modules/FindGpg_Error.cmake
+++ /dev/null
@@ -1,36 +0,0 @@
-# - Find gpg-error
-# Find the native GPG_ERROR includes and library
-#
-# GPG_ERROR_FOUND - True if gpg-error found.
-# GPG_ERROR_INCLUDE_DIR - where to find gpg-error.h, etc.
-# GPG_ERROR_LIBRARIES - List of libraries when using gpg-error.
-
-if (GPG_ERROR_INCLUDE_DIR AND GPG_ERROR_LIBRARIES)
- set(GPG_ERROR_FIND_QUIETLY TRUE)
-endif (GPG_ERROR_INCLUDE_DIR AND GPG_ERROR_LIBRARIES)
-
-# Include dir
-find_path(GPG_ERROR_INCLUDE_DIR
- NAMES
- gpg-error.h
-)
-
-# Library
-find_library(GPG_ERROR_LIBRARY
- NAMES gpg-error
-)
-
-# handle the QUIETLY and REQUIRED arguments and set GPG_ERROR_FOUND to TRUE if
-# all listed variables are TRUE
-INCLUDE(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(GPG_ERROR DEFAULT_MSG GPG_ERROR_LIBRARY GPG_ERROR_INCLUDE_DIR)
-
-IF(GPG_ERROR_FOUND)
- SET( GPG_ERROR_LIBRARIES ${GPG_ERROR_LIBRARY} )
-ELSE(GPG_ERROR_FOUND)
- SET( GPG_ERROR_LIBRARIES )
-ENDIF(GPG_ERROR_FOUND)
-
-# Lastly make it so that the GPG_ERROR_LIBRARY and GPG_ERROR_INCLUDE_DIR variables
-# only show up under the advanced options in the gui cmake applications.
-MARK_AS_ADVANCED( GPG_ERROR_LIBRARY GPG_ERROR_INCLUDE_DIR )
diff --git a/cmake/StaticBuild.cmake b/cmake/StaticBuild.cmake
new file mode 100644
index 0000000..4ef2905
--- /dev/null
+++ b/cmake/StaticBuild.cmake
@@ -0,0 +1,96 @@
+#
+# Best-effort magic that tries to produce semi-static binaries
+# (i.e. only depends on "safe" libraries like libc and libX11)
+#
+# Note that this often fails as there is no way to automatically
+# determine the dependencies of the libraries we depend on, and
+# a lot of details change with each different build environment.
+#
+
+option(BUILD_STATIC
+ "Link statically against most libraries, if possible" ON)
+
+if(BUILD_STATIC)
+ message(STATUS "Attempting to link static binaries...")
+
+ set(JPEG_LIBRARIES "-Wl,-Bstatic -ljpeg -Wl,-Bdynamic")
+
+ if(WIN32 AND NOT USE_INCLUDED_ZLIB)
+ set(ZLIB_LIBRARIES "-Wl,-Bstatic -lz -Wl,-Bdynamic")
+ endif()
+
+ # gettext is included in libc on many unix systems
+ if(NOT LIBC_HAS_DGETTEXT)
+ set(GETTEXT_LIBRARIES "-Wl,-Bstatic -lintl -liconv -Wl,-Bdynamic")
+ endif()
+
+ if(GNUTLS_FOUND)
+ # GnuTLS has historically had different crypto backends
+ FIND_LIBRARY(GCRYPT_LIBRARY NAMES gcrypt libgcrypt
+ HINTS ${PC_GNUTLS_LIBDIR} ${PC_GNUTLS_LIBRARY_DIRS})
+ FIND_LIBRARY(NETTLE_LIBRARY NAMES nettle libnettle
+ HINTS ${PC_GNUTLS_LIBDIR} ${PC_GNUTLS_LIBRARY_DIRS})
+
+ set(GNUTLS_LIBRARIES "-Wl,-Bstatic -lgnutls -ltasn1")
+
+ if(NETTLE_LIBRARY)
+ set(GNUTLS_LIBRARIES "${GNUTLS_LIBRARIES} -lnettle -lhogweed -lgmp")
+ endif()
+ if(GCRYPT_LIBRARY)
+ set(GNUTLS_LIBRARIES "${GNUTLS_LIBRARIES} -lgcrypt -lgpg-error")
+ endif()
+
+ set(GNUTLS_LIBRARIES "${GNUTLS_LIBRARIES} -Wl,-Bdynamic")
+
+ # nanosleep() lives here on Solaris
+ if(${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
+ set(GNUTLS_LIBRARIES ${GNUTLS_LIBRARIES} -lrt)
+ endif()
+ endif()
+
+ if(FLTK_FOUND)
+ set(FLTK_LIBRARIES "-Wl,-Bstatic -lfltk_images -lpng -ljpeg -lfltk -Wl,-Bdynamic")
+
+ if(WIN32)
+ set(FLTK_LIBRARIES ${FLTK_LIBRARIES} comctl32)
+ elseif(APPLE)
+ set(FLTK_LIBRARIES ${FLTK_LIBRARIES} "-framework Cocoa")
+ else()
+ set(FLTK_LIBRARIES ${FLTK_LIBRARIES} m)
+ endif()
+
+ if(X11_FOUND AND NOT APPLE)
+ if(${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
+ set(FLTK_LIBRARIES ${FLTK_LIBRARIES} ${X11_Xcursor_LIB} ${X11_Xfixes_LIB} "-Wl,-Bstatic -lXft -Wl,-Bdynamic" fontconfig Xext -R/usr/sfw/lib)
+ else()
+ set(FLTK_LIBRARIES ${FLTK_LIBRARIES} "-Wl,-Bstatic -lXcursor -lXfixes -lXft -lfontconfig -lexpat -lfreetype -lbz2 -lXrender -lXext -lXinerama -Wl,-Bdynamic")
+ endif()
+
+ set(FLTK_LIBRARIES ${FLTK_LIBRARIES} X11)
+ endif()
+ endif()
+
+ # X11 libraries change constantly on Linux systems so we have to link
+ # them statically, even libXext. libX11 is somewhat stable, although
+ # even it has had an ABI change once or twice.
+ if(X11_FOUND AND NOT ${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
+ set(X11_LIBRARIES "-Wl,-Bstatic -lXext -Wl,-Bdynamic" X11)
+ if(X11_XTest_LIB)
+ set(X11_XTest_LIB "-Wl,-Bstatic -lXtst -Wl,-Bdynamic")
+ endif()
+ if(X11_Xdamage_LIB)
+ set(X11_Xdamage_LIB "-Wl,-Bstatic -lXdamage -Wl,-Bdynamic")
+ endif()
+ endif()
+
+ # This ensures that we don't depend on libstdc++ or libgcc_s
+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -nodefaultlibs")
+ set(STATIC_BASE_LIBRARIES "-Wl,-Bstatic -lstdc++ -Wl,-Bdynamic")
+ if(WIN32)
+ set(STATIC_BASE_LIBRARIES "${STATIC_BASE_LIBRARIES} -lmingw32 -lmoldname -lmingwex -lgcc -lgcc_eh -lmsvcrt -lkernel32")
+ else()
+ set(STATIC_BASE_LIBRARIES "${STATIC_BASE_LIBRARIES} -lgcc -lgcc_eh -lc")
+ endif()
+ set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} ${STATIC_BASE_LIBRARIES}")
+
+endif()
diff --git a/common/network/CMakeLists.txt b/common/network/CMakeLists.txt
index ddde574..b624c8e 100644
--- a/common/network/CMakeLists.txt
+++ b/common/network/CMakeLists.txt
@@ -3,6 +3,10 @@
add_library(network STATIC
TcpSocket.cxx)
+if(WIN32)
+ target_link_libraries(network ws2_32)
+endif()
+
if(UNIX)
libtool_create_control_file(network)
endif()
diff --git a/common/rdr/CMakeLists.txt b/common/rdr/CMakeLists.txt
index ee71a9b..cc45f91 100644
--- a/common/rdr/CMakeLists.txt
+++ b/common/rdr/CMakeLists.txt
@@ -17,9 +17,9 @@
set(RDR_LIBRARIES ${ZLIB_LIBRARIES} os)
if(GNUTLS_FOUND)
set(RDR_LIBRARIES ${RDR_LIBRARIES} ${GNUTLS_LIBRARIES})
- if(WIN32)
+endif()
+if(WIN32)
set(RDR_LIBRARIES ${RDR_LIBRARIES} ws2_32)
- endif()
endif()
target_link_libraries(rdr ${RDR_LIBRARIES})
diff --git a/unix/x0vncserver/CMakeLists.txt b/unix/x0vncserver/CMakeLists.txt
index 64c9e77..82f0d2a 100644
--- a/unix/x0vncserver/CMakeLists.txt
+++ b/unix/x0vncserver/CMakeLists.txt
@@ -15,7 +15,7 @@
../vncconfig/QueryConnectDialog.cxx
)
-target_link_libraries(x0vncserver tx rfb network rdr ${X11_LIBRARIES})
+target_link_libraries(x0vncserver tx rfb network rdr)
if(X11_FOUND AND X11_XTest_LIB)
add_definitions(-DHAVE_XTEST)
@@ -31,5 +31,7 @@
message(WARNING "No DAMAGE extension. x0vncserver will have to use the slower polling method.")
endif()
+target_link_libraries(x0vncserver ${X11_LIBRARIES})
+
install(TARGETS x0vncserver DESTINATION ${BIN_DIR})
install(FILES x0vncserver.man DESTINATION ${MAN_DIR}/man1 RENAME x0vncserver.1)
diff --git a/vncviewer/CMakeLists.txt b/vncviewer/CMakeLists.txt
index beca98d..de9da8f 100644
--- a/vncviewer/CMakeLists.txt
+++ b/vncviewer/CMakeLists.txt
@@ -48,11 +48,8 @@
target_link_libraries(vncviewer rfb network rdr os Xregion ${FLTK_LIBRARIES} ${GETTEXT_LIBRARIES})
-# When building with GnuTLS, librdr depends on ws2_32, so in order to make
-# MinGW happy, we need to put ws2_32 in librdr's target_link_libraries string,
-# not here.
-if(NOT GNUTLS_FOUND AND WIN32)
- target_link_libraries(vncviewer ws2_32)
+if(APPLE)
+ target_link_libraries(vncviewer "-framework Cocoa" "-framework Carbon")
endif()
install(TARGETS vncviewer DESTINATION ${BIN_DIR})