From 27fe442f4f22b26895cc868b7023d685126ae070 Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 23 Nov 2020 08:17:19 +0100 Subject: [PATCH] ProjectExplorer: Consolidate adding Qt host binaries to path Change-Id: Ia301ae016d1d79e55040003280360aba095f2c03 Reviewed-by: Jarek Kobus --- .../genericbuildconfiguration.cpp | 6 +----- .../projectexplorer/buildconfiguration.cpp | 18 ---------------- .../projectexplorer/buildconfiguration.h | 1 - .../qmakebuildconfiguration.cpp | 10 +-------- .../qmakebuildconfiguration.h | 1 - src/plugins/qtsupport/qtkitinformation.cpp | 21 +++++++++++++++++++ src/plugins/qtsupport/qtkitinformation.h | 2 ++ 7 files changed, 25 insertions(+), 34 deletions(-) diff --git a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp index 540d8754c5d..deb9d6f6a76 100644 --- a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp +++ b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp @@ -35,7 +35,6 @@ #include #include -#include #include #include @@ -91,10 +90,7 @@ GenericBuildConfigurationFactory::GenericBuildConfigurationFactory() void GenericBuildConfiguration::addToEnvironment(Utils::Environment &env) const { - prependCompilerPathToEnvironment(kit(), env); - const QtSupport::BaseQtVersion *qt = QtSupport::QtKitAspect::qtVersion(kit()); - if (qt) - env.prependOrSetPath(qt->hostBinPath().toString()); + QtSupport::QtKitAspect::addHostBinariesToPath(kit(), env); } } // namespace Internal diff --git a/src/plugins/projectexplorer/buildconfiguration.cpp b/src/plugins/projectexplorer/buildconfiguration.cpp index 70a4e60deb6..a309ec2baaa 100644 --- a/src/plugins/projectexplorer/buildconfiguration.cpp +++ b/src/plugins/projectexplorer/buildconfiguration.cpp @@ -577,24 +577,6 @@ bool BuildConfiguration::isActive() const return target()->isActive() && target()->activeBuildConfiguration() == this; } -/*! - * Helper function that prepends the directory containing the C++ toolchain to - * PATH. This is used to in build configurations targeting broken build systems - * to provide hints about which compiler to use. - */ - -void BuildConfiguration::prependCompilerPathToEnvironment(Kit *k, Environment &env) -{ - const ToolChain *tc = ToolChainKitAspect::cxxToolChain(k); - - if (!tc) - return; - - const FilePath compilerDir = tc->compilerCommand().parentDir(); - if (!compilerDir.isEmpty()) - env.prependOrSetPath(compilerDir.toString()); -} - /// // IBuildConfigurationFactory /// diff --git a/src/plugins/projectexplorer/buildconfiguration.h b/src/plugins/projectexplorer/buildconfiguration.h index 40f7dd72ce0..d40aa336041 100644 --- a/src/plugins/projectexplorer/buildconfiguration.h +++ b/src/plugins/projectexplorer/buildconfiguration.h @@ -110,7 +110,6 @@ public: bool isActive() const; - static void prependCompilerPathToEnvironment(Kit *k, Utils::Environment &env); void updateCacheAndEmitEnvironmentChanged(); ProjectExplorer::BuildDirectoryAspect *buildDirectoryAspect() const; diff --git a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp index 64a12ab081e..a24602ad8c7 100644 --- a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp +++ b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp @@ -832,15 +832,7 @@ BuildConfiguration::BuildType QmakeBuildConfiguration::buildType() const void QmakeBuildConfiguration::addToEnvironment(Environment &env) const { - setupBuildEnvironment(kit(), env); -} - -void QmakeBuildConfiguration::setupBuildEnvironment(Kit *k, Environment &env) -{ - prependCompilerPathToEnvironment(k, env); - const BaseQtVersion *qt = QtKitAspect::qtVersion(k); - if (qt && !qt->hostBinPath().isEmpty()) - env.prependOrSetPath(qt->hostBinPath().toString()); + QtSupport::QtKitAspect::addHostBinariesToPath(kit(), env); } QmakeBuildConfiguration::LastKitState::LastKitState() = default; diff --git a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.h b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.h index 19fbf519a55..4a452ee6d48 100644 --- a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.h +++ b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.h @@ -91,7 +91,6 @@ public: BuildType buildType() const override; void addToEnvironment(Utils::Environment &env) const override; - static void setupBuildEnvironment(ProjectExplorer::Kit *k, Utils::Environment &env); static QString unalignedBuildDirWarning(); static bool isBuildDirAtSafeLocation(const QString &sourceDir, const QString &buildDir); diff --git a/src/plugins/qtsupport/qtkitinformation.cpp b/src/plugins/qtsupport/qtkitinformation.cpp index b867c173bf4..496ad5013a8 100644 --- a/src/plugins/qtsupport/qtkitinformation.cpp +++ b/src/plugins/qtsupport/qtkitinformation.cpp @@ -371,6 +371,27 @@ void QtKitAspect::setQtVersion(ProjectExplorer::Kit *k, const BaseQtVersion *v) setQtVersionId(k, v->uniqueId()); } +/*! + * Helper function that prepends the directory containing the C++ toolchain and Qt + * binaries to PATH. This is used to in build configurations targeting broken build + * systems to provide hints about which binaries to use. + */ + +void QtKitAspect::addHostBinariesToPath(const Kit *k, Environment &env) +{ + if (const ToolChain *tc = ToolChainKitAspect::cxxToolChain(k)) { + const FilePath compilerDir = tc->compilerCommand().parentDir(); + if (!compilerDir.isEmpty()) + env.prependOrSetPath(compilerDir.toString()); + } + + if (const BaseQtVersion *qt = qtVersion(k)) { + const FilePath hostBinPath = qt->hostBinPath(); + if (!hostBinPath.isEmpty()) + env.prependOrSetPath(hostBinPath.toString()); + } +} + void QtKitAspect::qtVersionsChanged(const QList &addedIds, const QList &removedIds, const QList &changedIds) diff --git a/src/plugins/qtsupport/qtkitinformation.h b/src/plugins/qtsupport/qtkitinformation.h index 66b9f9df5d6..22efc6caffe 100644 --- a/src/plugins/qtsupport/qtkitinformation.h +++ b/src/plugins/qtsupport/qtkitinformation.h @@ -63,6 +63,8 @@ public: static BaseQtVersion *qtVersion(const ProjectExplorer::Kit *k); static void setQtVersion(ProjectExplorer::Kit *k, const BaseQtVersion *v); + static void addHostBinariesToPath(const ProjectExplorer::Kit *k, Utils::Environment &env); + static ProjectExplorer::Kit::Predicate platformPredicate(Utils::Id availablePlatforms); static ProjectExplorer::Kit::Predicate qtVersionPredicate(const QSet &required = QSet(),