diff options
author | Jake Petroules <jake.petroules@qt.io> | 2016-12-08 13:10:04 -0800 |
---|---|---|
committer | Jake Petroules <jake.petroules@qt.io> | 2016-12-09 19:21:06 +0000 |
commit | 574d4ef812f9dcbb54ce659d2c6f247be773d0de (patch) | |
tree | 0b95cc4b4409fba6ee8f27e2e2cdf312e7604b69 /src/lib/corelib/tools/architectures.cpp | |
parent | babbf2156579e6e0bbdac973aa5fc8c30d00b806 (diff) |
Fix passing -arch x86_64h or -arch armv7 to Clang for Apple targets
This fixes a regression `clang: error: invalid arch name '-arch armv7a'`
when building for iOS armv7, which affects Qt Creator in particular.
Expand the scope of the deploymentTarget autotest to verify it does not
happen again.
Change-Id: Ic2689ec4474f74642d3de641b57a52854d2a8bdc
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/lib/corelib/tools/architectures.cpp')
-rw-r--r-- | src/lib/corelib/tools/architectures.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/lib/corelib/tools/architectures.cpp b/src/lib/corelib/tools/architectures.cpp index ca43b90c7..02f0fc868 100644 --- a/src/lib/corelib/tools/architectures.cpp +++ b/src/lib/corelib/tools/architectures.cpp @@ -46,6 +46,29 @@ namespace qbs { +QString canonicalTargetArchitecture(const QString &architecture, + const QString &vendor, + const QString &system, + const QString &abi) +{ + const QString arch = canonicalArchitecture(architecture); + const bool isApple = (vendor == QStringLiteral("apple") + || system == QStringLiteral("darwin") + || system == QStringLiteral("macosx") + || system == QStringLiteral("ios") + || system == QStringLiteral("tvos") + || system == QStringLiteral("watchos") + || abi == QStringLiteral("macho")); + + if (arch == QStringLiteral("armv7a") && isApple) + return QStringLiteral("armv7"); + + if (arch == QStringLiteral("x86")) + return QStringLiteral("i386"); + + return arch; +} + QString canonicalArchitecture(const QString &architecture) { QMap<QString, QStringList> archMap; |