From 3a13e0a561b38571da8a2ec3ca909aaa15b63dbe Mon Sep 17 00:00:00 2001 From: Tim Jenssen Date: Wed, 19 Jun 2024 13:44:54 +0200 Subject: [PATCH] QmlDesigner: WITH_QMLDESIGNER_DEFAULT OFF if compiler is too old Change-Id: I6b54434273da92bdff9b81076e0cbf47e07cd3d3 Reviewed-by: Eike Ziller --- CMakeLists.txt | 10 +++------- cmake/Utils.cmake | 29 +++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9f0cbb088e6..d593903ad01 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,7 +11,6 @@ include(Utils) env_with_default("QTC_BUILD_WITH_PCH" ENV_QTC_BUILD_WITH_PCH ON) env_with_default("QTC_WITH_TESTS" ENV_QTC_WITH_TESTS OFF) -env_with_default("QTC_WITH_QMLDESIGNER" ENV_QTC_WITH_QMLDESIGNER ON) option(BUILD_WITH_PCH "Build with precompiled headers" "${ENV_QTC_BUILD_WITH_PCH}") @@ -78,12 +77,9 @@ find_package(Qt6 REQUIRED ) -if (Qt6_VERSION VERSION_GREATER_EQUAL 6.5.4) - option(WITH_QMLDESIGNER "Build QmlDesigner" ${ENV_QTC_WITH_QMLDESIGNER}) -else() - option(WITH_QMLDESIGNER "Build QmlDesigner" OFF) -endif() -add_feature_info("Build QmlDesigner and related code (only if Qt is 6.5.4 or newer)" ${WITH_QMLDESIGNER} "") +# depending on Qt version and compiler version enable or disable Qml Designer +# can be overwritten by variable WITH_QMLDESIGNER / QTC_WITH_QMLDESIGNER (env) +configure_qml_designer(${Qt6_VERSION}) # hack for Qbs which still supports Qt5 and Qt6 if (TARGET Qt6::Core5CompatPrivate) diff --git a/cmake/Utils.cmake b/cmake/Utils.cmake index 3dbe0f1e810..02452333849 100644 --- a/cmake/Utils.cmake +++ b/cmake/Utils.cmake @@ -59,3 +59,32 @@ function(setup_dependencies_component) ) endif() endfunction() + +function(configure_qml_designer Qt6_VERSION) + set(QMLDESIGNER_QT6_REQUIRED_VERSION 6.5.4) + set(QMLDESIGNER_GCC_REQUIRED_VERSION 11.0) + set(QMLDESIGNER_CLANG_REQUIRED_VERSION 13.0) + + string(CONCAT QMLDESIGNER_FEATURE_DESC + "Needs a Qt ${QMLDESIGNER_QT6_REQUIRED_VERSION} or newer") + + if (Qt6_VERSION VERSION_GREATER_EQUAL ${QMLDESIGNER_QT6_REQUIRED_VERSION}) + if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND + CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${QMLDESIGNER_GCC_REQUIRED_VERSION}) + set(QTC_WITH_QMLDESIGNER_DEFAULT OFF) + string(APPEND QMLDESIGNER_FEATURE_DESC " and at least gcc ${QMLDESIGNER_GCC_REQUIRED_VERSION}") + elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND + CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${QMLDESIGNER_CLANG_REQUIRED_VERSION}) + set(QTC_WITH_QMLDESIGNER_DEFAULT OFF) + string(APPEND QMLDESIGNER_FEATURE_DESC " and at least clang ${QMLDESIGNER_CLANG_REQUIRED_VERSION}") + else() + set(QTC_WITH_QMLDESIGNER_DEFAULT ON) + endif() + else() + set(QTC_WITH_QMLDESIGNER_DEFAULT OFF) + endif() + + env_with_default("QTC_WITH_QMLDESIGNER" ENV_QTC_WITH_QMLDESIGNER ${QTC_WITH_QMLDESIGNER_DEFAULT}) + option(WITH_QMLDESIGNER "Build QmlDesigner" ${ENV_QTC_WITH_QMLDESIGNER}) + add_feature_info("WITH_QMLDESIGNER" ${WITH_QMLDESIGNER} "${QMLDESIGNER_FEATURE_DESC}") +endfunction()