X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=CMakeLists.txt;h=d9dc2a83fd5588e20393f99011e8201ffbe314b5;hb=18746a803a6cf040c6525f8916bb721c1edbce1f;hp=542d362b912930c77abf40681f6b5056a4ba8c37;hpb=9b689f0e308cc0007f63086c3dc45db219d5b7db;p=quassel.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 542d362b..d9dc2a83 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,26 +8,21 @@ 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. @@ -46,11 +41,15 @@ endif() # Set up project project(Quassel CXX) -# General conveniences +# Let CMake handle file generation for Qt set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +# Needed, otherwise some .moc files won't be found with older CMake versions set(CMAKE_INCLUDE_CURRENT_DIR ON) -# Include various CMake modules +# Include various CMake modules... include(CMakePushCheckState) include(CheckFunctionExists) include(CheckIncludeFileCXX) @@ -58,12 +57,10 @@ 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 ##################################################################### @@ -111,13 +108,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() @@ -125,18 +122,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). @@ -146,23 +131,11 @@ option(WITH_LDAP "Enable LDAP authentication support if present on system" ON) # Setup CMake ##################################################################### -# 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) - cmake_policy(SET CMP0043 OLD) -endif() - -# Honor visibility settings for all target types -if (POLICY CMP0063) - cmake_policy(SET CMP0063 NEW) -endif() - -# Don't automoc generated files +# Let automoc/autouic process generated files if (POLICY CMP0071) - cmake_policy(SET CMP0071 OLD) + cmake_policy(SET CMP0071 NEW) endif() - # Simplify later checks ##################################################################### @@ -345,8 +318,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" @@ -360,25 +333,6 @@ set_package_properties(Qt5LinguistTools PROPERTIES TYPE RECOMMENDED PURPOSE "Required for having translations" ) -# Some Qt5 versions do not define a target for lconvert, so we need to find it ourselves -if (Qt5LinguistTools_FOUND) - if (NOT TARGET Qt5::lconvert AND TARGET Qt5::lrelease) - get_target_property(_lrelease_location Qt5::lrelease LOCATION) - get_filename_component(_lrelease_path ${_lrelease_location} PATH) - find_program(QT_LCONVERT_EXECUTABLE NAMES lconvert-qt5 lconvert PATHS ${_lrelease_path} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH) - elseif(TARGET Qt5::lconvert AND NOT Qt5_LCONVERT_EXECUTABLE) - # Newer Qt5 versions define the target, but not the Qt5_LCONVERT_EXECUTABLE variable for some reason - get_target_property(QT_LCONVERT_EXECUTABLE Qt5::lconvert LOCATION) - endif() - - # Compatibility with the Qt4 variables - set(QT_LRELEASE_EXECUTABLE ${Qt5_LRELEASE_EXECUTABLE}) - set(QT_LUPDATE_EXECUTABLE ${Qt5_LUPDATE_EXECUTABLE}) - if (Qt5_LCONVERT_EXECUTABLE) - set(QT_LCONVERT_EXECUTABLE ${Qt5_LCONVERT_EXECUTABLE}) - endif() -endif() - # Non-Qt-based packages find_package(ZLIB REQUIRED) @@ -389,10 +343,10 @@ set_package_properties(ZLIB PROPERTIES TYPE REQUIRED ) 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() @@ -445,8 +399,6 @@ if (WITH_LDAP) find_package(Ldap) if (LDAP_FOUND) message(STATUS "Enabling LDAP authentication support") - set(HAVE_LDAP true) - add_definitions(-DHAVE_LDAP) else() message(STATUS "Disabling LDAP authentication support") endif() @@ -490,8 +442,6 @@ if (NOT WIN32) add_feature_info("syslog.h" HAVE_SYSLOG "Provide support for logging to the syslog") endif() -add_feature_info("Qt Linguist Tools" QT_LCONVERT_EXECUTABLE "Translation support for Quassel") - if (EMBED_DATA) message(STATUS "Embedding data files into the binary") else() @@ -519,23 +469,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() @@ -579,11 +512,6 @@ configure_file(version.h.in ${CMAKE_BINARY_DIR}/version.h @ONLY) # Prepare the build ##################################################################### -# These variables will be added to the main targets (CORE, QTCLIENT, MONO) -set(COMMON_DEPS ${RC_WIN32}) -set(CORE_DEPS ) -set(CLIENT_DEPS ) - # Add needed subdirs - the order is important, since src needs some vars set by other dirs add_subdirectory(data) add_subdirectory(icons)