diff options
Diffstat (limited to 'src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp')
-rw-r--r-- | src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp b/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp index 0d8796e926..ba24c94fb9 100644 --- a/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp +++ b/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp @@ -171,6 +171,20 @@ static MSVCVersion msvcCompilerVersion(const ProjectExplorer::Abi &abi) return v; } +static void filterCompilerLinkerFlags(const ProjectExplorer::Abi &targetAbi, QStringList &flags) +{ + for (int i = 0; i < flags.size(); ) { + if (targetAbi.architecture() != ProjectExplorer::Abi::UnknownArchitecture + && flags[i] == QStringLiteral("-arch") + && i + 1 < flags.size()) { + flags.removeAt(i); + flags.removeAt(i); + } else { + ++i; + } + } +} + QVariantMap DefaultPropertyProvider::autoGeneratedProperties(const ProjectExplorer::Kit *k, const QVariantMap &defaultData) const { @@ -234,8 +248,13 @@ QVariantMap DefaultPropertyProvider::autoGeneratedProperties(const ProjectExplor data.insert(QLatin1String(CPP_TOOLCHAINPATH), cxxFileInfo.absolutePath()); if (ProjectExplorer::GccToolChain *gcc = dynamic_cast<ProjectExplorer::GccToolChain *>(tc)) { - data.insert(QLatin1String(CPP_PLATFORMCOMMONCOMPILERFLAGS), gcc->platformCodeGenFlags()); - data.insert(QLatin1String(CPP_PLATFORMLINKERFLAGS), gcc->platformLinkerFlags()); + QStringList compilerFlags = gcc->platformCodeGenFlags(); + filterCompilerLinkerFlags(targetAbi, compilerFlags); + data.insert(QLatin1String(CPP_PLATFORMCOMMONCOMPILERFLAGS), compilerFlags); + + QStringList linkerFlags = gcc->platformLinkerFlags(); + filterCompilerLinkerFlags(targetAbi, linkerFlags); + data.insert(QLatin1String(CPP_PLATFORMLINKERFLAGS), linkerFlags); } if (targetAbi.os() == ProjectExplorer::Abi::MacOS) { |