diff --git a/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp b/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp index ff4b78966cc..4019ef016fb 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp +++ b/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp @@ -418,9 +418,10 @@ void AutotoolsProject::updateCppCodeModel() QByteArray macros; if (activeTarget()) { - ToolChain *tc = ProjectExplorer::ToolChainKitInformation::toolChain(activeTarget()->kit()); + ProjectExplorer::Kit *k = activeTarget()->kit(); + ToolChain *tc = ProjectExplorer::ToolChainKitInformation::toolChain(k); if (tc) { - const QList allHeaderPaths = tc->systemHeaderPaths(); + const QList allHeaderPaths = tc->systemHeaderPaths(SysRootKitInformation::sysRoot(k)); foreach (const HeaderPath &headerPath, allHeaderPaths) { if (headerPath.kind() == HeaderPath::FrameworkHeaderPath) allFrameworkPaths.append(headerPath.path()); diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index 239e46594a7..b536af7c821 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -286,7 +286,8 @@ bool CMakeProject::parseCMakeLists() createUiCodeModelSupport(); - ToolChain *tc = ProjectExplorer::ToolChainKitInformation::toolChain(activeTarget()->kit()); + Kit *k = activeTarget()->kit(); + ToolChain *tc = ProjectExplorer::ToolChainKitInformation::toolChain(k); if (!tc) { emit buildTargetsChanged(); emit fileListChanged(); @@ -304,7 +305,7 @@ bool CMakeProject::parseCMakeLists() QStringList allFrameworkPaths; QList allHeaderPaths; - allHeaderPaths = tc->systemHeaderPaths(); + allHeaderPaths = tc->systemHeaderPaths(SysRootKitInformation::sysRoot(k)); foreach (const ProjectExplorer::HeaderPath &headerPath, allHeaderPaths) { if (headerPath.kind() == ProjectExplorer::HeaderPath::FrameworkHeaderPath) allFrameworkPaths.append(headerPath.path()); diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index fbf0bbb2fbf..db8991b8aba 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -249,13 +249,13 @@ void GenericProject::refresh(RefreshOptions options) CPlusPlus::CppModelManagerInterface::ProjectPart::Ptr part( new CPlusPlus::CppModelManagerInterface::ProjectPart); - ToolChain *tc = activeTarget() ? - ToolChainKitInformation::toolChain(activeTarget()->kit()) : 0; + Kit *k = activeTarget() ? activeTarget()->kit() : KitManager::instance()->defaultKit(); + ToolChain *tc = k ? ToolChainKitInformation::toolChain(k) : 0; if (tc) { part->defines = tc->predefinedMacros(QStringList()); part->defines += '\n'; - foreach (const HeaderPath &headerPath, tc->systemHeaderPaths()) { + foreach (const HeaderPath &headerPath, tc->systemHeaderPaths(SysRootKitInformation::sysRoot(k))) { if (headerPath.kind() == HeaderPath::FrameworkHeaderPath) part->frameworkPaths.append(headerPath.path()); else diff --git a/src/plugins/projectexplorer/abstractmsvctoolchain.cpp b/src/plugins/projectexplorer/abstractmsvctoolchain.cpp index 0eea022e2a0..02d8b7f9e38 100644 --- a/src/plugins/projectexplorer/abstractmsvctoolchain.cpp +++ b/src/plugins/projectexplorer/abstractmsvctoolchain.cpp @@ -108,8 +108,9 @@ ToolChain::CompilerFlags AbstractMsvcToolChain::compilerFlags(const QStringList } } -QList AbstractMsvcToolChain::systemHeaderPaths() const +QList AbstractMsvcToolChain::systemHeaderPaths(const Utils::FileName &sysRoot) const { + Q_UNUSED(sysRoot); if (m_headerPaths.isEmpty()) { Utils::Environment env(m_lastEnvironment); addToEnvironment(env); diff --git a/src/plugins/projectexplorer/abstractmsvctoolchain.h b/src/plugins/projectexplorer/abstractmsvctoolchain.h index ef26aa401ce..f52bee76881 100644 --- a/src/plugins/projectexplorer/abstractmsvctoolchain.h +++ b/src/plugins/projectexplorer/abstractmsvctoolchain.h @@ -53,7 +53,7 @@ public: QByteArray predefinedMacros(const QStringList &cxxflags) const; CompilerFlags compilerFlags(const QStringList &cxxflags) const; - QList systemHeaderPaths() const; + QList systemHeaderPaths(const Utils::FileName &sysRoot) const; void addToEnvironment(Utils::Environment &env) const; QString makeCommand() const; diff --git a/src/plugins/projectexplorer/gcctoolchain.cpp b/src/plugins/projectexplorer/gcctoolchain.cpp index 61911262a4f..93eaf2f9af7 100644 --- a/src/plugins/projectexplorer/gcctoolchain.cpp +++ b/src/plugins/projectexplorer/gcctoolchain.cpp @@ -148,12 +148,12 @@ static QByteArray gccPredefinedMacros(const FileName &gcc, const QStringList &ar return predefinedMacros; } -QList GccToolChain::gccHeaderPaths(const FileName &gcc, const QStringList &env, const QString &sysrootPath) +QList GccToolChain::gccHeaderPaths(const FileName &gcc, const QStringList &env, const FileName &sysrootPath) { QList systemHeaderPaths; QStringList arguments; if (!sysrootPath.isEmpty()) - arguments.append(QString::fromLatin1("--sysroot=%1").arg(sysrootPath)); + arguments.append(QString::fromLatin1("--sysroot=%1").arg(sysrootPath.toString())); arguments << QLatin1String("-xc++") << QLatin1String("-E") << QLatin1String("-v") @@ -393,13 +393,13 @@ ToolChain::CompilerFlags GccToolChain::compilerFlags(const QStringList &cxxflags return NO_FLAGS; } -QList GccToolChain::systemHeaderPaths() const +QList GccToolChain::systemHeaderPaths(const Utils::FileName &sysRoot) const { if (m_headerPaths.isEmpty()) { // Using a clean environment breaks ccache/distcc/etc. Environment env = Environment::systemEnvironment(); addToEnvironment(env); - m_headerPaths = gccHeaderPaths(m_compilerCommand, env.toStringList()); + m_headerPaths = gccHeaderPaths(m_compilerCommand, env.toStringList(), sysRoot); } return m_headerPaths; } diff --git a/src/plugins/projectexplorer/gcctoolchain.h b/src/plugins/projectexplorer/gcctoolchain.h index 45e32c8652d..37a99164792 100644 --- a/src/plugins/projectexplorer/gcctoolchain.h +++ b/src/plugins/projectexplorer/gcctoolchain.h @@ -64,7 +64,7 @@ public: QByteArray predefinedMacros(const QStringList &cxxflags) const; CompilerFlags compilerFlags(const QStringList &cxxflags) const; - QList systemHeaderPaths() const; + QList systemHeaderPaths(const Utils::FileName &sysRoot) const; void addToEnvironment(Utils::Environment &env) const; QString makeCommand() const; QList suggestedMkspecList() const; @@ -91,7 +91,7 @@ protected: virtual QList detectSupportedAbis() const; virtual QString detectVersion() const; - static QList gccHeaderPaths(const Utils::FileName &gcc, const QStringList &env, const QString &sysrootPath = QString()); + static QList gccHeaderPaths(const Utils::FileName &gcc, const QStringList &env, const Utils::FileName &sysrootPath); mutable QByteArray m_predefinedMacros; diff --git a/src/plugins/projectexplorer/toolchain.h b/src/plugins/projectexplorer/toolchain.h index 8c4bb703a5a..276bd0bc291 100644 --- a/src/plugins/projectexplorer/toolchain.h +++ b/src/plugins/projectexplorer/toolchain.h @@ -88,7 +88,7 @@ public: STD_CXX11 = 1 }; virtual CompilerFlags compilerFlags(const QStringList &cxxflags) const = 0; - virtual QList systemHeaderPaths() const = 0; + virtual QList systemHeaderPaths(const Utils::FileName &sysRoot) const = 0; virtual void addToEnvironment(Utils::Environment &env) const = 0; virtual QString makeCommand() const = 0; diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp index c123adcdca2..f62bd9eff52 100644 --- a/src/plugins/qt4projectmanager/qt4project.cpp +++ b/src/plugins/qt4projectmanager/qt4project.cpp @@ -527,7 +527,7 @@ void Qt4Project::updateCppCodeModel() QList headers; if (tc) - headers = tc->systemHeaderPaths(); // todo pass cxxflags? + headers = tc->systemHeaderPaths(SysRootKitInformation::sysRoot(k)); // todo pass cxxflags? if (qtVersion) { headers.append(qtVersion->systemHeaderPathes(k)); }