From 4f1bed17fa93d62d2d1d688ef5c68563a8bf5942 Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Sun, 23 Mar 2014 21:28:28 +0100 Subject: [PATCH] Fix SSL detection As there is no easy way to check for QT_CONFIG with Qt5 and CMake, and the way we did it for Qt4 is hackish at best, let's do it the proper way and compile a short code snippet that checks for the appropriate defines (QT_NO_OPENSSL for Qt4, and QT_NO_SSL for Qt5). This should be the most robust way of figuring this out, and is rather easy with CMake. --- CMakeLists.txt | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b760710a..11e0d08f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,16 +22,18 @@ set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) set(CMAKE_AUTOMOC ON) set(CMAKE_INCLUDE_CURRENT_DIR ON) -# Moar stuff +# Include various CMake modules... +include(CMakePushCheckState) include(CheckFunctionExists) include(CheckIncludeFile) +include(CheckCXXSourceCompiles) +include(CMakeDependentOption) +include(FeatureSummary) +# ... and our own stuff include(QuasselCompileSettings) include(QuasselMacros) -include(CMakeDependentOption) -include(FeatureSummary) - # Options and variables that can be set on the command line ##################################################################### @@ -320,10 +322,24 @@ if (KDE4_FOUND) add_definitions(-DHAVE_KDE ${KDE4_DEFINITIONS}) endif() -# Check for SSL support in Qt (broken for Qt5 currently) -# We don't link to the OpenSSL libraries ourselves. -if (QT_QCONFIG MATCHES "openssl") - set(HAVE_SSL true) +# 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) +if (Qt5_POSITION_INDEPENDENT_CODE) + set(CMAKE_POSITION_INDEPENDENT_CODE ON) +endif() +set(CMAKE_REQUIRED_INCLUDES ${QT_INCLUDES} ${Qt5Core_INCLUDE_DIRS}) +check_cxx_source_compiles(" + #include \"qglobal.h\" + #if defined QT_NO_OPENSSL || 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") -- 2.20.1