From e904fc202cca96ca4f1e48a479cc792650212b07 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Mon, 6 May 2019 15:58:39 +0200 Subject: [PATCH] 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 Reviewed-by: Cristian Adam --- src/plugins/clangpchmanager/projectupdater.cpp | 16 ++++++++++++++++ tests/unit/unittest/projectupdater-test.cpp | 8 ++++++++ 2 files changed, 24 insertions(+) diff --git a/src/plugins/clangpchmanager/projectupdater.cpp b/src/plugins/clangpchmanager/projectupdater.cpp index df611ef1bc7..3d340aea88b 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 ¯os) +{ + auto newEnd = std::partition(macros.begin(), + macros.end(), + [](const ClangBackEnd::CompilerMacro ¯o) { + 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 d5da706b556..960a2564697 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;