diff --git a/cmake/QtProcessConfigureArgs.cmake b/cmake/QtProcessConfigureArgs.cmake index 44761e9bea9..0eeb5866e16 100644 --- a/cmake/QtProcessConfigureArgs.cmake +++ b/cmake/QtProcessConfigureArgs.cmake @@ -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) diff --git a/qt_cmdline.cmake b/qt_cmdline.cmake index e18b76f1845..c6fdb0e9d49 100644 --- a/qt_cmdline.cmake +++ b/qt_cmdline.cmake @@ -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)