X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=CMakeLists.txt;h=cebb61b0e00bc5bf8f995278b89c70a8191ad519;hp=78df95ce9a5727340165be76663985f93be8134c;hb=28eb43dd1ccd882b2975c346297842c1dc074469;hpb=f5e769ff450b592bc645473e11f9258aec241f0e diff --git a/CMakeLists.txt b/CMakeLists.txt index 78df95ce..cebb61b0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -150,21 +150,27 @@ endif() # Set up Qt ##################################################################### +set(QT_MIN_VERSION "5.5.0") + +# Enable Qt deprecation warnings for Qt < 5.13 (on by default in newer versions) +add_definitions(-DQT_DEPRECATED_WARNINGS) + +# Disable all Qt APIs that were deprecated in 5.5 and before +add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x050500) + # Find package dependencies # # Note that you can forcefully disable optional packages # using -DCMAKE_DISABLE_FIND_PACKAGE_=TRUE ##################################################################### -set(QT_MIN_VERSION "5.5.0") - # Required Qt components set(qt_components Core Network) if (BUILD_GUI) list(APPEND qt_components Gui Widgets) endif() if (BUILD_CORE) - list(APPEND qt_components Script Sql) + list(APPEND qt_components Sql) endif() find_package(Qt5 ${QT_MIN_VERSION} REQUIRED COMPONENTS ${qt_components}) @@ -174,6 +180,49 @@ set_package_properties(Qt5 PROPERTIES TYPE REQUIRED ) message(STATUS "Found Qt ${Qt5Core_VERSION}") +# Determine minimum deployment target for macOS supported by Qt +if(APPLE) + if(NOT QMAKE_MACOSX_DEPLOYMENT_TARGET) + # qmake cannot be queried directly for QMAKE_MACOSX_DEPLOYMENT_TARGET (it is a mkspec, not a property). + # Instead, invoke qmake on an empty project file, which causes it to output the relevant keys and their values + # for subsequent parsing. + # A file named .qmake.stash is always created, so remove it (and empty.pro) afterwards. + set(qmakeEmptyProjectFile "${CMAKE_BINARY_DIR}/empty.pro") + set(qmakeStashFile "${CMAKE_BINARY_DIR}/.qmake.stash") + file(WRITE ${qmakeEmptyProjectFile} "") + get_target_property(QMAKE_EXECUTABLE Qt5::qmake IMPORTED_LOCATION) + execute_process( + COMMAND ${QMAKE_EXECUTABLE} -E ${qmakeEmptyProjectFile} + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + OUTPUT_VARIABLE qmakeOutput + ) + file(REMOVE ${qmakeEmptyProjectFile} ${qmakeStashFile}) + string(REGEX MATCH "QMAKE_MACOSX_DEPLOYMENT_TARGET[ ]*=[ ]*([0-9.]+)" foo ${qmakeOutput}) + if(NOT CMAKE_MATCH_1) + message(FATAL_ERROR "Could not determine the deployment target for Qt") + endif() + set(QMAKE_MACOSX_DEPLOYMENT_TARGET ${CMAKE_MATCH_1} CACHE INTERNAL "") + mark_as_advanced(QMAKE_MACOSX_DEPLOYMENT_TARGET) + endif() + message(STATUS "Minimum macOS version supported by Qt: ${QMAKE_MACOSX_DEPLOYMENT_TARGET}") +endif() + +# Check for SSL support in Qt +cmake_push_check_state(RESET) +set(CMAKE_REQUIRED_LIBRARIES Qt5::Core) +check_cxx_source_compiles(" + #include \"qglobal.h\" + #if defined QT_NO_SSL + # error \"No SSL support\" + #endif + int main() {}" + HAVE_SSL) +cmake_pop_check_state() + +if (NOT HAVE_SSL) + message(FATAL_ERROR "Quassel requires SSL support, but Qt is built with QT_NO_SSL") +endif() + # Optional Qt components find_package(Qt5LinguistTools QUIET) @@ -394,25 +443,6 @@ if (BUILD_TESTING) process_cmake_cxx_flags() endif() -# Check for SSL support in Qt -##################################################################### - -cmake_push_check_state(RESET) -set(CMAKE_REQUIRED_LIBRARIES Qt5::Core) -check_cxx_source_compiles(" - #include \"qglobal.h\" - #if defined QT_NO_SSL - # error \"No SSL support\" - #endif - int main() {}" - 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") - # Setup support for KDE Frameworks #####################################################################