Clang: Never use toolchain defines

The known cases provide enough flags not to require
toolchain defines.

Change-Id: Ia7e08a90eca6ea9474db40683ac1e63236f8643d
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
This commit is contained in:
Ivan Donchevskii
2019-01-11 15:50:39 +01:00
parent 0348009e0e
commit 0679c2ff25
5 changed files with 8 additions and 76 deletions

View File

@@ -69,7 +69,6 @@ public:
LibClangOptionsBuilder(const ProjectPart &projectPart) LibClangOptionsBuilder(const ProjectPart &projectPart)
: CompilerOptionsBuilder(projectPart, : CompilerOptionsBuilder(projectPart,
UseSystemHeader::No, UseSystemHeader::No,
useToolChainMacros(),
UseTweakedHeaderPaths::Yes, UseTweakedHeaderPaths::Yes,
UseLanguageDefines::No, UseLanguageDefines::No,
QString(CLANG_VERSION), QString(CLANG_VERSION),
@@ -77,10 +76,10 @@ public:
{ {
} }
void addToolchainAndProjectMacros() final void addProjectMacros() final
{ {
addMacros({ProjectExplorer::Macro("Q_CREATOR_RUN", "1")}); addMacros({ProjectExplorer::Macro("Q_CREATOR_RUN", "1")});
CompilerOptionsBuilder::addToolchainAndProjectMacros(); CompilerOptionsBuilder::addProjectMacros();
} }
void addExtraOptions() final void addExtraOptions() final
@@ -339,7 +338,6 @@ void generateCompilationDB(::Utils::FileName projectDir, CppTools::ProjectInfo p
CompilerOptionsBuilder optionsBuilder(*projectPart, CompilerOptionsBuilder optionsBuilder(*projectPart,
UseSystemHeader::No, UseSystemHeader::No,
UseToolchainMacros::No,
UseTweakedHeaderPaths::No); UseTweakedHeaderPaths::No);
optionsBuilder.build(CppTools::ProjectFile::Unclassified, optionsBuilder.build(CppTools::ProjectFile::Unclassified,
CppTools::UsePrecompiledHeaders::No); CppTools::UsePrecompiledHeaders::No);

View File

@@ -193,7 +193,6 @@ static AnalyzeUnits toAnalyzeUnits(const FileInfos &fileInfos)
for (const FileInfo &fileInfo : fileInfos) { for (const FileInfo &fileInfo : fileInfos) {
CompilerOptionsBuilder optionsBuilder(*fileInfo.projectPart, CompilerOptionsBuilder optionsBuilder(*fileInfo.projectPart,
UseSystemHeader::No, UseSystemHeader::No,
CompilerOptionsBuilder::useToolChainMacros(),
UseTweakedHeaderPaths::Yes, UseTweakedHeaderPaths::Yes,
UseLanguageDefines::No, UseLanguageDefines::No,
QString(CLANG_VERSION), QString(CLANG_VERSION),

View File

@@ -96,14 +96,12 @@ QStringList clangArgsForCl(const QStringList &args)
CompilerOptionsBuilder::CompilerOptionsBuilder(const ProjectPart &projectPart, CompilerOptionsBuilder::CompilerOptionsBuilder(const ProjectPart &projectPart,
UseSystemHeader useSystemHeader, UseSystemHeader useSystemHeader,
UseToolchainMacros useToolchainMacros,
UseTweakedHeaderPaths useTweakedHeaderPaths, UseTweakedHeaderPaths useTweakedHeaderPaths,
UseLanguageDefines useLanguageDefines, UseLanguageDefines useLanguageDefines,
const QString &clangVersion, const QString &clangVersion,
const QString &clangResourceDirectory) const QString &clangResourceDirectory)
: m_projectPart(projectPart) : m_projectPart(projectPart)
, m_useSystemHeader(useSystemHeader) , m_useSystemHeader(useSystemHeader)
, m_useToolchainMacros(useToolchainMacros)
, m_useTweakedHeaderPaths(useTweakedHeaderPaths) , m_useTweakedHeaderPaths(useTweakedHeaderPaths)
, m_useLanguageDefines(useLanguageDefines) , m_useLanguageDefines(useLanguageDefines)
, m_clangVersion(clangVersion) , m_clangVersion(clangVersion)
@@ -141,12 +139,11 @@ QStringList CompilerOptionsBuilder::build(ProjectFile::Kind fileKind,
addExtraCodeModelFlags(); addExtraCodeModelFlags();
addMsvcCompatibilityVersion(); addMsvcCompatibilityVersion();
addToolchainAndProjectMacros(); addProjectMacros();
undefineClangVersionMacrosForMsvc(); undefineClangVersionMacrosForMsvc();
undefineCppLanguageFeatureMacrosForMsvc2015(); undefineCppLanguageFeatureMacrosForMsvc2015();
addDefineFunctionMacrosMsvc(); addDefineFunctionMacrosMsvc();
addToolchainFlags();
addHeaderPathOptions(); addHeaderPathOptions();
addExtraOptions(); addExtraOptions();
@@ -330,10 +327,8 @@ void CompilerOptionsBuilder::addPrecompiledHeaderOptions(UsePrecompiledHeaders u
} }
} }
void CompilerOptionsBuilder::addToolchainAndProjectMacros() void CompilerOptionsBuilder::addProjectMacros()
{ {
if (m_useToolchainMacros == UseToolchainMacros::Yes)
addMacros(m_projectPart.toolChainMacros);
addMacros(m_projectPart.projectMacros); addMacros(m_projectPart.projectMacros);
} }
@@ -662,16 +657,6 @@ void CompilerOptionsBuilder::addWrappedQtHeadersIncludePath(QStringList &list) c
} }
} }
void CompilerOptionsBuilder::addToolchainFlags()
{
// In case of MSVC we need builtin clang defines to correctly handle clang includes
if (m_projectPart.toolchainType != ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID
&& m_projectPart.toolchainType != ProjectExplorer::Constants::CLANG_CL_TOOLCHAIN_TYPEID) {
if (m_useToolchainMacros == UseToolchainMacros::Yes)
add("-undef");
}
}
void CompilerOptionsBuilder::addProjectConfigFileInclude() void CompilerOptionsBuilder::addProjectConfigFileInclude()
{ {
if (!m_projectPart.projectConfigFile.isEmpty()) { if (!m_projectPart.projectConfigFile.isEmpty()) {
@@ -701,12 +686,6 @@ void CompilerOptionsBuilder::undefineClangVersionMacrosForMsvc()
} }
} }
UseToolchainMacros CompilerOptionsBuilder::useToolChainMacros()
{
return qEnvironmentVariableIntValue("QTC_CLANG_USE_TOOLCHAIN_MACROS") ? UseToolchainMacros::Yes
: UseToolchainMacros::No;
}
void CompilerOptionsBuilder::reset() void CompilerOptionsBuilder::reset()
{ {
m_options.clear(); m_options.clear();

View File

@@ -45,7 +45,6 @@ class CPPTOOLS_EXPORT CompilerOptionsBuilder
public: public:
CompilerOptionsBuilder(const ProjectPart &projectPart, CompilerOptionsBuilder(const ProjectPart &projectPart,
UseSystemHeader useSystemHeader = UseSystemHeader::No, UseSystemHeader useSystemHeader = UseSystemHeader::No,
UseToolchainMacros useToolchainMacros = UseToolchainMacros::Yes,
UseTweakedHeaderPaths useTweakedHeaderPaths = UseTweakedHeaderPaths::Yes, UseTweakedHeaderPaths useTweakedHeaderPaths = UseTweakedHeaderPaths::Yes,
UseLanguageDefines useLanguageDefines = UseLanguageDefines::No, UseLanguageDefines useLanguageDefines = UseLanguageDefines::No,
const QString &clangVersion = QString(), const QString &clangVersion = QString(),
@@ -55,10 +54,9 @@ public:
QStringList options() const { return m_options; } QStringList options() const { return m_options; }
// Add options based on project part // Add options based on project part
virtual void addToolchainAndProjectMacros(); virtual void addProjectMacros();
void addSyntaxOnly(); void addSyntaxOnly();
void addWordWidth(); void addWordWidth();
void addToolchainFlags();
void addHeaderPathOptions(); void addHeaderPathOptions();
void addPrecompiledHeaderOptions(UsePrecompiledHeaders usePrecompiledHeaders); void addPrecompiledHeaderOptions(UsePrecompiledHeaders usePrecompiledHeaders);
void addMacros(const ProjectExplorer::Macros &macros); void addMacros(const ProjectExplorer::Macros &macros);
@@ -98,7 +96,6 @@ private:
const ProjectPart &m_projectPart; const ProjectPart &m_projectPart;
const UseSystemHeader m_useSystemHeader; const UseSystemHeader m_useSystemHeader;
const UseToolchainMacros m_useToolchainMacros;
const UseTweakedHeaderPaths m_useTweakedHeaderPaths; const UseTweakedHeaderPaths m_useTweakedHeaderPaths;
const UseLanguageDefines m_useLanguageDefines; const UseLanguageDefines m_useLanguageDefines;

View File

@@ -76,11 +76,11 @@ protected:
CppTools::CompilerOptionsBuilder compilerOptionsBuilder{projectPart}; CppTools::CompilerOptionsBuilder compilerOptionsBuilder{projectPart};
}; };
TEST_F(CompilerOptionsBuilder, AddToolchainAndProjectMacros) TEST_F(CompilerOptionsBuilder, AddProjectMacros)
{ {
compilerOptionsBuilder.addToolchainAndProjectMacros(); compilerOptionsBuilder.addProjectMacros();
ASSERT_THAT(compilerOptionsBuilder.options(), ElementsAre("-Dfoo=bar", "-DprojectFoo=projectBar")); ASSERT_THAT(compilerOptionsBuilder.options(), ElementsAre("-DprojectFoo=projectBar"));
} }
TEST_F(CompilerOptionsBuilder, CompilerFlagsFiltering_UnknownOptionsAreForwarded) TEST_F(CompilerOptionsBuilder, CompilerFlagsFiltering_UnknownOptionsAreForwarded)
@@ -90,7 +90,6 @@ TEST_F(CompilerOptionsBuilder, CompilerFlagsFiltering_UnknownOptionsAreForwarded
CppTools::CompilerOptionsBuilder compilerOptionsBuilder{part, CppTools::CompilerOptionsBuilder compilerOptionsBuilder{part,
CppTools::UseSystemHeader::No, CppTools::UseSystemHeader::No,
CppTools::UseToolchainMacros::Yes,
CppTools::UseTweakedHeaderPaths::Yes, CppTools::UseTweakedHeaderPaths::Yes,
CppTools::UseLanguageDefines::Yes}; CppTools::UseLanguageDefines::Yes};
@@ -106,7 +105,6 @@ TEST_F(CompilerOptionsBuilder, CompilerFlagsFiltering_DiagnosticOptionsAreRemove
CppTools::CompilerOptionsBuilder compilerOptionsBuilder{part, CppTools::CompilerOptionsBuilder compilerOptionsBuilder{part,
CppTools::UseSystemHeader::No, CppTools::UseSystemHeader::No,
CppTools::UseToolchainMacros::Yes,
CppTools::UseTweakedHeaderPaths::Yes, CppTools::UseTweakedHeaderPaths::Yes,
CppTools::UseLanguageDefines::Yes}; CppTools::UseLanguageDefines::Yes};
@@ -126,7 +124,6 @@ TEST_F(CompilerOptionsBuilder, CompilerFlagsFiltering_CLanguageVersionIsRewritte
CppTools::CompilerOptionsBuilder compilerOptionsBuilder{part, CppTools::CompilerOptionsBuilder compilerOptionsBuilder{part,
CppTools::UseSystemHeader::No, CppTools::UseSystemHeader::No,
CppTools::UseToolchainMacros::Yes,
CppTools::UseTweakedHeaderPaths::Yes, CppTools::UseTweakedHeaderPaths::Yes,
CppTools::UseLanguageDefines::Yes}; CppTools::UseLanguageDefines::Yes};
@@ -140,7 +137,6 @@ TEST_F(CompilerOptionsBuilder, CompilerFlagsFiltering_LanguageVersionIsExplicitl
{ {
CppTools::CompilerOptionsBuilder compilerOptionsBuilder{projectPart, CppTools::CompilerOptionsBuilder compilerOptionsBuilder{projectPart,
CppTools::UseSystemHeader::No, CppTools::UseSystemHeader::No,
CppTools::UseToolchainMacros::Yes,
CppTools::UseTweakedHeaderPaths::Yes, CppTools::UseTweakedHeaderPaths::Yes,
CppTools::UseLanguageDefines::Yes}; CppTools::UseLanguageDefines::Yes};
@@ -154,7 +150,6 @@ TEST_F(CompilerOptionsBuilder, CompilerFlagsFiltering_ClLanguageVersionIsExplici
projectPart.toolchainType = ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID; projectPart.toolchainType = ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID;
CppTools::CompilerOptionsBuilder compilerOptionsBuilder{projectPart, CppTools::CompilerOptionsBuilder compilerOptionsBuilder{projectPart,
CppTools::UseSystemHeader::No, CppTools::UseSystemHeader::No,
CppTools::UseToolchainMacros::Yes,
CppTools::UseTweakedHeaderPaths::Yes, CppTools::UseTweakedHeaderPaths::Yes,
CppTools::UseLanguageDefines::Yes}; CppTools::UseLanguageDefines::Yes};
@@ -163,27 +158,6 @@ TEST_F(CompilerOptionsBuilder, CompilerFlagsFiltering_ClLanguageVersionIsExplici
ASSERT_THAT(compilerOptionsBuilder.options(), Contains("/std:c++17")); ASSERT_THAT(compilerOptionsBuilder.options(), Contains("/std:c++17"));
} }
TEST_F(CompilerOptionsBuilder, AddToolchainAndProjectMacrosWithoutSkipingLanguageDefines)
{
CppTools::CompilerOptionsBuilder compilerOptionsBuilder{projectPart,
CppTools::UseSystemHeader::No,
CppTools::UseToolchainMacros::Yes,
CppTools::UseTweakedHeaderPaths::Yes,
CppTools::UseLanguageDefines::Yes};
compilerOptionsBuilder.addToolchainAndProjectMacros();
ASSERT_THAT(compilerOptionsBuilder.options(),
ElementsAre("-Dfoo=bar",
"-D__cplusplus=2",
"-D__STDC_VERSION__=2",
"-D_MSVC_LANG=2",
"-D_MSC_BUILD=2",
"-D_MSC_FULL_VER=1900",
"-D_MSC_VER=19",
"-DprojectFoo=projectBar"));
}
TEST_F(CompilerOptionsBuilder, AddWordWidth) TEST_F(CompilerOptionsBuilder, AddWordWidth)
{ {
compilerOptionsBuilder.addWordWidth(); compilerOptionsBuilder.addWordWidth();
@@ -191,13 +165,6 @@ TEST_F(CompilerOptionsBuilder, AddWordWidth)
ASSERT_THAT(compilerOptionsBuilder.options(), ElementsAre("-m64")); ASSERT_THAT(compilerOptionsBuilder.options(), ElementsAre("-m64"));
} }
TEST_F(CompilerOptionsBuilder, AddToolchainFlags)
{
compilerOptionsBuilder.addToolchainFlags();
ASSERT_THAT(compilerOptionsBuilder.options(), ElementsAre("-undef"));
}
TEST_F(CompilerOptionsBuilder, HeaderPathOptionsOrder) TEST_F(CompilerOptionsBuilder, HeaderPathOptionsOrder)
{ {
compilerOptionsBuilder.addHeaderPathOptions(); compilerOptionsBuilder.addHeaderPathOptions();
@@ -240,7 +207,6 @@ TEST_F(CompilerOptionsBuilder, ClangHeadersPath)
{ {
CppTools::CompilerOptionsBuilder compilerOptionsBuilder(projectPart, CppTools::CompilerOptionsBuilder compilerOptionsBuilder(projectPart,
CppTools::UseSystemHeader::No, CppTools::UseSystemHeader::No,
CppTools::UseToolchainMacros::Yes,
CppTools::UseTweakedHeaderPaths::Yes, CppTools::UseTweakedHeaderPaths::Yes,
CppTools::UseLanguageDefines::No, CppTools::UseLanguageDefines::No,
"7.0.0", "7.0.0",
@@ -270,7 +236,6 @@ TEST_F(CompilerOptionsBuilder, ClangHeadersAndCppIncludesPathsOrderMacOs)
projectPart.headerPaths.append(defaultPaths); projectPart.headerPaths.append(defaultPaths);
CppTools::CompilerOptionsBuilder compilerOptionsBuilder(projectPart, CppTools::CompilerOptionsBuilder compilerOptionsBuilder(projectPart,
CppTools::UseSystemHeader::No, CppTools::UseSystemHeader::No,
CppTools::UseToolchainMacros::Yes,
CppTools::UseTweakedHeaderPaths::Yes, CppTools::UseTweakedHeaderPaths::Yes,
CppTools::UseLanguageDefines::No, CppTools::UseLanguageDefines::No,
"7.0.0", "7.0.0",
@@ -305,7 +270,6 @@ TEST_F(CompilerOptionsBuilder, ClangHeadersAndCppIncludesPathsOrderLinux)
projectPart.toolChainTargetTriple = "x86_64-linux-gnu"; projectPart.toolChainTargetTriple = "x86_64-linux-gnu";
CppTools::CompilerOptionsBuilder compilerOptionsBuilder(projectPart, CppTools::CompilerOptionsBuilder compilerOptionsBuilder(projectPart,
CppTools::UseSystemHeader::No, CppTools::UseSystemHeader::No,
CppTools::UseToolchainMacros::Yes,
CppTools::UseTweakedHeaderPaths::Yes, CppTools::UseTweakedHeaderPaths::Yes,
CppTools::UseLanguageDefines::No, CppTools::UseLanguageDefines::No,
"7.0.0", "7.0.0",
@@ -339,7 +303,6 @@ TEST_F(CompilerOptionsBuilder, ClangHeadersAndCppIncludesPathsOrderNoVersion)
projectPart.toolChainTargetTriple = "x86_64-w64-windows-gnu"; projectPart.toolChainTargetTriple = "x86_64-w64-windows-gnu";
CppTools::CompilerOptionsBuilder compilerOptionsBuilder(projectPart, CppTools::CompilerOptionsBuilder compilerOptionsBuilder(projectPart,
CppTools::UseSystemHeader::No, CppTools::UseSystemHeader::No,
CppTools::UseToolchainMacros::Yes,
CppTools::UseTweakedHeaderPaths::Yes, CppTools::UseTweakedHeaderPaths::Yes,
CppTools::UseLanguageDefines::No, CppTools::UseLanguageDefines::No,
"7.0.0", "7.0.0",
@@ -387,7 +350,6 @@ TEST_F(CompilerOptionsBuilder, ClangHeadersAndCppIncludesPathsOrderAndroidClang)
projectPart.toolChainTargetTriple = "i686-linux-android"; projectPart.toolChainTargetTriple = "i686-linux-android";
CppTools::CompilerOptionsBuilder compilerOptionsBuilder(projectPart, CppTools::CompilerOptionsBuilder compilerOptionsBuilder(projectPart,
CppTools::UseSystemHeader::No, CppTools::UseSystemHeader::No,
CppTools::UseToolchainMacros::Yes,
CppTools::UseTweakedHeaderPaths::Yes, CppTools::UseTweakedHeaderPaths::Yes,
CppTools::UseLanguageDefines::No, CppTools::UseLanguageDefines::No,
"7.0.0", "7.0.0",
@@ -602,9 +564,7 @@ TEST_F(CompilerOptionsBuilder, BuildAllOptions)
"-std=c++17", "-std=c++17",
"-arch", "-arch",
"x86_64", "x86_64",
"-Dfoo=bar",
"-DprojectFoo=projectBar", "-DprojectFoo=projectBar",
"-undef",
"-I", "-I",
IsPartOfHeader("wrappedQtHeaders"), IsPartOfHeader("wrappedQtHeaders"),
"-I", "-I",
@@ -633,7 +593,6 @@ TEST_F(CompilerOptionsBuilder, BuildAllOptionsCl)
"/TP", "/TP",
"/std:c++17", "/std:c++17",
"-fms-compatibility-version=19.00", "-fms-compatibility-version=19.00",
"-Dfoo=bar",
"-DprojectFoo=projectBar", "-DprojectFoo=projectBar",
"-D__FUNCSIG__=\"\"", "-D__FUNCSIG__=\"\"",
"-D__FUNCTION__=\"\"", "-D__FUNCTION__=\"\"",