Clang: Disable min and max macros

Change-Id: I75f930053ca514dbd32366c628e7e4916ba8550a
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
This commit is contained in:
Marco Bubke
2019-02-13 13:37:24 +01:00
parent 2bd0c7c276
commit 35c9e65d3e
5 changed files with 45 additions and 8 deletions

View File

@@ -48,10 +48,11 @@ public:
FilePathView outputPath = {}, FilePathView outputPath = {},
FilePathView includePchPath = {}) FilePathView includePchPath = {})
{ {
commandLine.reserve(128); commandLine.reserve(1024);
addCompiler(projectInfo.language); addCompiler(projectInfo.language);
addToolChainArguments(toolChainArguments); addToolChainArguments(toolChainArguments);
addExtraFlags();
addLanguage(projectInfo, sourceType); addLanguage(projectInfo, sourceType);
addLanguageVersion(projectInfo); addLanguageVersion(projectInfo);
addNoStdIncAndNoStdLibInc(projectInfo.language); addNoStdIncAndNoStdLibInc(projectInfo.language);
@@ -79,6 +80,8 @@ public:
commandLine.emplace_back(argument); commandLine.emplace_back(argument);
} }
void addExtraFlags() { commandLine.emplace_back("-DNOMINMAX"); }
static const char *language(const ProjectInfo &projectInfo, InputFileType sourceType) static const char *language(const ProjectInfo &projectInfo, InputFileType sourceType)
{ {
switch (projectInfo.language) { switch (projectInfo.language) {

View File

@@ -76,8 +76,6 @@ bool PchCreator::generatePch(NativeFilePathView path, Utils::SmallStringView con
{ {
clang::tooling::ClangTool tool = m_clangTool.createOutputTool(); clang::tooling::ClangTool tool = m_clangTool.createOutputTool();
NativeFilePath headerFilePath{m_environment.pchBuildDirectory().toStdString(), "dummy.h"};
auto action = std::make_unique<GeneratePCHActionFactory>(llvm::StringRef{path.data(), auto action = std::make_unique<GeneratePCHActionFactory>(llvm::StringRef{path.data(),
path.size()}, path.size()},
llvm::StringRef{content.data(), llvm::StringRef{content.data(),

View File

@@ -139,6 +139,7 @@ TYPED_TEST(CommandLineBuilder, CHeader)
ASSERT_THAT(builder.commandLine, ASSERT_THAT(builder.commandLine,
ElementsAre("clang", ElementsAre("clang",
"-DNOMINMAX",
"-x", "-x",
"c-header", "c-header",
"-std=c11", "-std=c11",
@@ -154,7 +155,7 @@ TYPED_TEST(CommandLineBuilder, CSource)
Builder<TypeParam> builder{this->emptyProjectInfo, {}, InputFileType::Source, "/source/file.c"}; Builder<TypeParam> builder{this->emptyProjectInfo, {}, InputFileType::Source, "/source/file.c"};
ASSERT_THAT(builder.commandLine, 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) TYPED_TEST(CommandLineBuilder, ObjectiveCHeader)
@@ -167,6 +168,7 @@ TYPED_TEST(CommandLineBuilder, ObjectiveCHeader)
ASSERT_THAT(builder.commandLine, ASSERT_THAT(builder.commandLine,
ElementsAre("clang", ElementsAre("clang",
"-DNOMINMAX",
"-x", "-x",
"objective-c-header", "objective-c-header",
"-std=c11", "-std=c11",
@@ -184,6 +186,7 @@ TYPED_TEST(CommandLineBuilder, ObjectiveCSource)
ASSERT_THAT(builder.commandLine, ASSERT_THAT(builder.commandLine,
ElementsAre("clang", ElementsAre("clang",
"-DNOMINMAX",
"-x", "-x",
"objective-c", "objective-c",
"-std=c11", "-std=c11",
@@ -200,6 +203,7 @@ TYPED_TEST(CommandLineBuilder, CppHeader)
ASSERT_THAT(builder.commandLine, ASSERT_THAT(builder.commandLine,
ElementsAre("clang++", ElementsAre("clang++",
"-DNOMINMAX",
"-x", "-x",
"c++-header", "c++-header",
"-std=c++98", "-std=c++98",
@@ -215,9 +219,15 @@ TYPED_TEST(CommandLineBuilder, CppSource)
Builder<TypeParam> builder{this->emptyProjectInfo, {}, InputFileType::Source, "/source/file.cpp"}; Builder<TypeParam> builder{this->emptyProjectInfo, {}, InputFileType::Source, "/source/file.cpp"};
ASSERT_THAT( ASSERT_THAT(builder.commandLine,
builder.commandLine, ElementsAre("clang++",
ElementsAre("clang++", "-x", "c++", "-std=c++98", "-nostdinc", "-nostdinc++", "/source/file.cpp")); "-DNOMINMAX",
"-x",
"c++",
"-std=c++98",
"-nostdinc",
"-nostdinc++",
"/source/file.cpp"));
} }
TYPED_TEST(CommandLineBuilder, ObjectiveCppHeader) TYPED_TEST(CommandLineBuilder, ObjectiveCppHeader)
@@ -230,6 +240,7 @@ TYPED_TEST(CommandLineBuilder, ObjectiveCppHeader)
ASSERT_THAT(builder.commandLine, ASSERT_THAT(builder.commandLine,
ElementsAre("clang++", ElementsAre("clang++",
"-DNOMINMAX",
"-x", "-x",
"objective-c++-header", "objective-c++-header",
"-std=c++98", "-std=c++98",
@@ -248,6 +259,7 @@ TYPED_TEST(CommandLineBuilder, ObjectiveCppSource)
ASSERT_THAT(builder.commandLine, ASSERT_THAT(builder.commandLine,
ElementsAre("clang++", ElementsAre("clang++",
"-DNOMINMAX",
"-x", "-x",
"objective-c++", "objective-c++",
"-std=c++98", "-std=c++98",
@@ -480,6 +492,7 @@ TYPED_TEST(CommandLineBuilder, IncludesOrder)
ASSERT_THAT(builder.commandLine, ASSERT_THAT(builder.commandLine,
ElementsAre("clang++", ElementsAre("clang++",
"-DNOMINMAX",
"-x", "-x",
"c++-header", "c++-header",
"-std=c++11", "-std=c++11",
@@ -505,7 +518,13 @@ TYPED_TEST(CommandLineBuilder, EmptySourceFile)
Builder<TypeParam> builder{this->emptyProjectInfo, {}, {}}; Builder<TypeParam> builder{this->emptyProjectInfo, {}, {}};
ASSERT_THAT(builder.commandLine, 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) TYPED_TEST(CommandLineBuilder, SourceFile)
@@ -514,6 +533,7 @@ TYPED_TEST(CommandLineBuilder, SourceFile)
ASSERT_THAT(builder.commandLine, ASSERT_THAT(builder.commandLine,
ElementsAre("clang++", ElementsAre("clang++",
"-DNOMINMAX",
"-x", "-x",
"c++-header", "c++-header",
"-std=c++98", "-std=c++98",
@@ -529,6 +549,7 @@ TYPED_TEST(CommandLineBuilder, EmptyOutputFile)
ASSERT_THAT(builder.commandLine, ASSERT_THAT(builder.commandLine,
ElementsAre("clang++", ElementsAre("clang++",
"-DNOMINMAX",
"-x", "-x",
"c++-header", "c++-header",
"-std=c++98", "-std=c++98",
@@ -547,6 +568,7 @@ TYPED_TEST(CommandLineBuilder, OutputFile)
ASSERT_THAT(builder.commandLine, ASSERT_THAT(builder.commandLine,
ElementsAre("clang++", ElementsAre("clang++",
"-DNOMINMAX",
"-x", "-x",
"c++-header", "c++-header",
"-std=c++98", "-std=c++98",
@@ -568,6 +590,7 @@ TYPED_TEST(CommandLineBuilder, IncludePchPath)
ASSERT_THAT(builder.commandLine, ASSERT_THAT(builder.commandLine,
ElementsAre("clang++", ElementsAre("clang++",
"-DNOMINMAX",
"-x", "-x",
"c++-header", "c++-header",
"-std=c++98", "-std=c++98",
@@ -590,6 +613,7 @@ TYPED_TEST(CommandLineBuilder, CompilerMacros)
ASSERT_THAT(builder.commandLine, ASSERT_THAT(builder.commandLine,
ElementsAre("clang++", ElementsAre("clang++",
"-DNOMINMAX",
"-x", "-x",
"c++-header", "c++-header",
"-std=c++98", "-std=c++98",

View File

@@ -134,6 +134,7 @@ TEST_F(PchCreator, CreateProjectPartClangCompilerArguments)
ASSERT_THAT(arguments, ASSERT_THAT(arguments,
ElementsAre("clang++", ElementsAre("clang++",
"-DNOMINMAX",
"-x", "-x",
"c++-header", "c++-header",
"-std=c++98", "-std=c++98",
@@ -157,6 +158,7 @@ TEST_F(PchCreator, CreateProjectPartClangCompilerArgumentsWithSystemPch)
ASSERT_THAT(arguments, ASSERT_THAT(arguments,
ElementsAre("clang++", ElementsAre("clang++",
"-DNOMINMAX",
"-x", "-x",
"c++-header", "c++-header",
"-std=c++98", "-std=c++98",

View File

@@ -267,6 +267,7 @@ TEST_F(SymbolIndexer, UpdateProjectPartsCallsAddFilesInCollector)
setFile(main1PathId, setFile(main1PathId,
ElementsAre("clang++", ElementsAre("clang++",
"-Wno-pragma-once-outside-header", "-Wno-pragma-once-outside-header",
"-DNOMINMAX",
"-x", "-x",
"c++", "c++",
"-std=c++14", "-std=c++14",
@@ -297,6 +298,7 @@ TEST_F(SymbolIndexer, UpdateProjectPartsCallsAddFilesWithPrecompiledHeaderInColl
setFile(main1PathId, setFile(main1PathId,
ElementsAre("clang++", ElementsAre("clang++",
"-Wno-pragma-once-outside-header", "-Wno-pragma-once-outside-header",
"-DNOMINMAX",
"-x", "-x",
"c++", "c++",
"-std=c++14", "-std=c++14",
@@ -330,6 +332,7 @@ TEST_F(SymbolIndexer, UpdateProjectPartsCallsAddFilesWithoutPrecompiledHeaderInC
setFile(main1PathId, setFile(main1PathId,
ElementsAre("clang++", ElementsAre("clang++",
"-Wno-pragma-once-outside-header", "-Wno-pragma-once-outside-header",
"-DNOMINMAX",
"-x", "-x",
"c++", "c++",
"-std=c++14", "-std=c++14",
@@ -510,6 +513,7 @@ TEST_F(SymbolIndexer, UpdateProjectPartsCallsInOrderWithoutProjectPartArtifact)
setFile(main1PathId, setFile(main1PathId,
ElementsAre("clang++", ElementsAre("clang++",
"-Wno-pragma-once-outside-header", "-Wno-pragma-once-outside-header",
"-DNOMINMAX",
"-x", "-x",
"c++", "c++",
"-std=c++14", "-std=c++14",
@@ -562,6 +566,7 @@ TEST_F(SymbolIndexer, UpdateProjectPartsCallsInOrderWithProjectPartArtifact)
setFile(Eq(main1PathId), setFile(Eq(main1PathId),
ElementsAre("clang++", ElementsAre("clang++",
"-Wno-pragma-once-outside-header", "-Wno-pragma-once-outside-header",
"-DNOMINMAX",
"-x", "-x",
"c++", "c++",
"-std=c++14", "-std=c++14",
@@ -616,6 +621,7 @@ TEST_F(SymbolIndexer, UpdateProjectPartsCallsInOrderButGetsAnErrorForCollectingS
setFile(main1PathId, setFile(main1PathId,
ElementsAre("clang++", ElementsAre("clang++",
"-Wno-pragma-once-outside-header", "-Wno-pragma-once-outside-header",
"-DNOMINMAX",
"-x", "-x",
"c++", "c++",
"-std=c++14", "-std=c++14",
@@ -673,6 +679,7 @@ TEST_F(SymbolIndexer, UpdateChangedPathCallsInOrder)
setFile(Eq(sourceFileIds[0]), setFile(Eq(sourceFileIds[0]),
ElementsAre("clang++", ElementsAre("clang++",
"-DFOO", "-DFOO",
"-DNOMINMAX",
"-x", "-x",
"c++", "c++",
"-std=c++14", "-std=c++14",
@@ -736,6 +743,7 @@ TEST_F(SymbolIndexer, UpdateChangedPathCallsInOrderButGetsAnErrorForCollectingSy
setFile(Eq(sourceFileIds[0]), setFile(Eq(sourceFileIds[0]),
ElementsAre("clang++", ElementsAre("clang++",
"-DFOO", "-DFOO",
"-DNOMINMAX",
"-x", "-x",
"c++", "c++",
"-std=c++14", "-std=c++14",
@@ -779,6 +787,7 @@ TEST_F(SymbolIndexer, UpdateChangedPathIsUsingPrecompiledHeader)
setFile(Eq(sourceFileIds[0]), setFile(Eq(sourceFileIds[0]),
ElementsAre("clang++", ElementsAre("clang++",
"-DFOO", "-DFOO",
"-DNOMINMAX",
"-x", "-x",
"c++", "c++",
"-std=c++14", "-std=c++14",
@@ -814,6 +823,7 @@ TEST_F(SymbolIndexer, UpdateChangedPathIsNotUsingPrecompiledHeaderIfItNotExists)
setFile(Eq(sourceFileIds[0]), setFile(Eq(sourceFileIds[0]),
ElementsAre("clang++", ElementsAre("clang++",
"-DFOO", "-DFOO",
"-DNOMINMAX",
"-x", "-x",
"c++", "c++",
"-std=c++14", "-std=c++14",