X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=CMakeLists.txt;h=310cf8fcf9bbb74902c07b18a152853975c55ad3;hb=48d41896ba35eafc64b4cb00e446d6123b3502cb;hp=71fa429d1dd67d520686d74ccc4f25fbbab8d458;hpb=597b99c857470648f5d3950a0a0835bd34294b0a;p=quassel.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 71fa429d..310cf8fc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,26 +6,23 @@ # General setup ##################################################################### +cmake_minimum_required(VERSION 3.5) + +# Tell CMake about or own modules +set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) + # Versions set(QUASSEL_MAJOR 0) set(QUASSEL_MINOR 13) set(QUASSEL_PATCH 50) set(QUASSEL_VERSION_STRING "0.14-pre") -# Build type -if (CMAKE_CONFIGURATION_TYPES) - set(CMAKE_CONFIGURATION_TYPES Release RelWithDebInfo Debug Debugfull Profile) - set(CMAKE_CONFIGURATION_TYPES "${CMAKE_CONFIGURATION_TYPES}" CACHE STRING "These are the configuration types we support" FORCE) -endif() - -if(NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose the type of build, options are: Release RelWithDebInfo Debug Debugfull Profile None" FORCE) -endif() - # Output CMake and Quassel versions as well as build type for debug reasons message(STATUS "Building Quassel ${QUASSEL_VERSION_STRING}...") message(STATUS "Using CMake ${CMAKE_VERSION}") -message(STATUS "CMake build type: ${CMAKE_BUILD_TYPE}") + +# Set up build type rather early +include(BuildType) # Support ccache if found # This should happen before calling project(), so compiler settings are validated. @@ -42,26 +39,24 @@ if (USE_CCACHE) endif() # Set up project -project(Quassel C CXX) +project(Quassel CXX) # General conveniences set(CMAKE_AUTOMOC ON) set(CMAKE_INCLUDE_CURRENT_DIR ON) -# Include various CMake modules +# Include various CMake modules... include(CMakePushCheckState) include(CheckFunctionExists) -include(CheckIncludeFile) +include(CheckIncludeFileCXX) include(CheckCXXSourceCompiles) include(CMakeDependentOption) include(FeatureSummary) -# Tell CMake about or own modules -set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) +# ... and our own include(QuasselCompileSettings) include(QuasselMacros) - # Options and variables that can be set on the command line ##################################################################### @@ -109,13 +104,13 @@ if (APPLE) link_libraries(${CARBON_LIBRARY}) endif() -# Always embed on Windows, OSX or for a static build; never embed when enabling KDE integration +# Always embed on Windows or OSX; never embed when enabling KDE integration set(EMBED_DEFAULT OFF) -if (STATIC OR WIN32 OR APPLE) +if (WIN32 OR APPLE) set(EMBED_DEFAULT ON) endif() cmake_dependent_option(EMBED_DATA "Embed icons and translations into the binaries instead of installing them" ${EMBED_DEFAULT} - "NOT STATIC;NOT WIN32;NOT WITH_KDE" ${EMBED_DEFAULT}) + "NOT WIN32;NOT WITH_KDE" ${EMBED_DEFAULT}) if (NOT EMBED_DEFAULT) add_feature_info(EMBED_DATA EMBED_DATA "Embed icons and translations in the binaries instead of installing them") endif() @@ -123,18 +118,6 @@ endif() # The following options are not for end-user consumption, so don't list them in the feature summary cmake_dependent_option(DEPLOY "Add required libs to bundle resources and create a dmg. Note: requires Qt to be built with 10.4u SDK" OFF "APPLE" OFF) -# Static builds are not supported and require some manual setup! Don't enable unless you know what you're doing (we don't know either) -cmake_dependent_option(STATIC "Enable static building (not supported)" OFF "NOT WITH_KDE" OFF) - -# For static builds, arbitrary extra libs might need to be linked -# Define a comma-separated list here -# e.g. for pgsql, we need -DLINK_EXTRA=pq;crypt -set(LINK_EXTRA "" CACHE STRING "Semicolon-separated list of libraries to be linked") -if (LINK_EXTRA) - string(REPLACE "," ";" LINK_EXTRA ${LINK_EXTRA}) - link_libraries(${LINK_EXTRA}) -endif() - # List of authenticators and the cmake flags to build them # (currently that's just LDAP, but more can be added here). @@ -144,12 +127,6 @@ option(WITH_LDAP "Enable LDAP authentication support if present on system" ON) # Setup CMake ##################################################################### -if (WITH_KDE) - cmake_minimum_required(VERSION 2.8.12) -else() - cmake_minimum_required(VERSION 2.8.9) -endif() - # Setting COMPILE_DEFINITIONS_ is deprecated since CMake 3.0 in favor of generator expressions. # These have existed since CMake 2.8.10; until we depend on that, we have to explicitly enable the old policy. if (POLICY CMP0043) @@ -241,15 +218,6 @@ if (BUILD_GUI) PURPOSE "Required for audio notifications" ) - if (NOT Qt5Multimedia_FOUND) - find_package(Phonon4Qt5 QUIET) - set_package_properties(Phonon4Qt5 PROPERTIES TYPE RECOMMENDED - URL "https://projects.kde.org/projects/kdesupport/phonon" - DESCRIPTION "a multimedia abstraction library" - PURPOSE "Required for audio notifications" - ) - endif() - find_package(LibsnoreQt5 0.7.0 QUIET) set_package_properties(LibsnoreQt5 PROPERTIES TYPE OPTIONAL URL "https://projects.kde.org/projects/playground/libs/snorenotify" @@ -265,7 +233,6 @@ if (BUILD_GUI) ) endif() - if (WITH_WEBKIT) find_package(Qt5WebKit QUIET) set_package_properties(Qt5WebKit PROPERTIES TYPE RECOMMENDED @@ -359,8 +326,8 @@ if (BUILD_CORE) DESCRIPTION "the database support module for Qt5" ) - find_package(QCA2-QT5) - set_package_properties(QCA2-QT5 PROPERTIES TYPE RECOMMENDED + find_package(Qca-qt5 2.0) + set_package_properties(Qca-qt5 PROPERTIES TYPE RECOMMENDED URL "https://projects.kde.org/projects/kdesupport/qca" DESCRIPTION "Qt Cryptographic Architecture" PURPOSE "Required for encryption support" @@ -395,20 +362,18 @@ endif() # Non-Qt-based packages -# zlib for compression, however we can always fall back to miniz -find_package(ZLIB QUIET) -set_package_properties(ZLIB PROPERTIES TYPE RECOMMENDED +find_package(ZLIB REQUIRED) +set_package_properties(ZLIB PROPERTIES TYPE REQUIRED URL "http://www.zlib.net" DESCRIPTION "a popular compression library" - PURPOSE "Use the most common library for protocol compression, instead of the bundled miniz implementation" + PURPOSE "Used for protocol compression" ) - if (NOT WIN32) - # Execinfo is needed for generating backtraces - find_package(ExecInfo QUIET) - set_package_properties(ExecInfo PROPERTIES TYPE OPTIONAL - DESCRIPTION "a library for inspecting backtraces" + # Needed for generating backtraces + find_package(Backtrace QUIET) + set_package_properties(Backtrace PROPERTIES TYPE RECOMMENDED + DESCRIPTION "a header (and possibly library) for inspecting backtraces" PURPOSE "Used for generating backtraces in case of a crash" ) endif() @@ -495,13 +460,6 @@ include(QuasselInstallDirs) # Various config-dependent checks and settings ##################################################################### -if (NOT ZLIB_FOUND) - message(STATUS "zlib NOT found, using bundled miniz for compression") - if (${CMAKE_SIZEOF_VOID_P} EQUAL 4) - message(STATUS "WARNING: This may be slow on 32 bit systems!") - endif() -endif() - if (HAVE_SSL) add_definitions(-DHAVE_SSL) endif() @@ -509,7 +467,7 @@ add_feature_info("SSL support in Qt" HAVE_SSL "Use secure network connections") # Check for syslog support if (NOT WIN32) - check_include_file(syslog.h HAVE_SYSLOG) + check_include_file_cxx(syslog.h HAVE_SYSLOG) add_feature_info("syslog.h" HAVE_SYSLOG "Provide support for logging to the syslog") endif() @@ -542,23 +500,6 @@ if (WIN32) link_libraries(Version dwmapi shlwapi) set(QT_QTMAIN_LIBRARY Qt5::WinMain) endif() - if(HAVE_SSL AND STATIC) - find_package(OpenSSL REQUIRED) - link_libraries(${OPENSSL_LIBRARIES} ${OPENSSL_EAY_LIBRARIES}) - endif() -endif() - - -# Static builds (very much non-portable, so don't use -DSTATIC -# unless you know what you do!) -##################################################################### - -if(STATIC AND CMAKE_COMPILER_IS_GNUCXX) - set(CMAKE_CXX_FLAGS "-static-libgcc ${CMAKE_CXX_FLAGS}") - link_directories(${CMAKE_BINARY_DIR}/staticlibs) # override dynamic libs - if (HAVE_SSL) - set(QUASSEL_SSL_LIBRARIES ssl crypto) # these miss in static builds - endif() endif()