ProjectExplorer: Pass parameters to BuildConfiguration initialization

... directly again, mostly undoing the temporary hack from fb631cb258.

Change-Id: I4485dcb23765d99b4b5869973f004457ebd7aa7d
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2019-12-06 17:32:07 +01:00
parent 2ab33d1dc9
commit b1a29dedfc
9 changed files with 30 additions and 61 deletions

View File

@@ -54,7 +54,7 @@ AutotoolsBuildConfiguration::AutotoolsBuildConfiguration(Target *parent, Core::I
setBuildDirectoryHistoryCompleter("AutoTools.BuildDir.History");
setConfigWidgetDisplayName(tr("Autotools Manager"));
setInitializer([this] {
setInitializer([this](const BuildInfo &) {
// ### Build Steps Build ###
// autogen.sh or autoreconf
QFile autogenFile(target()->project()->projectDirectory().toString() + "/autogen.sh");

View File

@@ -89,7 +89,8 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Core::Id id)
displayName(),
BuildConfiguration::Unknown));
setInitializer([this, target] {
setInitializer([this, target](const BuildInfo &info) {
buildSteps()->appendStep(Constants::CMAKE_BUILD_STEP_ID);
if (DeviceTypeKitAspect::deviceTypeId(target->kit())
@@ -147,14 +148,14 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Core::Id id)
cleanSteps()->appendStep(Constants::CMAKE_BUILD_STEP_ID);
if (initialBuildDirectory().isEmpty()) {
if (info.buildDirectory.isEmpty()) {
setBuildDirectory(shadowBuildDirectory(target->project()->projectFilePath(),
target->kit(),
initialDisplayName(),
initialBuildType()));
info.displayName,
info.buildType));
}
auto info = extraInfo().value<CMakeExtraBuildInfo>();
setConfigurationForCMake(info.configuration);
auto cinfo = info.extraInfo.value<CMakeExtraBuildInfo>();
setConfigurationForCMake(cinfo.configuration);
});
}

View File

@@ -55,7 +55,7 @@ GenericBuildConfiguration::GenericBuildConfiguration(Target *parent, Core::Id id
setConfigWidgetDisplayName(tr("Generic Manager"));
setBuildDirectoryHistoryCompleter("Generic.BuildDir.History");
setInitializer([this] {
setInitializer([this](const BuildInfo &) {
buildSteps()->appendStep(Constants::GENERIC_MS_ID);
cleanSteps()->appendStep(Constants::GENERIC_MS_ID);
updateCacheAndEmitEnvironmentChanged();

View File

@@ -54,9 +54,9 @@ NimbleBuildConfiguration::NimbleBuildConfiguration(Target *target, Core::Id id)
setConfigWidgetHasFrame(true);
setBuildDirectorySettingsKey("Nim.NimbleBuildConfiguration.BuildDirectory");
setInitializer([this] {
setInitializer([this](const BuildInfo &info) {
m_buildType = initialBuildType();
m_buildType = info.buildType;
setBuildDirectory(project()->projectDirectory());

View File

@@ -73,7 +73,7 @@ NimBuildConfiguration::NimBuildConfiguration(Target *target, Core::Id id)
setBuildDirectorySettingsKey("Nim.NimBuildConfiguration.BuildDirectory");
setInitializer([this, target] {
setInitializer([this, target](const BuildInfo &info) {
// Create the build configuration and initialize it from build info
setBuildDirectory(defaultBuildDirectory(target->kit(),
project()->projectFilePath(),
@@ -84,7 +84,7 @@ NimBuildConfiguration::NimBuildConfiguration(Target *target, Core::Id id)
{
auto nimCompilerBuildStep = new NimCompilerBuildStep(buildSteps());
NimCompilerBuildStep::DefaultBuildOptions defaultOption;
switch (initialBuildType()) {
switch (info.buildType) {
case BuildConfiguration::Release:
defaultOption = NimCompilerBuildStep::DefaultBuildOptions::Release;
break;

View File

@@ -84,13 +84,9 @@ public:
QString m_configWidgetDisplayName;
bool m_configWidgetHasFrame = false;
std::function<void()> m_initializer;
// FIXME: Remove.
BuildConfiguration::BuildType m_initialBuildType = BuildConfiguration::Unknown;
Utils::FilePath m_initialBuildDirectory;
QString m_initialDisplayName;
QVariant m_extraInfo;
std::function<void(const BuildInfo &)> m_initializer;
};
} // Internal
@@ -190,17 +186,14 @@ void BuildConfiguration::doInitialize(const BuildInfo &info)
setBuildDirectory(info.buildDirectory);
d->m_initialBuildType = info.buildType;
d->m_initialDisplayName = info.displayName;
d->m_initialBuildDirectory = info.buildDirectory;
d->m_extraInfo = info.extraInfo;
acquaintAspects();
if (d->m_initializer)
d->m_initializer();
d->m_initializer(info);
}
void BuildConfiguration::setInitializer(const std::function<void ()> &initializer)
void BuildConfiguration::setInitializer(const std::function<void(const BuildInfo &)> &initializer)
{
d->m_initializer = initializer;
}
@@ -318,16 +311,6 @@ void BuildConfiguration::emitBuildDirectoryChanged()
}
}
QString BuildConfiguration::initialDisplayName() const
{
return d->m_initialDisplayName;
}
QVariant BuildConfiguration::extraInfo() const
{
return d->m_extraInfo;
}
ProjectExplorer::BuildDirectoryAspect *BuildConfiguration::buildDirectoryAspect() const
{
return d->m_buildDirectoryAspect;
@@ -437,16 +420,6 @@ BuildConfiguration::BuildType BuildConfiguration::buildType() const
return d->m_initialBuildType;
}
BuildConfiguration::BuildType BuildConfiguration::initialBuildType() const
{
return d->m_initialBuildType;
}
FilePath BuildConfiguration::initialBuildDirectory() const
{
return d->m_initialBuildDirectory;
}
QString BuildConfiguration::buildTypeName(BuildConfiguration::BuildType type)
{
switch (type) {

View File

@@ -98,11 +98,6 @@ public:
};
virtual BuildType buildType() const;
BuildType initialBuildType() const; // FIXME: Remove.
Utils::FilePath initialBuildDirectory() const; // FIXME: Remove.
QString initialDisplayName() const; // FIXME: Remove.
QVariant extraInfo() const; // FIXME: Remove.
static QString buildTypeName(BuildType type);
bool isActive() const override;
@@ -127,7 +122,7 @@ signals:
void buildTypeChanged();
protected:
void setInitializer(const std::function<void()> &initializer);
void setInitializer(const std::function<void(const BuildInfo &info)> &initializer);
private:
void emitBuildDirectoryChanged();

View File

@@ -80,19 +80,19 @@ QbsBuildConfiguration::QbsBuildConfiguration(Target *target, Core::Id id)
{
setConfigWidgetHasFrame(true);
setInitializer([this, target] {
setInitializer([this, target](const BuildInfo &info) {
const Kit *kit = target->kit();
QVariantMap configData = extraInfo().value<QVariantMap>();
QVariantMap configData = info.extraInfo.value<QVariantMap>();
configData.insert(QLatin1String(Constants::QBS_CONFIG_VARIANT_KEY),
(initialBuildType() == BuildConfiguration::Debug)
(info.buildType == BuildConfiguration::Debug)
? QLatin1String(Constants::QBS_VARIANT_DEBUG)
: QLatin1String(Constants::QBS_VARIANT_RELEASE));
Utils::FilePath buildDir = initialBuildDirectory();
FilePath buildDir = info.buildDirectory;
if (buildDir.isEmpty())
buildDir = defaultBuildDirectory(target->project()->projectFilePath(),
kit, initialDisplayName(),
initialBuildType());
kit, info.displayName,
buildType());
setBuildDirectory(buildDir);
// Add the build configuration.
@@ -100,7 +100,7 @@ QbsBuildConfiguration::QbsBuildConfiguration(Target *target, Core::Id id)
QString configName = bd.take("configName").toString();
if (configName.isEmpty()) {
configName = "qtc_" + kit->fileSystemFriendlyName() + '_'
+ Utils::FileUtils::fileSystemFriendlyName(initialDisplayName());
+ FileUtils::fileSystemFriendlyName(info.displayName);
}
const QString kitName = kit->displayName();

View File

@@ -109,18 +109,18 @@ QmakeBuildConfiguration::QmakeBuildConfiguration(Target *target, Core::Id id)
setConfigWidgetHasFrame(true);
m_buildSystem = new QmakeBuildSystem(this);
setInitializer([this, target] {
setInitializer([this, target](const BuildInfo &info) {
auto qmakeStep = new QMakeStep(buildSteps());
buildSteps()->appendStep(qmakeStep);
buildSteps()->appendStep(Constants::MAKESTEP_BS_ID);
cleanSteps()->appendStep(Constants::MAKESTEP_BS_ID);
const QmakeExtraBuildInfo qmakeExtra = extraInfo().value<QmakeExtraBuildInfo>();
const QmakeExtraBuildInfo qmakeExtra = info.extraInfo.value<QmakeExtraBuildInfo>();
BaseQtVersion *version = QtKitAspect::qtVersion(target->kit());
BaseQtVersion::QmakeBuildConfigs config = version->defaultBuildConfig();
if (initialBuildType() == BuildConfiguration::Debug)
if (info.buildType == BuildConfiguration::Debug)
config |= BaseQtVersion::DebugBuild;
else
config &= ~BaseQtVersion::DebugBuild;
@@ -135,11 +135,11 @@ QmakeBuildConfiguration::QmakeBuildConfiguration(Target *target, Core::Id id)
setQMakeBuildConfiguration(config);
FilePath directory = initialBuildDirectory();
FilePath directory = info.buildDirectory;
if (directory.isEmpty()) {
directory = shadowBuildDirectory(target->project()->projectFilePath(),
target->kit(), initialDisplayName(),
initialBuildType());
target->kit(), info.displayName,
info.buildType);
}
setBuildDirectory(directory);