X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=CMakeLists.txt;h=508456e4ee88ec00263bb4ee213d90c44a76cece;hp=afb620cc48fcbdd3603ff3683e0f0b4ad9770b6b;hb=d271c469e6d61005e45d22e7766f0bcb431c8327;hpb=af9bfa0581dd3620f6fe300084262c55c7084046 diff --git a/CMakeLists.txt b/CMakeLists.txt index afb620cc..508456e4 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 ##################################################################### @@ -134,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 ##################################################################### @@ -348,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) @@ -386,16 +352,8 @@ if (NOT WIN32) endif() # Check for SSL support in Qt -# As there's no easy way to get Qt's configuration in particular for Qt5, let's just compile -# a small test program checking the defines. This works for both Qt4 and Qt5. cmake_push_check_state(RESET) -set(CMAKE_REQUIRED_INCLUDES ${QT_INCLUDES} ${Qt5Core_INCLUDE_DIRS}) -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Core_EXECUTABLE_COMPILE_FLAGS}") - -if (Qt5_POSITION_INDEPENDENT_CODE) - set(CMAKE_REQUIRED_FLAGS "-fPIC -DQT_NO_VERSION_TAGGING") -endif() - +set(CMAKE_REQUIRED_LIBRARIES Qt5::Core) check_cxx_source_compiles(" #include \"qglobal.h\" #if defined QT_NO_SSL @@ -405,6 +363,11 @@ check_cxx_source_compiles(" HAVE_SSL) cmake_pop_check_state() +if (HAVE_SSL) + add_definitions(-DHAVE_SSL) +endif() +add_feature_info("SSL support in Qt" HAVE_SSL "Use secure network connections") + # Additional compile settings ##################################################################### @@ -433,8 +396,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() @@ -467,19 +428,12 @@ include(QuasselInstallDirs) # Various config-dependent checks and settings ##################################################################### -if (HAVE_SSL) - add_definitions(-DHAVE_SSL) -endif() -add_feature_info("SSL support in Qt" HAVE_SSL "Use secure network connections") - # Check for syslog support if (NOT WIN32) check_include_file_cxx(syslog.h HAVE_SYSLOG) 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() @@ -550,11 +504,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)