summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/plugins/cpptools/compileroptionsbuilder.cpp28
-rw-r--r--src/plugins/cpptools/compileroptionsbuilder.h31
2 files changed, 31 insertions, 28 deletions
diff --git a/src/plugins/cpptools/compileroptionsbuilder.cpp b/src/plugins/cpptools/compileroptionsbuilder.cpp
index 8ec63484f9..e722722e25 100644
--- a/src/plugins/cpptools/compileroptionsbuilder.cpp
+++ b/src/plugins/cpptools/compileroptionsbuilder.cpp
@@ -170,11 +170,6 @@ void CompilerOptionsBuilder::add(const QString &option)
m_options.append(option);
}
-void CompilerOptionsBuilder::addDefine(const ProjectExplorer::Macro &macro)
-{
- m_options.append(defineDirectiveToDefineOption(macro));
-}
-
void CompilerOptionsBuilder::addWordWidth()
{
const QString argument = m_projectPart.toolChainWordWidth == ProjectPart::WordWidth64Bit
@@ -211,7 +206,7 @@ static QString creatorResourcePath()
#ifndef UNIT_TESTS
return Core::ICore::resourcePath();
#else
- return QString();
+ return QDir::toNativeSeparators(QString::fromUtf8(QTC_RESOURCE_DIR ""));
#endif
}
@@ -221,7 +216,7 @@ static QString clangIncludeDirectory(const QString &clangVersion,
#ifndef UNIT_TESTS
return Core::ICore::clangIncludeDirectory(clangVersion, clangResourceDirectory);
#else
- return QString();
+ return QDir::toNativeSeparators(QString::fromUtf8(CLANG_RESOURCE_DIR ""));
#endif
}
@@ -238,12 +233,20 @@ static int lastIncludeIndex(const QStringList &options, const QRegularExpression
return index;
}
-static int includeIndexForResourceDirectory(const QStringList &options)
+static int includeIndexForResourceDirectory(const QStringList &options, bool isMacOs = false)
{
// include/c++/{version}, include/c++/v1 and include/g++
- const int cppIncludeIndex = lastIncludeIndex(
- options,
- QRegularExpression("\\A.*[\\/\\\\]include[\\/\\\\].*(g\\+\\+.*\\z|c\\+\\+[\\/\\\\](v1\\z|\\d+.*\\z))"));
+ static const QRegularExpression includeRegExp(
+ R"(\A.*[\/\\]include[\/\\].*(g\+\+.*\z|c\+\+[\/\\](v1\z|\d+.*\z)))");
+
+ // The same as includeRegExp but also matches /usr/local/include
+ static const QRegularExpression includeRegExpMac(
+ R"(\A(.*[\/\\]include[\/\\].*(g\+\+.*\z|c\+\+[\/\\](v1\z|\d+.*\z))))"
+ R"(|([\/\\]usr[\/\\]local[\/\\]include\z))");
+
+ const int cppIncludeIndex = lastIncludeIndex(options, isMacOs
+ ? includeRegExpMac
+ : includeRegExp);
if (cppIncludeIndex > 0)
return cppIncludeIndex + 1;
@@ -317,7 +320,8 @@ void CompilerOptionsBuilder::addHeaderPathOptions()
const QString clangIncludePath
= clangIncludeDirectory(m_clangVersion, m_clangResourceDirectory);
- int includeIndexForResourceDir = includeIndexForResourceDirectory(builtInIncludes);
+ int includeIndexForResourceDir = includeIndexForResourceDirectory(
+ builtInIncludes, m_projectPart.toolChainTargetTriple.contains("darwin"));
if (includeIndexForResourceDir >= 0) {
builtInIncludes.insert(includeIndexForResourceDir, clangIncludePath);
diff --git a/src/plugins/cpptools/compileroptionsbuilder.h b/src/plugins/cpptools/compileroptionsbuilder.h
index ba29d6e430..1274c1b860 100644
--- a/src/plugins/cpptools/compileroptionsbuilder.h
+++ b/src/plugins/cpptools/compileroptionsbuilder.h
@@ -56,33 +56,27 @@ public:
SkipBuiltIn skipBuiltInHeaderPathsAndDefines = SkipBuiltIn::No,
QString clangVersion = QString(),
QString clangResourceDirectory = QString());
- virtual ~CompilerOptionsBuilder() {}
-
- virtual void addTargetTriple();
- virtual void addExtraCodeModelFlags();
- virtual void enableExceptions();
- virtual void insertWrappedQtHeaders();
- virtual void addOptionsForLanguage(bool checkForBorlandExtensions = true);
- virtual void updateLanguageOption(ProjectFile::Kind fileKind);
-
- virtual void addExtraOptions() {}
QStringList build(ProjectFile::Kind fileKind,
PchUsage pchUsage);
QStringList options() const;
- // Add custom options
- void add(const QString &option);
- void addDefine(const ProjectExplorer::Macro &marco);
-
+ virtual void addExtraOptions() {}
// Add options based on project part
+ virtual void addToolchainAndProjectMacros();
void addWordWidth();
void addToolchainFlags();
void addHeaderPathOptions();
void addPrecompiledHeaderOptions(PchUsage pchUsage);
- virtual void addToolchainAndProjectMacros();
void addMacros(const ProjectExplorer::Macros &macros);
+ void addTargetTriple();
+ void addExtraCodeModelFlags();
+ void enableExceptions();
+ void insertWrappedQtHeaders();
+ void addOptionsForLanguage(bool checkForBorlandExtensions = true);
+ void updateLanguageOption(ProjectFile::Kind fileKind);
+
void addMsvcCompatibilityVersion();
void undefineCppLanguageFeatureMacrosForMsvc2015();
void addDefineFunctionMacrosMsvc();
@@ -97,8 +91,13 @@ protected:
virtual QString defineOption() const;
virtual QString undefineOption() const;
virtual QString includeOption() const;
+
+ // Add custom options
+ void add(const QString &option);
+
QString includeDirOptionForPath(const QString &path) const;
- const ProjectPart m_projectPart;
+
+ const ProjectPart &m_projectPart;
private:
QByteArray macroOption(const ProjectExplorer::Macro &macro) const;