aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Bubke <marco.bubke@qt.io>2019-05-06 15:58:39 +0200
committerMarco Bubke <marco.bubke@qt.io>2019-06-05 13:54:21 +0000
commite904fc202cca96ca4f1e48a479cc792650212b07 (patch)
tree9ec740260d3a36a393f4c4f4aba415010fccbe4f
parent0251d610f1e77714b44f8d8a5a5275e6b13af1dd (diff)
Clang: Filter macro QT_TESTCASE_BUILDDIR out
We have to universalize it later with a UI so that user can set their own macros. Change-Id: I5385c3c1b01dbf77a1cbc2431103fcdea3f96118 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io> Reviewed-by: Cristian Adam <cristian.adam@qt.io>
-rw-r--r--src/plugins/clangpchmanager/projectupdater.cpp16
-rw-r--r--tests/unit/unittest/projectupdater-test.cpp8
2 files changed, 24 insertions, 0 deletions
diff --git a/src/plugins/clangpchmanager/projectupdater.cpp b/src/plugins/clangpchmanager/projectupdater.cpp
index df611ef1bc..3d340aea88 100644
--- a/src/plugins/clangpchmanager/projectupdater.cpp
+++ b/src/plugins/clangpchmanager/projectupdater.cpp
@@ -156,6 +156,7 @@ QStringList ProjectUpdater::toolChainArguments(CppTools::ProjectPart *projectPar
// builder.addTargetTriple(); TODO resarch why target triples are different
builder.addExtraCodeModelFlags();
builder.undefineClangVersionMacrosForMsvc();
+
builder.undefineCppLanguageFeatureMacrosForMsvc2015();
builder.addProjectConfigFileInclude();
builder.addMsvcCompatibilityVersion();
@@ -163,6 +164,19 @@ QStringList ProjectUpdater::toolChainArguments(CppTools::ProjectPart *projectPar
return builder.options();
}
+namespace {
+void cleanupMacros(ClangBackEnd::CompilerMacros &macros)
+{
+ auto newEnd = std::partition(macros.begin(),
+ macros.end(),
+ [](const ClangBackEnd::CompilerMacro &macro) {
+ return macro.key != "QT_TESTCASE_BUILDDIR";
+ });
+
+ macros.erase(newEnd, macros.end());
+}
+} // namespace
+
ClangBackEnd::CompilerMacros ProjectUpdater::createCompilerMacros(const ProjectExplorer::Macros &projectMacros)
{
int index = 0;
@@ -171,6 +185,8 @@ ClangBackEnd::CompilerMacros ProjectUpdater::createCompilerMacros(const ProjectE
return ClangBackEnd::CompilerMacro{macro.key, macro.value, ++index};
});
+ cleanupMacros(macros);
+
std::sort(macros.begin(), macros.end());
return macros;
diff --git a/tests/unit/unittest/projectupdater-test.cpp b/tests/unit/unittest/projectupdater-test.cpp
index d5da706b55..960a256469 100644
--- a/tests/unit/unittest/projectupdater-test.cpp
+++ b/tests/unit/unittest/projectupdater-test.cpp
@@ -310,6 +310,14 @@ TEST_F(ProjectUpdater, CreateSortedCompilerMacros)
CompilerMacro{"DEFINE", "1", 3}));
}
+TEST_F(ProjectUpdater, FilterCompilerMacros)
+{
+ auto paths = updater.createCompilerMacros(
+ {{"DEFINE", "1"}, {"QT_TESTCASE_BUILDDIR", "2"}, {"BAR", "1"}});
+
+ ASSERT_THAT(paths, ElementsAre(CompilerMacro{"BAR", "1", 1}, CompilerMacro{"DEFINE", "1", 3}));
+}
+
TEST_F(ProjectUpdater, CreateSortedIncludeSearchPaths)
{
CppTools::ProjectPart projectPart;