aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/tools/architectures.cpp
diff options
context:
space:
mode:
authorJake Petroules <jake.petroules@qt.io>2016-12-08 13:10:04 -0800
committerJake Petroules <jake.petroules@qt.io>2016-12-09 19:21:06 +0000
commit574d4ef812f9dcbb54ce659d2c6f247be773d0de (patch)
tree0b95cc4b4409fba6ee8f27e2e2cdf312e7604b69 /src/lib/corelib/tools/architectures.cpp
parentbabbf2156579e6e0bbdac973aa5fc8c30d00b806 (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.cpp23
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;