diff options
author | Joerg Bornemann <joerg.bornemann@qt.io> | 2020-08-13 14:36:50 +0200 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@qt.io> | 2020-08-17 18:19:24 +0200 |
commit | d6e41abd62f03761388664574c538a8c7de9b50d (patch) | |
tree | 8d9d2d7dde6991558d02003adec36b36a9c4e316 /cmake | |
parent | a930e657edbc4dcd1437f3f4146a4e46e0ce2d62 (diff) |
CMake: Handle -D, -I, -F and -L configure arguments
Introduce new CMake variables and map
-D to QT_EXTRA_DEFINES,
-I to QT_EXTRA_INCLUDEPATHS,
-L to QT_EXTRA_LIBDIRS,
and -F to QT_EXTRA_FRAMEWORKPATHS.
Those variables only affect the Qt build, not user projects.
Fixes: QTBUG-85878
Change-Id: I229df2eed1505a2619068d0d32975962b052569a
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/QtInternalTargets.cmake | 19 | ||||
-rw-r--r-- | cmake/QtPostProcessHelpers.cmake | 16 | ||||
-rw-r--r-- | cmake/QtPriHelpers.cmake | 17 | ||||
-rw-r--r-- | cmake/QtProcessConfigureArgs.cmake | 4 | ||||
-rw-r--r-- | cmake/QtQmakeHelpers.cmake | 15 | ||||
-rw-r--r-- | cmake/configure-cmake-mapping.md | 8 |
6 files changed, 75 insertions, 4 deletions
diff --git a/cmake/QtInternalTargets.cmake b/cmake/QtInternalTargets.cmake index ced23b9d6a..c616d76bb7 100644 --- a/cmake/QtInternalTargets.cmake +++ b/cmake/QtInternalTargets.cmake @@ -187,6 +187,25 @@ if (GCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "9.2") target_compile_options(PlatformCommonInternal INTERFACE $<$<COMPILE_LANGUAGE:CXX>:-Wsuggest-override>) endif() +if(DEFINED QT_EXTRA_DEFINES) + target_compile_definitions(PlatformCommonInternal INTERFACE ${QT_EXTRA_DEFINES}) +endif() + +if(DEFINED QT_EXTRA_INCLUDEPATHS) + target_include_directories(PlatformCommonInternal INTERFACE ${QT_EXTRA_INCLUDEPATHS}) +endif() + +if(DEFINED QT_EXTRA_LIBDIRS) + target_link_directories(PlatformCommonInternal INTERFACE ${QT_EXTRA_LIBDIRS}) +endif() + +if(DEFINED QT_EXTRA_FRAMEWORKPATHS AND APPLE) + list(TRANSFORM QT_EXTRA_FRAMEWORKPATHS PREPEND "-F" OUTPUT_VARIABLE __qt_fw_flags) + target_compile_options(PlatformCommonInternal INTERFACE ${__qt_fw_flags}) + target_link_options(PlatformCommonInternal INTERFACE ${__qt_fw_flags}) + unset(__qt_fw_flags) +endif() + function(qt_get_implicit_sse2_genex_condition out_var) set(is_shared_lib "$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>") set(is_static_lib "$<STREQUAL:$<TARGET_PROPERTY:TYPE>,STATIC_LIBRARY>") diff --git a/cmake/QtPostProcessHelpers.cmake b/cmake/QtPostProcessHelpers.cmake index 093eb42a8e..42ad39ee5e 100644 --- a/cmake/QtPostProcessHelpers.cmake +++ b/cmake/QtPostProcessHelpers.cmake @@ -515,6 +515,22 @@ endif()\n") string(APPEND QT_EXTRA_BUILD_INTERNALS_VARS "set(QT_DISABLE_RPATH \"${QT_DISABLE_RPATH}\" CACHE STRING \"\")\n") endif() + if(DEFINED QT_EXTRA_DEFINES) + string(APPEND QT_EXTRA_BUILD_INTERNALS_VARS + "set(QT_EXTRA_DEFINES \"${QT_EXTRA_DEFINES}\" CACHE STRING \"\")\n") + endif() + if(DEFINED QT_EXTRA_INCLUDEPATHS) + string(APPEND QT_EXTRA_BUILD_INTERNALS_VARS + "set(QT_EXTRA_INCLUDEPATHS \"${QT_EXTRA_INCLUDEPATHS}\" CACHE STRING \"\")\n") + endif() + if(DEFINED QT_EXTRA_FRAMEWORKPATHS) + string(APPEND QT_EXTRA_BUILD_INTERNALS_VARS + "set(QT_EXTRA_FRAMEWORKPATHS \"${QT_EXTRA_FRAMEWORKPATHS}\" CACHE STRING \"\")\n") + endif() + if(DEFINED QT_EXTRA_LIBDIRS) + string(APPEND QT_EXTRA_BUILD_INTERNALS_VARS + "set(QT_EXTRA_LIBDIRS \"${QT_EXTRA_LIBDIRS}\" CACHE STRING \"\")\n") + endif() if(DEFINED QT_EXTRA_RPATHS) string(APPEND QT_EXTRA_BUILD_INTERNALS_VARS "set(QT_EXTRA_RPATHS \"${QT_EXTRA_RPATHS}\" CACHE STRING \"\")\n") diff --git a/cmake/QtPriHelpers.cmake b/cmake/QtPriHelpers.cmake index a82e3bb227..1e3b12e661 100644 --- a/cmake/QtPriHelpers.cmake +++ b/cmake/QtPriHelpers.cmake @@ -612,6 +612,23 @@ function(qt_generate_global_module_pri_file) list(JOIN corrected_private_config " " private_config_joined) set(content "") + if(DEFINED QT_EXTRA_DEFINES) + list(JOIN QT_EXTRA_DEFINES " " value) + string(APPEND content "EXTRA_DEFINES += ${value}\n") + endif() + if(DEFINED QT_EXTRA_INCLUDEPATHS) + qt_to_qmake_path_list(value ${QT_EXTRA_INCLUDEPATHS}) + string(APPEND content "EXTRA_INCLUDEPATH += ${value}\n") + endif() + if(DEFINED QT_EXTRA_LIBDIRS) + qt_to_qmake_path_list(value ${QT_EXTRA_LIBDIRS}) + string(APPEND content "EXTRA_LIBDIR += ${value}\n") + endif() + if(DEFINED QT_EXTRA_FRAMEWORKPATHS) + qt_to_qmake_path_list(value ${QT_EXTRA_FRAMEWORKPATHS}) + string(APPEND content "EXTRA_FRAMEWORKPATH += ${value}\n") + endif() + set(arch "${TEST_architecture_arch}") list(JOIN TEST_subarch_result " " subarchs) if(CMAKE_CROSSCOMPILING) diff --git a/cmake/QtProcessConfigureArgs.cmake b/cmake/QtProcessConfigureArgs.cmake index 3ae289eb27..de35b2f5df 100644 --- a/cmake/QtProcessConfigureArgs.cmake +++ b/cmake/QtProcessConfigureArgs.cmake @@ -599,6 +599,10 @@ elseif(nr_of_build_configs GREATER 1) endif() translate_list_input(device-option QT_QMAKE_DEVICE_OPTIONS) +translate_list_input(defines QT_EXTRA_DEFINES) +translate_list_input(fpaths QT_EXTRA_FRAMEWORKPATHS) +translate_list_input(includes QT_EXTRA_INCLUDEPATHS) +translate_list_input(lpaths QT_EXTRA_LIBDIRS) translate_list_input(rpaths QT_EXTRA_RPATHS) foreach(input ${config_inputs}) diff --git a/cmake/QtQmakeHelpers.cmake b/cmake/QtQmakeHelpers.cmake index ce1f96efd9..cee57b2ed2 100644 --- a/cmake/QtQmakeHelpers.cmake +++ b/cmake/QtQmakeHelpers.cmake @@ -1,3 +1,18 @@ +# Create a QMake list (values space-separated) containing paths. +# Entries that contain whitespace characters are quoted. +function(qt_to_qmake_path_list out_var) + set(quoted_paths "") + foreach(path ${ARGN}) + if(path MATCHES "[ \t]") + list(APPEND quoted_paths "\"${path}\"") + else() + list(APPEND quoted_paths "${path}") + endif() + endforeach() + list(JOIN quoted_paths " " result) + set("${out_var}" "${result}" PARENT_SCOPE) +endfunction() + macro(qt_add_string_to_qconfig_cpp str) string(LENGTH "${str}" length) string(APPEND QT_CONFIG_STRS " \"${str}\\0\"\n") diff --git a/cmake/configure-cmake-mapping.md b/cmake/configure-cmake-mapping.md index 49af2e6433..874b85e2e3 100644 --- a/cmake/configure-cmake-mapping.md +++ b/cmake/configure-cmake-mapping.md @@ -78,10 +78,10 @@ The effort of this is tracked in QTBUG-85373 and QTBUG-85349. | | | passed via -DCMAKE_TOOLCHAIN_FILE=<filename> | | -no-gcc-sysroot | | | | -no-pkg-config | | | -| -D <string> | | | -| -I <string> | | | -| -L <string> | | | -| -F <string> | | | +| -D <string> | -DQT_EXTRA_DEFINES=<string1>;<string2> | | +| -I <string> | -DQT_EXTRA_INCLUDEPATHS=<string1>;<string2> | | +| -L <string> | -DQT_EXTRA_LIBDIRS=<string1>;<string2> | | +| -F <string> | -DQT_EXTRA_FRAMEWORKPATHS=<string1>;<string2> | | | -sdk <sdk> | | | | -android-sdk path | | | | -android-ndk path | | | |