diff --git a/src/libs/clangsupport/commandlinebuilder.h b/src/libs/clangsupport/commandlinebuilder.h index aa384f1180d..7367f080360 100644 --- a/src/libs/clangsupport/commandlinebuilder.h +++ b/src/libs/clangsupport/commandlinebuilder.h @@ -48,10 +48,11 @@ public: FilePathView outputPath = {}, FilePathView includePchPath = {}) { - commandLine.reserve(128); + commandLine.reserve(1024); addCompiler(projectInfo.language); addToolChainArguments(toolChainArguments); + addExtraFlags(); addLanguage(projectInfo, sourceType); addLanguageVersion(projectInfo); addNoStdIncAndNoStdLibInc(projectInfo.language); @@ -79,6 +80,8 @@ public: commandLine.emplace_back(argument); } + void addExtraFlags() { commandLine.emplace_back("-DNOMINMAX"); } + static const char *language(const ProjectInfo &projectInfo, InputFileType sourceType) { switch (projectInfo.language) { diff --git a/src/tools/clangpchmanagerbackend/source/pchcreator.cpp b/src/tools/clangpchmanagerbackend/source/pchcreator.cpp index 71a033d67ce..b8227ce9645 100644 --- a/src/tools/clangpchmanagerbackend/source/pchcreator.cpp +++ b/src/tools/clangpchmanagerbackend/source/pchcreator.cpp @@ -76,8 +76,6 @@ bool PchCreator::generatePch(NativeFilePathView path, Utils::SmallStringView con { clang::tooling::ClangTool tool = m_clangTool.createOutputTool(); - NativeFilePath headerFilePath{m_environment.pchBuildDirectory().toStdString(), "dummy.h"}; - auto action = std::make_unique(llvm::StringRef{path.data(), path.size()}, llvm::StringRef{content.data(), diff --git a/tests/unit/unittest/commandlinebuilder-test.cpp b/tests/unit/unittest/commandlinebuilder-test.cpp index c6bdd33d3fb..8eb7fafa3c3 100644 --- a/tests/unit/unittest/commandlinebuilder-test.cpp +++ b/tests/unit/unittest/commandlinebuilder-test.cpp @@ -139,6 +139,7 @@ TYPED_TEST(CommandLineBuilder, CHeader) ASSERT_THAT(builder.commandLine, ElementsAre("clang", + "-DNOMINMAX", "-x", "c-header", "-std=c11", @@ -154,7 +155,7 @@ TYPED_TEST(CommandLineBuilder, CSource) Builder builder{this->emptyProjectInfo, {}, InputFileType::Source, "/source/file.c"}; ASSERT_THAT(builder.commandLine, - ElementsAre("clang", "-x", "c", "-std=c11", "-nostdinc", "/source/file.c")); + ElementsAre("clang", "-DNOMINMAX", "-x", "c", "-std=c11", "-nostdinc", "/source/file.c")); } TYPED_TEST(CommandLineBuilder, ObjectiveCHeader) @@ -167,6 +168,7 @@ TYPED_TEST(CommandLineBuilder, ObjectiveCHeader) ASSERT_THAT(builder.commandLine, ElementsAre("clang", + "-DNOMINMAX", "-x", "objective-c-header", "-std=c11", @@ -184,6 +186,7 @@ TYPED_TEST(CommandLineBuilder, ObjectiveCSource) ASSERT_THAT(builder.commandLine, ElementsAre("clang", + "-DNOMINMAX", "-x", "objective-c", "-std=c11", @@ -200,6 +203,7 @@ TYPED_TEST(CommandLineBuilder, CppHeader) ASSERT_THAT(builder.commandLine, ElementsAre("clang++", + "-DNOMINMAX", "-x", "c++-header", "-std=c++98", @@ -215,9 +219,15 @@ TYPED_TEST(CommandLineBuilder, CppSource) Builder builder{this->emptyProjectInfo, {}, InputFileType::Source, "/source/file.cpp"}; - ASSERT_THAT( - builder.commandLine, - ElementsAre("clang++", "-x", "c++", "-std=c++98", "-nostdinc", "-nostdinc++", "/source/file.cpp")); + ASSERT_THAT(builder.commandLine, + ElementsAre("clang++", + "-DNOMINMAX", + "-x", + "c++", + "-std=c++98", + "-nostdinc", + "-nostdinc++", + "/source/file.cpp")); } TYPED_TEST(CommandLineBuilder, ObjectiveCppHeader) @@ -230,6 +240,7 @@ TYPED_TEST(CommandLineBuilder, ObjectiveCppHeader) ASSERT_THAT(builder.commandLine, ElementsAre("clang++", + "-DNOMINMAX", "-x", "objective-c++-header", "-std=c++98", @@ -248,6 +259,7 @@ TYPED_TEST(CommandLineBuilder, ObjectiveCppSource) ASSERT_THAT(builder.commandLine, ElementsAre("clang++", + "-DNOMINMAX", "-x", "objective-c++", "-std=c++98", @@ -480,6 +492,7 @@ TYPED_TEST(CommandLineBuilder, IncludesOrder) ASSERT_THAT(builder.commandLine, ElementsAre("clang++", + "-DNOMINMAX", "-x", "c++-header", "-std=c++11", @@ -505,7 +518,13 @@ TYPED_TEST(CommandLineBuilder, EmptySourceFile) Builder builder{this->emptyProjectInfo, {}, {}}; ASSERT_THAT(builder.commandLine, - ElementsAre("clang++", "-x", "c++-header", "-std=c++98", "-nostdinc", "-nostdinc++")); + ElementsAre("clang++", + "-DNOMINMAX", + "-x", + "c++-header", + "-std=c++98", + "-nostdinc", + "-nostdinc++")); } TYPED_TEST(CommandLineBuilder, SourceFile) @@ -514,6 +533,7 @@ TYPED_TEST(CommandLineBuilder, SourceFile) ASSERT_THAT(builder.commandLine, ElementsAre("clang++", + "-DNOMINMAX", "-x", "c++-header", "-std=c++98", @@ -529,6 +549,7 @@ TYPED_TEST(CommandLineBuilder, EmptyOutputFile) ASSERT_THAT(builder.commandLine, ElementsAre("clang++", + "-DNOMINMAX", "-x", "c++-header", "-std=c++98", @@ -547,6 +568,7 @@ TYPED_TEST(CommandLineBuilder, OutputFile) ASSERT_THAT(builder.commandLine, ElementsAre("clang++", + "-DNOMINMAX", "-x", "c++-header", "-std=c++98", @@ -568,6 +590,7 @@ TYPED_TEST(CommandLineBuilder, IncludePchPath) ASSERT_THAT(builder.commandLine, ElementsAre("clang++", + "-DNOMINMAX", "-x", "c++-header", "-std=c++98", @@ -590,6 +613,7 @@ TYPED_TEST(CommandLineBuilder, CompilerMacros) ASSERT_THAT(builder.commandLine, ElementsAre("clang++", + "-DNOMINMAX", "-x", "c++-header", "-std=c++98", diff --git a/tests/unit/unittest/pchcreator-test.cpp b/tests/unit/unittest/pchcreator-test.cpp index 9c675c873dc..d891a089871 100644 --- a/tests/unit/unittest/pchcreator-test.cpp +++ b/tests/unit/unittest/pchcreator-test.cpp @@ -134,6 +134,7 @@ TEST_F(PchCreator, CreateProjectPartClangCompilerArguments) ASSERT_THAT(arguments, ElementsAre("clang++", + "-DNOMINMAX", "-x", "c++-header", "-std=c++98", @@ -157,6 +158,7 @@ TEST_F(PchCreator, CreateProjectPartClangCompilerArgumentsWithSystemPch) ASSERT_THAT(arguments, ElementsAre("clang++", + "-DNOMINMAX", "-x", "c++-header", "-std=c++98", diff --git a/tests/unit/unittest/symbolindexer-test.cpp b/tests/unit/unittest/symbolindexer-test.cpp index 0e4e2072cdb..9283eea8b6c 100644 --- a/tests/unit/unittest/symbolindexer-test.cpp +++ b/tests/unit/unittest/symbolindexer-test.cpp @@ -267,6 +267,7 @@ TEST_F(SymbolIndexer, UpdateProjectPartsCallsAddFilesInCollector) setFile(main1PathId, ElementsAre("clang++", "-Wno-pragma-once-outside-header", + "-DNOMINMAX", "-x", "c++", "-std=c++14", @@ -297,6 +298,7 @@ TEST_F(SymbolIndexer, UpdateProjectPartsCallsAddFilesWithPrecompiledHeaderInColl setFile(main1PathId, ElementsAre("clang++", "-Wno-pragma-once-outside-header", + "-DNOMINMAX", "-x", "c++", "-std=c++14", @@ -330,6 +332,7 @@ TEST_F(SymbolIndexer, UpdateProjectPartsCallsAddFilesWithoutPrecompiledHeaderInC setFile(main1PathId, ElementsAre("clang++", "-Wno-pragma-once-outside-header", + "-DNOMINMAX", "-x", "c++", "-std=c++14", @@ -510,6 +513,7 @@ TEST_F(SymbolIndexer, UpdateProjectPartsCallsInOrderWithoutProjectPartArtifact) setFile(main1PathId, ElementsAre("clang++", "-Wno-pragma-once-outside-header", + "-DNOMINMAX", "-x", "c++", "-std=c++14", @@ -562,6 +566,7 @@ TEST_F(SymbolIndexer, UpdateProjectPartsCallsInOrderWithProjectPartArtifact) setFile(Eq(main1PathId), ElementsAre("clang++", "-Wno-pragma-once-outside-header", + "-DNOMINMAX", "-x", "c++", "-std=c++14", @@ -616,6 +621,7 @@ TEST_F(SymbolIndexer, UpdateProjectPartsCallsInOrderButGetsAnErrorForCollectingS setFile(main1PathId, ElementsAre("clang++", "-Wno-pragma-once-outside-header", + "-DNOMINMAX", "-x", "c++", "-std=c++14", @@ -673,6 +679,7 @@ TEST_F(SymbolIndexer, UpdateChangedPathCallsInOrder) setFile(Eq(sourceFileIds[0]), ElementsAre("clang++", "-DFOO", + "-DNOMINMAX", "-x", "c++", "-std=c++14", @@ -736,6 +743,7 @@ TEST_F(SymbolIndexer, UpdateChangedPathCallsInOrderButGetsAnErrorForCollectingSy setFile(Eq(sourceFileIds[0]), ElementsAre("clang++", "-DFOO", + "-DNOMINMAX", "-x", "c++", "-std=c++14", @@ -779,6 +787,7 @@ TEST_F(SymbolIndexer, UpdateChangedPathIsUsingPrecompiledHeader) setFile(Eq(sourceFileIds[0]), ElementsAre("clang++", "-DFOO", + "-DNOMINMAX", "-x", "c++", "-std=c++14", @@ -814,6 +823,7 @@ TEST_F(SymbolIndexer, UpdateChangedPathIsNotUsingPrecompiledHeaderIfItNotExists) setFile(Eq(sourceFileIds[0]), ElementsAre("clang++", "-DFOO", + "-DNOMINMAX", "-x", "c++", "-std=c++14",