diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 150 |
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() |