From 6954e511744f05f71cee8091c6beee06606e0c59 Mon Sep 17 00:00:00 2001 From: BogDan Vatra Date: Mon, 2 Dec 2019 13:59:07 +0200 Subject: [PATCH] Android: Don't add contains(ANDROID_TARGET_ARCH,..) scope for Qt 5.14 Starting with Qt 5.14 we don't need "contains(ANDROID_TARGET_ARCH" scope as we are doing multi abi builds in one go, therefore contains(ANDROID_TARGET_ARCH,...) won't work anymore. Fixes: QTBUG-79948 Change-Id: Icc989e4dfd48c765340569dcb547e8d0d2b1e8f1 Reviewed-by: Cristian Adam --- src/plugins/qmakeprojectmanager/qmakenodes.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/plugins/qmakeprojectmanager/qmakenodes.cpp b/src/plugins/qmakeprojectmanager/qmakenodes.cpp index c2a15c9eaf9..0d7f5f6a064 100644 --- a/src/plugins/qmakeprojectmanager/qmakenodes.cpp +++ b/src/plugins/qmakeprojectmanager/qmakenodes.cpp @@ -32,6 +32,9 @@ #include #include +#include +#include + #include #include @@ -358,11 +361,16 @@ bool QmakeProFileNode::setData(Core::Id role, const QVariant &value) const QmakeProFile *pro = proFile(); if (!pro) return false; - - const QString arch = pro->singleVariableValue(Variable::AndroidArch); - const QString scope = "contains(ANDROID_TARGET_ARCH," + arch + ')'; - auto flags = QmakeProjectManager::Internal::ProWriter::ReplaceValues - | QmakeProjectManager::Internal::ProWriter::MultiLine; + QString scope; + int flags = QmakeProjectManager::Internal::ProWriter::ReplaceValues; + if (Target *target = m_project->activeTarget()) { + QtSupport::BaseQtVersion *version = QtSupport::QtKitAspect::qtVersion(target->kit()); + if (version && version->qtVersion() < QtSupport::QtVersionNumber(5, 14, 0)) { + const QString arch = pro->singleVariableValue(Variable::AndroidArch); + scope = "contains(ANDROID_TARGET_ARCH," + arch + ')'; + flags |= QmakeProjectManager::Internal::ProWriter::MultiLine; + } + } if (role == Android::Constants::AndroidExtraLibs) return pro->setProVariable("ANDROID_EXTRA_LIBS", value.toStringList(), scope, flags);