aboutsummaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt150
1 files changed, 71 insertions, 79 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 27dac16f..b4a28881 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -18,8 +18,6 @@ include(CheckCSourceRuns)
include(CMakeMacroLibtoolFile)
-include(cmake/TargetLinkDirectories.cmake)
-
project(tigervnc)
set(VERSION 1.15.80)
@@ -114,6 +112,13 @@ if(NOT DEFINED BUILD_WINVNC)
set(BUILD_WINVNC 1)
endif()
+# libstdc++ doesn't implicitly include this, although it is very much
+# required when using any of the C++ threading features (at least on
+# systems where pthread is a separate library, e.g. glibc < 2.34)
+if(UNIX)
+ link_libraries(pthread)
+endif()
+
# Minimum version is Windows 7
if(WIN32)
add_definitions(-D_WIN32_WINNT=0x0601)
@@ -158,46 +163,20 @@ find_package(Pixman REQUIRED)
trioption(ENABLE_NLS "Enable translation of program messages")
if(ENABLE_NLS)
# Tools
- find_package(Gettext)
-
- # Gettext needs iconv
if(ENABLE_NLS STREQUAL "AUTO")
- find_package(Iconv)
+ find_package(Gettext)
else()
- find_package(Iconv REQUIRED)
+ find_package(Gettext REQUIRED)
endif()
- if(ICONV_FOUND)
- # Headers and libraries (copied from licq)
- set(GETTEXT_FOUND FALSE)
-
- find_path(GETTEXT_INCLUDE_DIR libintl.h)
- if(GETTEXT_INCLUDE_DIR)
- set(CMAKE_REQUIRED_LIBRARIES ${ICONV_LIBRARIES})
- set(CMAKE_REQUIRED_FLAGS -fno-builtin-dgettext)
- check_function_exists(dgettext LIBC_HAS_DGETTEXT)
- if(LIBC_HAS_DGETTEXT)
- set(GETTEXT_FOUND TRUE)
- else()
- find_library(LIBINTL_LIBRARY NAMES intl libintl)
- if(LIBINTL_LIBRARY)
- check_library_exists(${LIBINTL_LIBRARY} "dgettext" "" LIBINTL_HAS_DGETTEXT)
- if(LIBINTL_HAS_DGETTEXT)
- set(GETTEXT_LIBRARIES ${LIBINTL_LIBRARY} ${ICONV_LIBRARIES})
- set(GETTEXT_FOUND TRUE)
- endif()
- endif()
- endif()
- set(CMAKE_REQUIRED_LIBRARIES)
- set(CMAKE_REQUIRED_FLAGS)
- endif()
-
- if(NOT GETTEXT_FOUND AND NOT ENABLE_NLS STREQUAL "AUTO")
- message(FATAL_ERROR "Could not find GETTEXT")
- endif()
+ # Runtime library
+ if(ENABLE_NLS STREQUAL "AUTO")
+ find_package(Intl)
+ else()
+ find_package(Intl REQUIRED)
endif()
- if(NOT GETTEXT_FOUND OR NOT ICONV_FOUND)
+ if(NOT GETTEXT_FOUND OR NOT INTL_FOUND)
message(WARNING "Gettext NOT found. Native Language Support disabled.")
set(ENABLE_NLS 0)
endif()
@@ -218,14 +197,17 @@ if(ENABLE_H264)
endif()
else()
if(ENABLE_H264 STREQUAL "AUTO")
- find_package(Ffmpeg)
+ find_package(AVCodec)
+ find_package(AVUtil)
+ find_package(SWScale)
else()
- find_package(Ffmpeg REQUIRED)
+ find_package(AVCodec REQUIRED)
+ find_package(AVUtil REQUIRED)
+ find_package(SWScale REQUIRED)
endif()
if (AVCODEC_FOUND AND AVUTIL_FOUND AND SWSCALE_FOUND)
set(H264_INCLUDE_DIRS ${AVCODEC_INCLUDE_DIRS} ${AVUTIL_INCLUDE_DIRS} ${SWSCALE_INCLUDE_DIRS})
set(H264_LIBRARIES ${AVCODEC_LIBRARIES} ${AVUTIL_LIBRARIES} ${SWSCALE_LIBRARIES})
- set(H264_LIBRARY_DIRS ${AVCODEC_LIBRARY_DIRS} ${AVUTIL_LIBRARY_DIRS} ${SWSCALE_LIBRARY_DIRS})
add_definitions("-D__STDC_CONSTANT_MACROS")
add_definitions("-DHAVE_H264")
set(H264_LIBS "LIBAV")
@@ -278,13 +260,22 @@ if(BUILD_JAVA)
add_subdirectory(java)
endif()
-option(BUILD_VIEWER "Build TigerVNC viewer" ON)
+trioption(BUILD_VIEWER "Build TigerVNC viewer")
if(BUILD_VIEWER)
# Check for FLTK
set(FLTK_SKIP_FLUID TRUE)
set(FLTK_SKIP_OPENGL TRUE)
set(FLTK_SKIP_FORMS TRUE)
- find_package(FLTK REQUIRED)
+ if(BUILD_VIEWER STREQUAL "AUTO")
+ find_package(FLTK)
+ else()
+ find_package(FLTK REQUIRED)
+ endif()
+
+ if(NOT FLTK_FOUND)
+ message(WARNING "FLTK NOT found. TigerVNC viewer disabled.")
+ set(BUILD_VIEWER 0)
+ endif()
if(UNIX AND NOT APPLE)
# No proper handling for extra X11 libs that FLTK might need...
@@ -308,18 +299,20 @@ if(BUILD_VIEWER)
endif()
endif()
- set(CMAKE_REQUIRED_FLAGS "-Wno-error")
- set(CMAKE_REQUIRED_INCLUDES ${FLTK_INCLUDE_DIR})
- set(CMAKE_REQUIRED_LIBRARIES ${FLTK_LIBRARIES})
+ if(FLTK_FOUND)
+ set(CMAKE_REQUIRED_FLAGS "-Wno-error")
+ set(CMAKE_REQUIRED_INCLUDES ${FLTK_INCLUDE_DIR})
+ set(CMAKE_REQUIRED_LIBRARIES ${FLTK_LIBRARIES})
- check_cxx_source_compiles("#include <FL/Fl.H>\n#if FL_MAJOR_VERSION != 1 || FL_MINOR_VERSION != 3\n#error Wrong FLTK version\n#endif\nint main(int, char**) { return 0; }" OK_FLTK_VERSION)
- if(NOT OK_FLTK_VERSION)
- message(FATAL_ERROR "Incompatible version of FLTK")
- endif()
+ check_cxx_source_compiles("#include <FL/Fl.H>\n#if FL_MAJOR_VERSION != 1 || FL_MINOR_VERSION != 3\n#error Wrong FLTK version\n#endif\nint main(int, char**) { return 0; }" OK_FLTK_VERSION)
+ if(NOT OK_FLTK_VERSION)
+ message(FATAL_ERROR "Incompatible version of FLTK")
+ endif()
- set(CMAKE_REQUIRED_FLAGS)
- set(CMAKE_REQUIRED_INCLUDES)
- set(CMAKE_REQUIRED_LIBRARIES)
+ set(CMAKE_REQUIRED_FLAGS)
+ set(CMAKE_REQUIRED_INCLUDES)
+ set(CMAKE_REQUIRED_LIBRARIES)
+ endif()
endif()
# Check for GNUTLS library
@@ -349,36 +342,34 @@ endif()
# Check for PAM library
if(UNIX AND NOT APPLE)
- check_include_files(security/pam_appl.h HAVE_PAM_H)
- set(CMAKE_REQUIRED_LIBRARIES -lpam)
- check_function_exists(pam_start HAVE_PAM_START)
- set(CMAKE_REQUIRED_LIBRARIES)
- if(HAVE_PAM_H AND HAVE_PAM_START)
- set(PAM_LIBS pam)
- else()
- message(FATAL_ERROR "Could not find PAM development files")
- endif()
+ find_package(PAM REQUIRED)
endif()
# Check for SELinux library
if(UNIX AND NOT APPLE)
- check_include_files(selinux/selinux.h HAVE_SELINUX_H)
- if(HAVE_SELINUX_H)
- set(CMAKE_REQUIRED_LIBRARIES -lselinux)
- set(CMAKE_REQUIRED_LIBRARIES)
- set(SELINUX_LIBS selinux)
- add_definitions("-DHAVE_SELINUX")
- else()
- message(WARNING "Could not find SELinux development files")
+ trioption(ENABLE_SELINUX "Enable SELinux support")
+ if(ENABLE_SELINUX)
+ if(ENABLE_SELINUX STREQUAL "AUTO")
+ find_package(SELinux)
+ else()
+ find_package(SELinux REQUIRED)
+ endif()
+ if(SELINUX_FOUND)
+ add_definitions("-DHAVE_SELINUX")
+ endif()
endif()
endif()
# check for systemd support (socket activation)
if(UNIX AND NOT APPLE)
- find_package(PkgConfig)
- if (PKG_CONFIG_FOUND)
- pkg_check_modules(LIBSYSTEMD libsystemd)
- if (LIBSYSTEMD_FOUND)
+ trioption(ENABLE_SYSTEMD "Enable systemd support")
+ if(ENABLE_SYSTEMD)
+ if(ENABLE_SYSTEMD STREQUAL "AUTO")
+ find_package(Systemd)
+ else()
+ find_package(Systemd REQUIRED)
+ endif()
+ if (SYSTEMD_FOUND)
add_definitions(-DHAVE_LIBSYSTEMD)
endif()
endif()
@@ -386,14 +377,15 @@ endif()
# check for password pwquality check support
if(UNIX AND NOT APPLE)
- option(ENABLE_PWQUALITY "Enable password pwquality check" ON)
+ trioption(ENABLE_PWQUALITY "Enable password pwquality check")
if(ENABLE_PWQUALITY)
- find_package(PkgConfig)
- if(PKG_CONFIG_FOUND)
- pkg_check_modules(PWQUALITY pwquality)
- if(PWQUALITY_FOUND)
- add_definitions(-DHAVE_PWQUALITY)
- endif()
+ if(ENABLE_PWQUALITY STREQUAL "AUTO")
+ find_package(PWQuality)
+ else()
+ find_package(PWQuality REQUIRED)
+ endif()
+ if(PWQUALITY_FOUND)
+ add_definitions(-DHAVE_PWQUALITY)
endif()
endif()
endif()