configure: Make it easier to translate arguments to CMake variables
To add a configure argument that is translated to a CMake variable, one can now use in qt_cmdline.cmake files: qt_commandline_option(foo TYPE boolean CMAKE_VARIABLE QT_FOO ) It's not necessary anymore to add a translate_boolean_input call to QtProcessConfigureArgs.cmake. This is especially useful if a non-qtbase module wants to add such configure arguments. This patch adds the CMAKE_VARIABLE argument for configure options of TYPE boolean and string. An attempt to use CMAKE_VARIABLE with other types will result in an error. Task-number: QTBUG-123064 Change-Id: I4c341e57993b729d08327cea57cf7c8a05c96c0e Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
This commit is contained in:
parent
bc06c7c61a
commit
d9e9db65a3
@ -288,7 +288,7 @@ endmacro()
|
||||
|
||||
function(qt_commandline_option name)
|
||||
set(options CONTROLS_FEATURE)
|
||||
set(oneValueArgs TYPE NAME VALUE)
|
||||
set(oneValueArgs TYPE NAME VALUE CMAKE_VARIABLE)
|
||||
set(multiValueArgs VALUES MAPPING)
|
||||
cmake_parse_arguments(arg "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||
|
||||
@ -299,6 +299,9 @@ function(qt_commandline_option name)
|
||||
set(input_name ${arg_NAME})
|
||||
set(commandline_option_${name}_variable "${arg_NAME}" PARENT_SCOPE)
|
||||
endif()
|
||||
if(DEFINED arg_CMAKE_VARIABLE)
|
||||
set_property(GLOBAL PROPERTY INPUTCMAKEVAR_${input_name} "${arg_CMAKE_VARIABLE}")
|
||||
endif()
|
||||
set(mapping_type "${arg_TYPE}")
|
||||
if(arg_CONTROLS_FEATURE)
|
||||
set(mapping_type "boolean")
|
||||
@ -317,11 +320,13 @@ endfunction()
|
||||
# Add the common command line options for every qt repo.
|
||||
macro(qt_add_common_commandline_options)
|
||||
qt_commandline_option(headersclean TYPE boolean)
|
||||
qt_commandline_option(sbom TYPE boolean)
|
||||
qt_commandline_option(sbom-json TYPE boolean)
|
||||
qt_commandline_option(sbom-json-required TYPE boolean)
|
||||
qt_commandline_option(sbom-verify TYPE boolean)
|
||||
qt_commandline_option(sbom-verify-required TYPE boolean)
|
||||
qt_commandline_option(sbom TYPE boolean CMAKE_VARIABLE QT_GENERATE_SBOM)
|
||||
qt_commandline_option(sbom-json TYPE boolean CMAKE_VARIABLE QT_SBOM_GENERATE_JSON)
|
||||
qt_commandline_option(sbom-json-required TYPE boolean
|
||||
CMAKE_VARIABLE QT_SBOM_REQUIRE_GENERATE_JSON
|
||||
)
|
||||
qt_commandline_option(sbom-verify TYPE boolean CMAKE_VARIABLE QT_SBOM_VERIFY)
|
||||
qt_commandline_option(sbom-verify-required TYPE boolean CMAKE_VARIABLE QT_SBOM_REQUIRE_VERIFY)
|
||||
endmacro()
|
||||
|
||||
function(qt_commandline_prefix arg var)
|
||||
@ -801,6 +806,7 @@ foreach(var ${config_inputs})
|
||||
if("${commandline_input_${var}_type}" STREQUAL "")
|
||||
get_property(commandline_input_${var}_type GLOBAL PROPERTY INPUTTYPE_${var})
|
||||
endif()
|
||||
get_property(commandline_input_${var}_cmake_variable GLOBAL PROPERTY INPUTCMAKEVAR_${var})
|
||||
endforeach()
|
||||
|
||||
macro(drop_input name)
|
||||
@ -842,6 +848,19 @@ macro(translate_list_input name cmake_var)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(translate_input name cmake_var)
|
||||
if("${commandline_input_${name}_type}" STREQUAL "boolean")
|
||||
translate_boolean_input(${name} ${cmake_var})
|
||||
elseif("${commandline_input_${name}_type}" STREQUAL "string")
|
||||
translate_string_input(${name} ${cmake_var})
|
||||
else()
|
||||
message(FATAL_ERROR
|
||||
"translate_input cannot handle input '${name}' "
|
||||
"of type '${commandline_input_${name}_type}'."
|
||||
)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
# Check whether to guess the compiler for the given language.
|
||||
#
|
||||
# Sets ${out_var} to FALSE if one of the following holds:
|
||||
@ -923,24 +942,16 @@ function(check_qt_build_parts type)
|
||||
set(cmake_args "${cmake_args}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
# Translate command line arguments that have CMAKE_VARIABLE set.
|
||||
foreach(input IN LISTS config_inputs)
|
||||
if(NOT "${commandline_input_${input}_cmake_variable}" STREQUAL "")
|
||||
translate_input("${input}" "${commandline_input_${input}_cmake_variable}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
drop_input(commercial)
|
||||
drop_input(confirm-license)
|
||||
translate_boolean_input(precompile_header BUILD_WITH_PCH)
|
||||
translate_boolean_input(unity_build QT_UNITY_BUILD)
|
||||
translate_string_input(unity_build_batch_size QT_UNITY_BUILD_BATCH_SIZE)
|
||||
translate_boolean_input(ccache QT_USE_CCACHE)
|
||||
translate_boolean_input(vcpkg QT_USE_VCPKG)
|
||||
translate_boolean_input(sbom QT_GENERATE_SBOM)
|
||||
translate_boolean_input(sbom-json QT_SBOM_GENERATE_JSON)
|
||||
translate_boolean_input(sbom-json-required QT_SBOM_REQUIRE_GENERATE_JSON)
|
||||
translate_boolean_input(sbom-verify QT_SBOM_VERIFY)
|
||||
translate_boolean_input(sbom-verify-required QT_SBOM_REQUIRE_VERIFY)
|
||||
translate_boolean_input(shared BUILD_SHARED_LIBS)
|
||||
translate_boolean_input(warnings_are_errors WARNINGS_ARE_ERRORS)
|
||||
translate_boolean_input(qtinlinenamespace QT_INLINE_NAMESPACE)
|
||||
translate_string_input(qt_namespace QT_NAMESPACE)
|
||||
translate_string_input(qt_libinfix QT_LIBINFIX)
|
||||
translate_string_input(qreal QT_COORD_TYPE)
|
||||
translate_path_input(prefix CMAKE_INSTALL_PREFIX)
|
||||
translate_path_input(extprefix CMAKE_STAGING_PREFIX)
|
||||
foreach(kind bin lib archdata libexec qml data doc sysconf examples tests)
|
||||
@ -956,10 +967,7 @@ if(NOT "${INPUT_device}" STREQUAL "")
|
||||
push("-DQT_QMAKE_TARGET_MKSPEC=devices/${INPUT_device}")
|
||||
drop_input(device)
|
||||
endif()
|
||||
translate_string_input(platform QT_QMAKE_TARGET_MKSPEC)
|
||||
translate_string_input(xplatform QT_QMAKE_TARGET_MKSPEC)
|
||||
guess_compiler_from_mkspec()
|
||||
translate_string_input(qpa_default_platform QT_QPA_DEFAULT_PLATFORM)
|
||||
translate_list_input(qpa_platforms QT_QPA_PLATFORMS)
|
||||
|
||||
translate_path_input(android-sdk ANDROID_SDK_ROOT)
|
||||
@ -975,14 +983,9 @@ if(DEFINED INPUT_android-abis)
|
||||
endif()
|
||||
translate_string_input(android-abis ANDROID_ABI)
|
||||
endif()
|
||||
translate_string_input(android-javac-source QT_ANDROID_JAVAC_SOURCE)
|
||||
translate_string_input(android-javac-target QT_ANDROID_JAVAC_TARGET)
|
||||
|
||||
translate_string_input(sdk QT_APPLE_SDK)
|
||||
|
||||
drop_input(make)
|
||||
drop_input(nomake)
|
||||
translate_boolean_input(install-examples-sources QT_INSTALL_EXAMPLES_SOURCES)
|
||||
|
||||
check_qt_build_parts(nomake)
|
||||
check_qt_build_parts(make)
|
||||
@ -1048,7 +1051,6 @@ if("${INPUT_ltcg}" STREQUAL "yes")
|
||||
endif()
|
||||
|
||||
translate_path_input(ffmpeg-dir FFMPEG_DIR)
|
||||
translate_boolean_input(ffmpeg-deploy QT_DEPLOY_FFMPEG)
|
||||
|
||||
translate_list_input(device-option QT_QMAKE_DEVICE_OPTIONS)
|
||||
translate_list_input(defines QT_EXTRA_DEFINES)
|
||||
|
@ -34,18 +34,28 @@ qt_commandline_option(android-abis TYPE string)
|
||||
qt_commandline_option(android-ndk TYPE string)
|
||||
qt_commandline_option(android-ndk-platform TYPE string)
|
||||
qt_commandline_option(android-sdk TYPE string)
|
||||
qt_commandline_option(android-javac-target TYPE string)
|
||||
qt_commandline_option(android-javac-source TYPE string)
|
||||
qt_commandline_option(android-javac-target
|
||||
TYPE string
|
||||
CMAKE_VARIABLE QT_ANDROID_JAVAC_TARGET
|
||||
)
|
||||
qt_commandline_option(android-javac-source
|
||||
TYPE string
|
||||
CMAKE_VARIABLE QT_ANDROID_JAVAC_SOURCE
|
||||
)
|
||||
qt_commandline_option(android-style-assets TYPE boolean)
|
||||
qt_commandline_option(appstore-compliant TYPE boolean)
|
||||
qt_commandline_option(avx TYPE boolean)
|
||||
qt_commandline_option(avx2 TYPE boolean)
|
||||
qt_commandline_option(avx512 TYPE boolean NAME avx512f)
|
||||
qt_commandline_option(c++std TYPE cxxstd)
|
||||
qt_commandline_option(unity-build TYPE boolean NAME unity_build)
|
||||
qt_commandline_option(unity-build-batch-size TYPE string NAME unity_build_batch_size)
|
||||
qt_commandline_option(ccache TYPE boolean NAME ccache)
|
||||
qt_commandline_option(vcpkg TYPE boolean)
|
||||
qt_commandline_option(unity-build TYPE boolean NAME unity_build CMAKE_VARIABLE QT_UNITY_BUILD)
|
||||
qt_commandline_option(unity-build-batch-size
|
||||
TYPE string
|
||||
NAME unity_build_batch_size
|
||||
CMAKE_VARIABLE QT_UNITY_BUILD_BATCH_SIZE
|
||||
)
|
||||
qt_commandline_option(ccache TYPE boolean NAME ccache CMAKE_VARIABLE QT_USE_CCACHE)
|
||||
qt_commandline_option(vcpkg TYPE boolean CMAKE_VARIABLE QT_USE_VCPKG)
|
||||
qt_commandline_option(commercial TYPE void)
|
||||
qt_commandline_option(confirm-license TYPE void)
|
||||
qt_commandline_option(dbus TYPE optionalString VALUES no yes linked runtime)
|
||||
@ -84,7 +94,10 @@ qt_commandline_option(libcpp-hardening TYPE boolean NAME libcpp_hardening)
|
||||
qt_commandline_option(relro-now-linker TYPE boolean NAME relro_now_linker)
|
||||
qt_commandline_option(make TYPE addString VALUES examples libs tests tools
|
||||
benchmarks manual-tests minimal-static-tests)
|
||||
qt_commandline_option(install-examples-sources TYPE boolean)
|
||||
qt_commandline_option(install-examples-sources
|
||||
TYPE boolean
|
||||
CMAKE_VARIABLE QT_INSTALL_EXAMPLES_SOURCES
|
||||
)
|
||||
qt_commandline_option(mips_dsp TYPE boolean)
|
||||
qt_commandline_option(mips_dspr2 TYPE boolean)
|
||||
qt_commandline_option(nomake TYPE addString VALUES examples tests tools benchmarks
|
||||
@ -94,21 +107,29 @@ qt_commandline_option(optimize-debug TYPE boolean NAME optimize_debug)
|
||||
qt_commandline_option(optimize-size TYPE boolean NAME optimize_size)
|
||||
qt_commandline_option(optimized-qmake TYPE boolean NAME release_tools)
|
||||
qt_commandline_option(optimized-tools TYPE boolean NAME release_tools)
|
||||
qt_commandline_option(pch TYPE boolean NAME precompile_header)
|
||||
qt_commandline_option(pch TYPE boolean NAME precompile_header CMAKE_VARIABLE BUILD_WITH_PCH)
|
||||
qt_commandline_option(pkg-config TYPE boolean)
|
||||
qt_commandline_option(platform TYPE string)
|
||||
qt_commandline_option(platform TYPE string CMAKE_VARIABLE QT_QMAKE_TARGET_MKSPEC)
|
||||
qt_commandline_option(plugin-manifests TYPE boolean)
|
||||
qt_commandline_option(profile TYPE boolean)
|
||||
qt_commandline_option(qreal TYPE string)
|
||||
qt_commandline_option(qtinlinenamespace TYPE boolean)
|
||||
qt_commandline_option(qtlibinfix TYPE string NAME qt_libinfix)
|
||||
qt_commandline_option(qtnamespace TYPE string NAME qt_namespace)
|
||||
qt_commandline_option(qreal TYPE string CMAKE_VARIABLE QT_COORD_TYPE)
|
||||
qt_commandline_option(qtinlinenamespace TYPE boolean CMAKE_VARIABLE QT_INLINE_NAMESPACE)
|
||||
qt_commandline_option(qtlibinfix
|
||||
TYPE string
|
||||
NAME qt_libinfix
|
||||
CMAKE_VARIABLE QT_LIBINFIX
|
||||
)
|
||||
qt_commandline_option(qtnamespace
|
||||
TYPE string
|
||||
NAME qt_namespace
|
||||
CMAKE_VARIABLE QT_NAMESPACE
|
||||
)
|
||||
qt_commandline_option(reduce-exports TYPE boolean NAME reduce_exports)
|
||||
qt_commandline_option(reduce-relocations TYPE boolean NAME reduce_relocations)
|
||||
qt_commandline_option(release TYPE enum NAME debug MAPPING yes no no yes)
|
||||
qt_commandline_option(rpath TYPE boolean)
|
||||
qt_commandline_option(sanitize TYPE sanitize)
|
||||
qt_commandline_option(sdk TYPE string)
|
||||
qt_commandline_option(sdk TYPE string CMAKE_VARIABLE QT_APPLE_SDK)
|
||||
qt_commandline_option(separate-debug-info TYPE boolean NAME separate_debug_info)
|
||||
qt_commandline_option(shared TYPE boolean)
|
||||
qt_commandline_option(silent TYPE void)
|
||||
@ -123,15 +144,19 @@ qt_commandline_option(static-runtime TYPE boolean NAME static_runtime)
|
||||
qt_commandline_option(strip TYPE boolean)
|
||||
qt_commandline_option(sysroot TYPE string)
|
||||
qt_commandline_option(use-gold-linker TYPE boolean NAME use_gold_linker_alias)
|
||||
qt_commandline_option(warnings-are-errors TYPE boolean NAME warnings_are_errors)
|
||||
qt_commandline_option(warnings-are-errors
|
||||
TYPE boolean
|
||||
NAME warnings_are_errors
|
||||
CMAKE_VARIABLE WARNINGS_ARE_ERRORS
|
||||
)
|
||||
qt_commandline_option(Werror TYPE boolean NAME warnings_are_errors)
|
||||
qt_commandline_option(widgets TYPE boolean)
|
||||
qt_commandline_option(xplatform TYPE string)
|
||||
qt_commandline_option(xplatform TYPE string CMAKE_VARIABLE QT_QMAKE_TARGET_MKSPEC)
|
||||
qt_commandline_option(zlib CONTROLS_FEATURE TYPE enum NAME system-zlib MAPPING system yes qt no)
|
||||
qt_commandline_option(zstd TYPE boolean)
|
||||
qt_commandline_option(coverage TYPE optionalString VALUES gcov)
|
||||
qt_commandline_option(ffmpeg-dir TYPE string)
|
||||
qt_commandline_option(ffmpeg-deploy TYPE boolean)
|
||||
qt_commandline_option(ffmpeg-deploy TYPE boolean CMAKE_VARIABLE QT_DEPLOY_FFMPEG)
|
||||
qt_commandline_prefix(D defines)
|
||||
qt_commandline_prefix(F fpaths)
|
||||
qt_commandline_prefix(I includes)
|
||||
|
@ -29,7 +29,11 @@ qt_commandline_option(opengl-es-2 TYPE void NAME opengl VALUE es2)
|
||||
qt_commandline_option(opengles3 TYPE boolean)
|
||||
qt_commandline_option(openvg TYPE boolean)
|
||||
qt_commandline_option(qpa TYPE string NAME qpa_platforms)
|
||||
qt_commandline_option(default-qpa TYPE string NAME qpa_default_platform)
|
||||
qt_commandline_option(default-qpa
|
||||
TYPE string
|
||||
NAME qpa_default_platform
|
||||
CMAKE_VARIABLE QT_QPA_DEFAULT_PLATFORM
|
||||
)
|
||||
qt_commandline_option(sm TYPE boolean NAME sessionmanager)
|
||||
qt_commandline_option(tslib TYPE boolean)
|
||||
qt_commandline_option(vulkan TYPE boolean)
|
||||
|
Loading…
x
Reference in New Issue
Block a user