diff --git a/cmake/QtToolchainHelpers.cmake b/cmake/QtToolchainHelpers.cmake index 1fc8cf6a892..5f3d2dc4d38 100644 --- a/cmake/QtToolchainHelpers.cmake +++ b/cmake/QtToolchainHelpers.cmake @@ -198,8 +198,8 @@ set(__qt_chainload_toolchain_file \"\${__qt_initially_configured_toolchain_file} # xcodebuild from the command line would try to build with the wrong architecture. Also # provide an opt-out option just in case. # - # For a multi-architecture build (so simulator_and_device) we don't set an explicit - # architecture and let Xcode and the developer handle it. + # For a multi-architecture build (so simulator_and_device) we set an explicit + # architecture for simulator only, via _qt_internal_set_ios_simulator_arch. # # When using the Ninja generator, specify the first architecture from QT_OSX_ARCHITECTURES # (even with a simulator_and_device Qt build). This ensures that the default configuration diff --git a/src/corelib/Qt6CoreMacros.cmake b/src/corelib/Qt6CoreMacros.cmake index 5ec1ed13593..75f41702491 100644 --- a/src/corelib/Qt6CoreMacros.cmake +++ b/src/corelib/Qt6CoreMacros.cmake @@ -1223,6 +1223,32 @@ function(_qt_internal_generate_ios_info_plist target) set_target_properties("${target}" PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${info_plist_out}") endfunction() +function(_qt_internal_set_ios_simulator_arch target) + if(CMAKE_XCODE_ATTRIBUTE_ARCHS + OR QT_NO_SET_XCODE_ARCHS) + return() + endif() + + get_target_property(existing_archs + "${target}" XCODE_ATTRIBUTE_ARCHS) + if(NOT existing_archs MATCHES "-NOTFOUND") + return() + endif() + + if(NOT x86_64 IN_LIST QT_OSX_ARCHITECTURES) + return() + endif() + + if(CMAKE_OSX_ARCHITECTURES AND NOT x86_64 IN_LIST CMAKE_OSX_ARCHITECTURES) + return() + endif() + + set_target_properties("${target}" + PROPERTIES + "XCODE_ATTRIBUTE_ARCHS[sdk=iphonesimulator*]" + "x86_64") +endfunction() + function(_qt_internal_finalize_apple_app target) # Shared between macOS and iOS apps _qt_internal_set_xcode_development_team_id("${target}") @@ -1240,6 +1266,7 @@ function(_qt_internal_finalize_ios_app target) _qt_internal_set_xcode_bitcode_enablement("${target}") _qt_internal_handle_ios_launch_screen("${target}") _qt_internal_generate_ios_info_plist("${target}") + _qt_internal_set_ios_simulator_arch("${target}") endfunction() function(_qt_internal_finalize_macos_app target)