configure: Add type 'path' to qt_commandline_option

One can now add configure options of type 'path' to qt_cmdline.cmake
files like so:
    qt_commandline_option(prefix
        TYPE path
        CMAKE_VARIABLE CMAKE_INSTALL_PREFIX
    )

This removes the need to call translate_path_input for such arguments in
QtProcessConfigureArgs.cmake.

Task-number: QTBUG-123064
Change-Id: Ie2111d72f7fd637f2bbb9d7b049bf80ea9646b4f
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
This commit is contained in:
Joerg Bornemann 2025-02-19 16:25:36 +01:00
parent d9e9db65a3
commit bf05a67db3
2 changed files with 29 additions and 35 deletions

View File

@ -510,6 +510,12 @@ function(qt_commandline_string arg val nextok)
endif()
endfunction()
# Handle command line arguments of type "path" exactly like strings.
# They are treated differently by translate_input, however.
function(qt_commandline_path arg val nextok)
qt_commandline_string("${arg}" "${val}" "${nextok}")
endfunction()
function(qt_commandline_optionalString arg val nextok)
if("${val}" STREQUAL "")
if(nextok)
@ -851,6 +857,8 @@ 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 "path")
translate_path_input(${name} ${cmake_var})
elseif("${commandline_input_${name}_type}" STREQUAL "string")
translate_string_input(${name} ${cmake_var})
else()
@ -952,16 +960,6 @@ endforeach()
drop_input(commercial)
drop_input(confirm-license)
translate_boolean_input(shared BUILD_SHARED_LIBS)
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)
string(TOUPPER ${kind} uc_kind)
translate_path_input(${kind}dir INSTALL_${uc_kind}DIR)
endforeach()
translate_path_input(headerdir INSTALL_INCLUDEDIR)
translate_path_input(plugindir INSTALL_PLUGINSDIR)
translate_path_input(translationdir INSTALL_TRANSLATIONSDIR)
translate_path_input(sbomdir INSTALL_SBOMDIR)
if(NOT "${INPUT_device}" STREQUAL "")
push("-DQT_QMAKE_TARGET_MKSPEC=devices/${INPUT_device}")
@ -970,8 +968,6 @@ endif()
guess_compiler_from_mkspec()
translate_list_input(qpa_platforms QT_QPA_PLATFORMS)
translate_path_input(android-sdk ANDROID_SDK_ROOT)
translate_path_input(android-ndk ANDROID_NDK_ROOT)
if(DEFINED INPUT_android-ndk-platform)
drop_input(android-ndk-platform)
push("-DANDROID_PLATFORM=${INPUT_android-ndk-platform}")
@ -1050,8 +1046,6 @@ if("${INPUT_ltcg}" STREQUAL "yes")
endforeach()
endif()
translate_path_input(ffmpeg-dir FFMPEG_DIR)
translate_list_input(device-option QT_QMAKE_DEVICE_OPTIONS)
translate_list_input(defines QT_EXTRA_DEFINES)
translate_list_input(fpaths QT_EXTRA_FRAMEWORKPATHS)

View File

@ -11,29 +11,29 @@ qt_commandline_subconfig(src/printsupport)
qt_commandline_subconfig(src/plugins/sqldrivers)
qt_commandline_subconfig(src/testlib)
qt_commandline_subconfig(src/tools)
qt_commandline_option(prefix TYPE string)
qt_commandline_option(extprefix TYPE string)
qt_commandline_option(archdatadir TYPE string)
qt_commandline_option(bindir TYPE string)
qt_commandline_option(datadir TYPE string)
qt_commandline_option(docdir TYPE string)
qt_commandline_option(examplesdir TYPE string)
qt_commandline_option(headerdir TYPE string)
qt_commandline_option(hostdatadir TYPE string)
qt_commandline_option(libdir TYPE string)
qt_commandline_option(libexecdir TYPE string)
qt_commandline_option(plugindir TYPE string)
qt_commandline_option(qmldir TYPE string)
qt_commandline_option(sbomdir TYPE string)
qt_commandline_option(settingsdir TYPE string NAME sysconfdir)
qt_commandline_option(sysconfdir TYPE string)
qt_commandline_option(testsdir TYPE string)
qt_commandline_option(translationdir TYPE string)
qt_commandline_option(prefix TYPE path CMAKE_VARIABLE CMAKE_INSTALL_PREFIX)
qt_commandline_option(extprefix TYPE path CMAKE_VARIABLE CMAKE_STAGING_PREFIX)
qt_commandline_option(archdatadir TYPE path CMAKE_VARIABLE CMAKE_ARCHDATADIR)
qt_commandline_option(bindir TYPE path CMAKE_VARIABLE INSTALL_BINDIR)
qt_commandline_option(datadir TYPE path CMAKE_VARIABLE INSTALL_DATADIR)
qt_commandline_option(docdir TYPE path CMAKE_VARIABLE INSTALL_DOCDIR)
qt_commandline_option(examplesdir TYPE path CMAKE_VARIABLE INSTALL_EXAMPLESDIR)
qt_commandline_option(headerdir TYPE path CMAKE_VARIABLE INSTALL_INCLUDEDIR)
qt_commandline_option(hostdatadir TYPE string) # handled specially in QtProcessConfigureArgs.cmake
qt_commandline_option(libdir TYPE path CMAKE_VARIABLE INSTALL_LIBDIR)
qt_commandline_option(libexecdir TYPE path CMAKE_VARIABLE INSTALL_LIBEXECDIR)
qt_commandline_option(plugindir TYPE path CMAKE_VARIABLE INSTALL_PLUGINSDIR)
qt_commandline_option(qmldir TYPE path CMAKE_VARIABLE INSTALL_QMLDIR)
qt_commandline_option(sbomdir TYPE path CMAKE_VARIABLE INSTALL_SBOMDIR)
qt_commandline_option(settingsdir TYPE path NAME sysconfdir CMAKE_VARIABLE INSTALL_SYSCONFDIR)
qt_commandline_option(sysconfdir TYPE path CMAKE_VARIABLE INSTALL_SYSCONFDIR)
qt_commandline_option(testsdir TYPE path CMAKE_VARIABLE INSTALL_TESTSDIR)
qt_commandline_option(translationdir TYPE path CMAKE_VARIABLE INSTALL_TRANSLATIONSDIR)
qt_commandline_option(android-arch TYPE string)
qt_commandline_option(android-abis TYPE string)
qt_commandline_option(android-ndk TYPE string)
qt_commandline_option(android-ndk TYPE path CMAKE_VARIABLE ANDROID_NDK_ROOT)
qt_commandline_option(android-ndk-platform TYPE string)
qt_commandline_option(android-sdk TYPE string)
qt_commandline_option(android-sdk TYPE path CMAKE_VARIABLE ANDROID_SDK_ROOT)
qt_commandline_option(android-javac-target
TYPE string
CMAKE_VARIABLE QT_ANDROID_JAVAC_TARGET
@ -155,7 +155,7 @@ qt_commandline_option(xplatform TYPE string CMAKE_VARIABLE QT_QMAKE_TARGET_MKSPE
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-dir TYPE path CMAKE_VARIABLE FFMPEG_DIR)
qt_commandline_option(ffmpeg-deploy TYPE boolean CMAKE_VARIABLE QT_DEPLOY_FFMPEG)
qt_commandline_prefix(D defines)
qt_commandline_prefix(F fpaths)