aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/projectexplorer/gcctoolchain.cpp
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2019-07-05 16:58:07 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2019-07-12 09:13:42 +0000
commitf7520b7d991c34b3d8e3d1d726dc0b606f32c835 (patch)
tree08771fbd6e8a14a5bf8a7724ac624d0493f55d78 /src/plugins/projectexplorer/gcctoolchain.cpp
parent6e1595c1b36e8bb0abf5dfff55a60b56bc1c481b (diff)
Make the project managers tell the code model about include paths
... from the environment. Fixes: QTCREATORBUG-17985 Change-Id: I9b54e550121cfcc0684a6e173337d59d235c6107 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Diffstat (limited to 'src/plugins/projectexplorer/gcctoolchain.cpp')
-rw-r--r--src/plugins/projectexplorer/gcctoolchain.cpp37
1 files changed, 20 insertions, 17 deletions
diff --git a/src/plugins/projectexplorer/gcctoolchain.cpp b/src/plugins/projectexplorer/gcctoolchain.cpp
index 97a2645ec61..2072994af21 100644
--- a/src/plugins/projectexplorer/gcctoolchain.cpp
+++ b/src/plugins/projectexplorer/gcctoolchain.cpp
@@ -574,7 +574,7 @@ HeaderPaths GccToolChain::builtInHeaderPaths(const Utils::Environment &env,
if (!originalTargetTriple.isEmpty())
arguments << "-target" << originalTargetTriple;
- const Utils::optional<HeaderPaths> cachedPaths = headerCache->check(arguments);
+ const Utils::optional<HeaderPaths> cachedPaths = headerCache->check(qMakePair(env, arguments));
if (cachedPaths)
return cachedPaths.value();
@@ -582,7 +582,7 @@ HeaderPaths GccToolChain::builtInHeaderPaths(const Utils::Environment &env,
arguments,
env.toStringList());
extraHeaderPathsFunction(paths);
- headerCache->insert(arguments, paths);
+ headerCache->insert(qMakePair(env, arguments), paths);
qCDebug(gccLog) << "Reporting header paths to code model:";
for (const HeaderPath &hp : paths) {
@@ -594,14 +594,15 @@ HeaderPaths GccToolChain::builtInHeaderPaths(const Utils::Environment &env,
return paths;
}
-ToolChain::BuiltInHeaderPathsRunner GccToolChain::createBuiltInHeaderPathsRunner() const
+ToolChain::BuiltInHeaderPathsRunner GccToolChain::createBuiltInHeaderPathsRunner(
+ const Environment &env) const
{
// Using a clean environment breaks ccache/distcc/etc.
- Environment env = Environment::systemEnvironment();
- addToEnvironment(env);
+ Environment fullEnv = env;
+ addToEnvironment(fullEnv);
// This runner must be thread-safe!
- return [env,
+ return [fullEnv,
compilerCommand = m_compilerCommand,
platformCodeGenFlags = m_platformCodeGenFlags,
reinterpretOptions = m_optionsReinterpreter,
@@ -610,7 +611,7 @@ ToolChain::BuiltInHeaderPathsRunner GccToolChain::createBuiltInHeaderPathsRunner
extraHeaderPathsFunction = m_extraHeaderPathsFunction](const QStringList &flags,
const QString &sysRoot,
const QString &) {
- return builtInHeaderPaths(env,
+ return builtInHeaderPaths(fullEnv,
compilerCommand,
platformCodeGenFlags,
reinterpretOptions,
@@ -624,12 +625,13 @@ ToolChain::BuiltInHeaderPathsRunner GccToolChain::createBuiltInHeaderPathsRunner
}
HeaderPaths GccToolChain::builtInHeaderPaths(const QStringList &flags,
- const FilePath &sysRootPath) const
+ const FilePath &sysRootPath,
+ const Environment &env) const
{
- return createBuiltInHeaderPathsRunner()(flags,
- sysRootPath.isEmpty() ? sysRoot()
- : sysRootPath.toString(),
- originalTargetTriple());
+ return createBuiltInHeaderPathsRunner(env)(flags,
+ sysRootPath.isEmpty() ? sysRoot()
+ : sysRootPath.toString(),
+ originalTargetTriple());
}
void GccToolChain::addCommandPathToEnvironment(const FilePath &command, Environment &env)
@@ -1391,14 +1393,15 @@ QString ClangToolChain::sysRoot() const
return mingwCompiler.parentDir().parentDir().toString();
}
-ToolChain::BuiltInHeaderPathsRunner ClangToolChain::createBuiltInHeaderPathsRunner() const
+ToolChain::BuiltInHeaderPathsRunner ClangToolChain::createBuiltInHeaderPathsRunner(
+ const Environment &env) const
{
// Using a clean environment breaks ccache/distcc/etc.
- Environment env = Environment::systemEnvironment();
- addToEnvironment(env);
+ Environment fullEnv = env;
+ addToEnvironment(fullEnv);
// This runner must be thread-safe!
- return [env,
+ return [fullEnv,
compilerCommand = m_compilerCommand,
platformCodeGenFlags = m_platformCodeGenFlags,
reinterpretOptions = m_optionsReinterpreter,
@@ -1407,7 +1410,7 @@ ToolChain::BuiltInHeaderPathsRunner ClangToolChain::createBuiltInHeaderPathsRunn
extraHeaderPathsFunction = m_extraHeaderPathsFunction](const QStringList &flags,
const QString &sysRoot,
const QString &target) {
- return builtInHeaderPaths(env,
+ return builtInHeaderPaths(fullEnv,
compilerCommand,
platformCodeGenFlags,
reinterpretOptions,