|
| 1 | +macOS: Don't hard-code x86_64 as the architecture when using qmake |
| 2 | + |
| 3 | +Upstream commit: |
| 4 | + - Qt 6.1: 9082cc8e8d5a6441dabe5e7a95bc0cd9085b95fe |
| 5 | + |
| 6 | +For other Qt branches see |
| 7 | +https://codereview.qt-project.org/q/I70db7e4c27f0d3da5d0af33cb491d72c312d3fa8 |
| 8 | + |
| 9 | + |
| 10 | +--- old/qtbase/configure.json |
| 11 | ++++ new/qtbase/configure.json |
| 12 | +@@ -208,11 +208,18 @@ |
| 13 | + |
| 14 | + "testTypeDependencies": { |
| 15 | + "linkerSupportsFlag": [ "use_gold_linker" ], |
| 16 | +- "verifySpec": [ "shared", "use_gold_linker", "compiler-flags", "qmakeargs", "commit" ], |
| 17 | ++ "verifySpec": [ |
| 18 | ++ "shared", |
| 19 | ++ "use_gold_linker", |
| 20 | ++ "compiler-flags", "qmakeargs", |
| 21 | ++ "simulator_and_device", |
| 22 | ++ "thread", |
| 23 | ++ "commit" ], |
| 24 | + "compile": [ "verifyspec" ], |
| 25 | + "detectPkgConfig": [ "cross_compile", "machineTuple" ], |
| 26 | + "library": [ "pkg-config", "compiler-flags" ], |
| 27 | +- "getPkgConfigVariable": [ "pkg-config" ] |
| 28 | ++ "getPkgConfigVariable": [ "pkg-config" ], |
| 29 | ++ "architecture" : [ "verifyspec" ] |
| 30 | + }, |
| 31 | + |
| 32 | + "testTypeAliases": { |
| 33 | +@@ -653,7 +660,7 @@ |
| 34 | + }, |
| 35 | + "architecture": { |
| 36 | + "label": "Architecture", |
| 37 | +- "output": [ "architecture" ] |
| 38 | ++ "output": [ "architecture", "commitConfig" ] |
| 39 | + }, |
| 40 | + "pkg-config": { |
| 41 | + "label": "Using pkg-config", |
| 42 | +diff --git a/configure.pri b/configure.pri |
| 43 | +index 33c90a8c2f..71767e29d6 100644 |
| 44 | + |
| 45 | +--- old/qtbase/configure.pri |
| 46 | ++++ new/qtbase/configure.pri |
| 47 | +@@ -642,6 +642,13 @@ defineTest(qtConfOutput_commitOptions) { |
| 48 | + write_file($$QT_BUILD_TREE/mkspecs/qdevice.pri, $${currentConfig}.output.devicePro)|error() |
| 49 | + } |
| 50 | + |
| 51 | ++# Output is written after configuring each Qt module, |
| 52 | ++# but some tests within a module might depend on the |
| 53 | ++# configuration output of previous tests. |
| 54 | ++defineTest(qtConfOutput_commitConfig) { |
| 55 | ++ qtConfProcessOutput() |
| 56 | ++} |
| 57 | ++ |
| 58 | + # type (empty or 'host'), option name, default value |
| 59 | + defineTest(processQtPath) { |
| 60 | + out_var = config.rel_input.$${2} |
| 61 | +diff --git a/mkspecs/common/macx.conf b/mkspecs/common/macx.conf |
| 62 | +index 7d4a406134..de96c12fc9 100644 |
| 63 | + |
| 64 | +--- old/qtbase/mkspecs/common/macx.conf |
| 65 | ++++ new/qtbase/mkspecs/common/macx.conf |
| 66 | +@@ -6,7 +6,6 @@ QMAKE_PLATFORM += macos osx macx |
| 67 | + QMAKE_MAC_SDK = macosx |
| 68 | + |
| 69 | + QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.12 |
| 70 | +-QMAKE_APPLE_DEVICE_ARCHS = x86_64 |
| 71 | + |
| 72 | + QT_MAC_SDK_VERSION_MIN = 10.13 |
| 73 | + QT_MAC_SDK_VERSION_MAX = 11.0 |
| 74 | +diff --git a/mkspecs/features/mac/default_post.prf b/mkspecs/features/mac/default_post.prf |
| 75 | +index d052808c14..0a89effe87 100644 |
| 76 | + |
| 77 | +--- old/qtbase/mkspecs/features/mac/default_post.prf |
| 78 | ++++ new/qtbase/mkspecs/features/mac/default_post.prf |
| 79 | +@@ -89,6 +89,11 @@ app_extension_api_only { |
| 80 | + QMAKE_LFLAGS += $$QMAKE_CFLAGS_APPLICATION_EXTENSION |
| 81 | + } |
| 82 | + |
| 83 | ++# Non-universal builds do not set QMAKE_APPLE_DEVICE_ARCHS, |
| 84 | ++# so we pick it up from what the arch test resolved instead. |
| 85 | ++isEmpty(QMAKE_APPLE_DEVICE_ARCHS): \ |
| 86 | ++ QMAKE_APPLE_DEVICE_ARCHS = $$QT_ARCH |
| 87 | ++ |
| 88 | + macx-xcode { |
| 89 | + qmake_pkginfo_typeinfo.name = QMAKE_PKGINFO_TYPEINFO |
| 90 | + !isEmpty(QMAKE_PKGINFO_TYPEINFO): \ |
| 91 | +@@ -144,9 +149,6 @@ macx-xcode { |
| 92 | + simulator: VALID_SIMULATOR_ARCHS = $$QMAKE_APPLE_SIMULATOR_ARCHS |
| 93 | + VALID_ARCHS = $$VALID_DEVICE_ARCHS $$VALID_SIMULATOR_ARCHS |
| 94 | + |
| 95 | +- isEmpty(VALID_ARCHS): \ |
| 96 | +- error("QMAKE_APPLE_DEVICE_ARCHS or QMAKE_APPLE_SIMULATOR_ARCHS must contain at least one architecture") |
| 97 | +- |
| 98 | + single_arch: VALID_ARCHS = $$first(VALID_ARCHS) |
| 99 | + |
| 100 | + ACTIVE_ARCHS = $(filter $(EXPORT_VALID_ARCHS), $(ARCHS)) |
| 101 | +diff --git a/mkspecs/features/toolchain.prf b/mkspecs/features/toolchain.prf |
| 102 | +index 5003679bd0..c7c080cb07 100644 |
| 103 | + |
| 104 | +--- old/qtbase/mkspecs/features/toolchain.prf |
| 105 | ++++ new/qtbase/mkspecs/features/toolchain.prf |
| 106 | +@@ -182,9 +182,14 @@ isEmpty($${target_prefix}.INCDIRS) { |
| 107 | + # UIKit simulator platforms will see the device SDK's sysroot in |
| 108 | + # QMAKE_DEFAULT_*DIRS, because they're handled in a single build pass. |
| 109 | + darwin { |
| 110 | +- # Clang doesn't pick up the architecture from the sysroot, and will |
| 111 | +- # default to the host architecture, so we need to manually set it. |
| 112 | +- cxx_flags += -arch $$QMAKE_APPLE_DEVICE_ARCHS |
| 113 | ++ uikit { |
| 114 | ++ # Clang doesn't automatically pick up the architecture, just because |
| 115 | ++ # we're passing the iOS sysroot below, and we will end up building the |
| 116 | ++ # test for the host architecture, resulting in linker errors when |
| 117 | ++ # linking against the iOS libraries. We work around this by passing |
| 118 | ++ # the architecture explicitly. |
| 119 | ++ cxx_flags += -arch $$first(QMAKE_APPLE_DEVICE_ARCHS) |
| 120 | ++ } |
| 121 | + |
| 122 | + uikit:macx-xcode: \ |
| 123 | + cxx_flags += -isysroot $$sdk_path_device.value |
0 commit comments