diff options
Diffstat (limited to 'src/corelib/Qt6CoreMacros.cmake')
-rw-r--r-- | src/corelib/Qt6CoreMacros.cmake | 72 |
1 files changed, 65 insertions, 7 deletions
diff --git a/src/corelib/Qt6CoreMacros.cmake b/src/corelib/Qt6CoreMacros.cmake index 04b5c4f62e..1a449b4aa3 100644 --- a/src/corelib/Qt6CoreMacros.cmake +++ b/src/corelib/Qt6CoreMacros.cmake @@ -732,10 +732,14 @@ function(_qt_internal_finalize_executable target) _qt_internal_add_wasm_extra_exported_methods("${target}") _qt_internal_set_wasm_export_name("${target}") endif() - if(IOS) - _qt_internal_finalize_ios_app("${target}") - elseif(APPLE) - _qt_internal_finalize_macos_app("${target}") + + if(APPLE) + if(NOT CMAKE_SYSTEM_NAME OR CMAKE_SYSTEM_NAME STREQUAL "Darwin") + # macOS + _qt_internal_finalize_macos_app("${target}") + else() + _qt_internal_finalize_uikit_app("${target}") + endif() endif() # For finalizer mode of plugin importing to work safely, we need to know the list of Qt @@ -3151,13 +3155,17 @@ endfunction() # Write deployment information for the targets of the project. function(_qt_internal_write_target_deploy_info out_file) set(targets "") + set(dynamic_target_types EXECUTABLE SHARED_LIBRARY MODULE_LIBRARY) _qt_internal_collect_buildsystem_targets(targets - "${CMAKE_SOURCE_DIR}" INCLUDE EXECUTABLE SHARED_LIBRARY MODULE_LIBRARY) + "${CMAKE_SOURCE_DIR}" INCLUDE ${dynamic_target_types} STATIC_LIBRARY) set(content "") foreach(target IN LISTS targets) set(var_prefix "__QT_DEPLOY_TARGET_${target}") string(APPEND content "set(${var_prefix}_FILE $<TARGET_FILE:${target}>)\n") - if(WIN32 AND CMAKE_VERSION GREATER_EQUAL "3.21") + get_target_property(target_type ${target} TYPE) + string(APPEND content "set(${var_prefix}_TYPE ${target_type})\n") + if(WIN32 AND CMAKE_VERSION GREATER_EQUAL "3.21" + AND target_type IN_LIST dynamic_target_types) string(APPEND content "set(${var_prefix}_RUNTIME_DLLS $<TARGET_RUNTIME_DLLS:${target}>)\n") endif() @@ -3485,6 +3493,21 @@ macro(qt6_standard_project_setup) if(NOT DEFINED QT_I18N_SOURCE_LANGUAGE) set(QT_I18N_SOURCE_LANGUAGE ${__qt_sps_arg_I18N_SOURCE_LANGUAGE}) endif() + + if(CMAKE_GENERATOR STREQUAL "Xcode") + # Ensure we always use device SDK for Xcode for single-arch Qt builds + set(qt_osx_arch_count 0) + if(QT_OSX_ARCHITECTURES) + list(LENGTH QT_OSX_ARCHITECTURES qt_osx_arch_count) + endif() + if(NOT qt_osx_arch_count GREATER 1 AND ${CMAKE_OSX_SYSROOT} MATCHES "^[a-z]+simulator$") + # Xcode expects the base SDK to be the device SDK + set(simulator_sysroot "${CMAKE_OSX_SYSROOT}") + string(REGEX REPLACE "simulator" "os" CMAKE_OSX_SYSROOT "${CMAKE_OSX_SYSROOT}") + set(CMAKE_OSX_SYSROOT "${CMAKE_OSX_SYSROOT}" CACHE STRING "" FORCE) + set(CMAKE_XCODE_ATTRIBUTE_SUPPORTED_PLATFORMS "${simulator_sysroot}") + endif() + endif() endif() endmacro() @@ -3497,6 +3520,40 @@ if(NOT QT_NO_CREATE_VERSIONLESS_FUNCTIONS) endmacro() endif() +# Store in ${out_var} the i18n catalogs that belong to the passed Qt modules. +# The catalog "qtbase" is always added to the result. +# +# Example: +# _qt_internal_get_i18n_catalogs_for_modules(catalogs Quick Help) +# catalogs -> qtbase;qtdeclarative;qt_help +function(_qt_internal_get_i18n_catalogs_for_modules out_var) + set(result "qtbase") + set(modules "${ARGN}") + set(module_catalog_mapping + "Bluetooth|Nfc" qtconnectivity + "Help" qt_help + "Multimedia(Widgets|QuickPrivate)?" qtmultimedia + "Qml|Quick" qtdeclarative + "SerialPort" qtserialport + "WebEngine" qtwebengine + "WebSockets" qtwebsockets + ) + list(LENGTH module_catalog_mapping max_i) + math(EXPR max_i "${max_i} - 1") + foreach(module IN LISTS modules) + foreach(i RANGE 0 ${max_i} 2) + list(GET module_catalog_mapping ${i} module_rex) + if(NOT module MATCHES "^(${module_rex})") + continue() + endif() + math(EXPR k "${i} + 1") + list(GET module_catalog_mapping ${k} catalog) + list(APPEND result ${catalog}) + endforeach() + endforeach() + set("${out_var}" "${result}" PARENT_SCOPE) +endfunction() + function(qt6_generate_deploy_script) set(no_value_options "") set(single_value_options @@ -3586,9 +3643,10 @@ function(qt6_generate_deploy_script) string(APPEND deploy_script "${config_infix}.cmake") set(${arg_OUTPUT_SCRIPT} "${deploy_script}" PARENT_SCOPE) + _qt_internal_get_i18n_catalogs_for_modules(catalogs ${QT_ALL_MODULES_FOUND_VIA_FIND_PACKAGE}) set(boiler_plate "include(${QT_DEPLOY_SUPPORT}) include(\"\${CMAKE_CURRENT_LIST_DIR}/${arg_TARGET}-plugins${config_infix}.cmake\" OPTIONAL) -set(__QT_DEPLOY_ALL_MODULES_FOUND_VIA_FIND_PACKAGE \"${QT_ALL_MODULES_FOUND_VIA_FIND_PACKAGE}\") +set(__QT_DEPLOY_I18N_CATALOGS \"${catalogs}\") ") list(TRANSFORM arg_CONTENT REPLACE "\\$" "\$") file(GENERATE OUTPUT ${deploy_script} CONTENT "${boiler_plate}${arg_CONTENT}") |