forked from qt-creator/qt-creator
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:
@@ -54,7 +54,7 @@ AutotoolsBuildConfiguration::AutotoolsBuildConfiguration(Target *parent, Core::I
|
|||||||
setBuildDirectoryHistoryCompleter("AutoTools.BuildDir.History");
|
setBuildDirectoryHistoryCompleter("AutoTools.BuildDir.History");
|
||||||
setConfigWidgetDisplayName(tr("Autotools Manager"));
|
setConfigWidgetDisplayName(tr("Autotools Manager"));
|
||||||
|
|
||||||
setInitializer([this] {
|
setInitializer([this](const BuildInfo &) {
|
||||||
// ### Build Steps Build ###
|
// ### Build Steps Build ###
|
||||||
// autogen.sh or autoreconf
|
// autogen.sh or autoreconf
|
||||||
QFile autogenFile(target()->project()->projectDirectory().toString() + "/autogen.sh");
|
QFile autogenFile(target()->project()->projectDirectory().toString() + "/autogen.sh");
|
||||||
|
@@ -89,7 +89,8 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Core::Id id)
|
|||||||
displayName(),
|
displayName(),
|
||||||
BuildConfiguration::Unknown));
|
BuildConfiguration::Unknown));
|
||||||
|
|
||||||
setInitializer([this, target] {
|
setInitializer([this, target](const BuildInfo &info) {
|
||||||
|
|
||||||
buildSteps()->appendStep(Constants::CMAKE_BUILD_STEP_ID);
|
buildSteps()->appendStep(Constants::CMAKE_BUILD_STEP_ID);
|
||||||
|
|
||||||
if (DeviceTypeKitAspect::deviceTypeId(target->kit())
|
if (DeviceTypeKitAspect::deviceTypeId(target->kit())
|
||||||
@@ -147,14 +148,14 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Core::Id id)
|
|||||||
|
|
||||||
cleanSteps()->appendStep(Constants::CMAKE_BUILD_STEP_ID);
|
cleanSteps()->appendStep(Constants::CMAKE_BUILD_STEP_ID);
|
||||||
|
|
||||||
if (initialBuildDirectory().isEmpty()) {
|
if (info.buildDirectory.isEmpty()) {
|
||||||
setBuildDirectory(shadowBuildDirectory(target->project()->projectFilePath(),
|
setBuildDirectory(shadowBuildDirectory(target->project()->projectFilePath(),
|
||||||
target->kit(),
|
target->kit(),
|
||||||
initialDisplayName(),
|
info.displayName,
|
||||||
initialBuildType()));
|
info.buildType));
|
||||||
}
|
}
|
||||||
auto info = extraInfo().value<CMakeExtraBuildInfo>();
|
auto cinfo = info.extraInfo.value<CMakeExtraBuildInfo>();
|
||||||
setConfigurationForCMake(info.configuration);
|
setConfigurationForCMake(cinfo.configuration);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -55,7 +55,7 @@ GenericBuildConfiguration::GenericBuildConfiguration(Target *parent, Core::Id id
|
|||||||
setConfigWidgetDisplayName(tr("Generic Manager"));
|
setConfigWidgetDisplayName(tr("Generic Manager"));
|
||||||
setBuildDirectoryHistoryCompleter("Generic.BuildDir.History");
|
setBuildDirectoryHistoryCompleter("Generic.BuildDir.History");
|
||||||
|
|
||||||
setInitializer([this] {
|
setInitializer([this](const BuildInfo &) {
|
||||||
buildSteps()->appendStep(Constants::GENERIC_MS_ID);
|
buildSteps()->appendStep(Constants::GENERIC_MS_ID);
|
||||||
cleanSteps()->appendStep(Constants::GENERIC_MS_ID);
|
cleanSteps()->appendStep(Constants::GENERIC_MS_ID);
|
||||||
updateCacheAndEmitEnvironmentChanged();
|
updateCacheAndEmitEnvironmentChanged();
|
||||||
|
@@ -54,9 +54,9 @@ NimbleBuildConfiguration::NimbleBuildConfiguration(Target *target, Core::Id id)
|
|||||||
setConfigWidgetHasFrame(true);
|
setConfigWidgetHasFrame(true);
|
||||||
setBuildDirectorySettingsKey("Nim.NimbleBuildConfiguration.BuildDirectory");
|
setBuildDirectorySettingsKey("Nim.NimbleBuildConfiguration.BuildDirectory");
|
||||||
|
|
||||||
setInitializer([this] {
|
setInitializer([this](const BuildInfo &info) {
|
||||||
|
|
||||||
m_buildType = initialBuildType();
|
m_buildType = info.buildType;
|
||||||
|
|
||||||
setBuildDirectory(project()->projectDirectory());
|
setBuildDirectory(project()->projectDirectory());
|
||||||
|
|
||||||
|
@@ -73,7 +73,7 @@ NimBuildConfiguration::NimBuildConfiguration(Target *target, Core::Id id)
|
|||||||
setBuildDirectorySettingsKey("Nim.NimBuildConfiguration.BuildDirectory");
|
setBuildDirectorySettingsKey("Nim.NimBuildConfiguration.BuildDirectory");
|
||||||
|
|
||||||
|
|
||||||
setInitializer([this, target] {
|
setInitializer([this, target](const BuildInfo &info) {
|
||||||
// Create the build configuration and initialize it from build info
|
// Create the build configuration and initialize it from build info
|
||||||
setBuildDirectory(defaultBuildDirectory(target->kit(),
|
setBuildDirectory(defaultBuildDirectory(target->kit(),
|
||||||
project()->projectFilePath(),
|
project()->projectFilePath(),
|
||||||
@@ -84,7 +84,7 @@ NimBuildConfiguration::NimBuildConfiguration(Target *target, Core::Id id)
|
|||||||
{
|
{
|
||||||
auto nimCompilerBuildStep = new NimCompilerBuildStep(buildSteps());
|
auto nimCompilerBuildStep = new NimCompilerBuildStep(buildSteps());
|
||||||
NimCompilerBuildStep::DefaultBuildOptions defaultOption;
|
NimCompilerBuildStep::DefaultBuildOptions defaultOption;
|
||||||
switch (initialBuildType()) {
|
switch (info.buildType) {
|
||||||
case BuildConfiguration::Release:
|
case BuildConfiguration::Release:
|
||||||
defaultOption = NimCompilerBuildStep::DefaultBuildOptions::Release;
|
defaultOption = NimCompilerBuildStep::DefaultBuildOptions::Release;
|
||||||
break;
|
break;
|
||||||
|
@@ -84,13 +84,9 @@ public:
|
|||||||
QString m_configWidgetDisplayName;
|
QString m_configWidgetDisplayName;
|
||||||
bool m_configWidgetHasFrame = false;
|
bool m_configWidgetHasFrame = false;
|
||||||
|
|
||||||
std::function<void()> m_initializer;
|
|
||||||
|
|
||||||
// FIXME: Remove.
|
// FIXME: Remove.
|
||||||
BuildConfiguration::BuildType m_initialBuildType = BuildConfiguration::Unknown;
|
BuildConfiguration::BuildType m_initialBuildType = BuildConfiguration::Unknown;
|
||||||
Utils::FilePath m_initialBuildDirectory;
|
std::function<void(const BuildInfo &)> m_initializer;
|
||||||
QString m_initialDisplayName;
|
|
||||||
QVariant m_extraInfo;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // Internal
|
} // Internal
|
||||||
@@ -190,17 +186,14 @@ void BuildConfiguration::doInitialize(const BuildInfo &info)
|
|||||||
setBuildDirectory(info.buildDirectory);
|
setBuildDirectory(info.buildDirectory);
|
||||||
|
|
||||||
d->m_initialBuildType = info.buildType;
|
d->m_initialBuildType = info.buildType;
|
||||||
d->m_initialDisplayName = info.displayName;
|
|
||||||
d->m_initialBuildDirectory = info.buildDirectory;
|
|
||||||
d->m_extraInfo = info.extraInfo;
|
|
||||||
|
|
||||||
acquaintAspects();
|
acquaintAspects();
|
||||||
|
|
||||||
if (d->m_initializer)
|
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;
|
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
|
ProjectExplorer::BuildDirectoryAspect *BuildConfiguration::buildDirectoryAspect() const
|
||||||
{
|
{
|
||||||
return d->m_buildDirectoryAspect;
|
return d->m_buildDirectoryAspect;
|
||||||
@@ -437,16 +420,6 @@ BuildConfiguration::BuildType BuildConfiguration::buildType() const
|
|||||||
return d->m_initialBuildType;
|
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)
|
QString BuildConfiguration::buildTypeName(BuildConfiguration::BuildType type)
|
||||||
{
|
{
|
||||||
switch (type) {
|
switch (type) {
|
||||||
|
@@ -98,11 +98,6 @@ public:
|
|||||||
};
|
};
|
||||||
virtual BuildType buildType() const;
|
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);
|
static QString buildTypeName(BuildType type);
|
||||||
|
|
||||||
bool isActive() const override;
|
bool isActive() const override;
|
||||||
@@ -127,7 +122,7 @@ signals:
|
|||||||
void buildTypeChanged();
|
void buildTypeChanged();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void setInitializer(const std::function<void()> &initializer);
|
void setInitializer(const std::function<void(const BuildInfo &info)> &initializer);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void emitBuildDirectoryChanged();
|
void emitBuildDirectoryChanged();
|
||||||
|
@@ -80,19 +80,19 @@ QbsBuildConfiguration::QbsBuildConfiguration(Target *target, Core::Id id)
|
|||||||
{
|
{
|
||||||
setConfigWidgetHasFrame(true);
|
setConfigWidgetHasFrame(true);
|
||||||
|
|
||||||
setInitializer([this, target] {
|
setInitializer([this, target](const BuildInfo &info) {
|
||||||
const Kit *kit = target->kit();
|
const Kit *kit = target->kit();
|
||||||
QVariantMap configData = extraInfo().value<QVariantMap>();
|
QVariantMap configData = info.extraInfo.value<QVariantMap>();
|
||||||
configData.insert(QLatin1String(Constants::QBS_CONFIG_VARIANT_KEY),
|
configData.insert(QLatin1String(Constants::QBS_CONFIG_VARIANT_KEY),
|
||||||
(initialBuildType() == BuildConfiguration::Debug)
|
(info.buildType == BuildConfiguration::Debug)
|
||||||
? QLatin1String(Constants::QBS_VARIANT_DEBUG)
|
? QLatin1String(Constants::QBS_VARIANT_DEBUG)
|
||||||
: QLatin1String(Constants::QBS_VARIANT_RELEASE));
|
: QLatin1String(Constants::QBS_VARIANT_RELEASE));
|
||||||
|
|
||||||
Utils::FilePath buildDir = initialBuildDirectory();
|
FilePath buildDir = info.buildDirectory;
|
||||||
if (buildDir.isEmpty())
|
if (buildDir.isEmpty())
|
||||||
buildDir = defaultBuildDirectory(target->project()->projectFilePath(),
|
buildDir = defaultBuildDirectory(target->project()->projectFilePath(),
|
||||||
kit, initialDisplayName(),
|
kit, info.displayName,
|
||||||
initialBuildType());
|
buildType());
|
||||||
setBuildDirectory(buildDir);
|
setBuildDirectory(buildDir);
|
||||||
|
|
||||||
// Add the build configuration.
|
// Add the build configuration.
|
||||||
@@ -100,7 +100,7 @@ QbsBuildConfiguration::QbsBuildConfiguration(Target *target, Core::Id id)
|
|||||||
QString configName = bd.take("configName").toString();
|
QString configName = bd.take("configName").toString();
|
||||||
if (configName.isEmpty()) {
|
if (configName.isEmpty()) {
|
||||||
configName = "qtc_" + kit->fileSystemFriendlyName() + '_'
|
configName = "qtc_" + kit->fileSystemFriendlyName() + '_'
|
||||||
+ Utils::FileUtils::fileSystemFriendlyName(initialDisplayName());
|
+ FileUtils::fileSystemFriendlyName(info.displayName);
|
||||||
}
|
}
|
||||||
|
|
||||||
const QString kitName = kit->displayName();
|
const QString kitName = kit->displayName();
|
||||||
|
@@ -109,18 +109,18 @@ QmakeBuildConfiguration::QmakeBuildConfiguration(Target *target, Core::Id id)
|
|||||||
setConfigWidgetHasFrame(true);
|
setConfigWidgetHasFrame(true);
|
||||||
m_buildSystem = new QmakeBuildSystem(this);
|
m_buildSystem = new QmakeBuildSystem(this);
|
||||||
|
|
||||||
setInitializer([this, target] {
|
setInitializer([this, target](const BuildInfo &info) {
|
||||||
auto qmakeStep = new QMakeStep(buildSteps());
|
auto qmakeStep = new QMakeStep(buildSteps());
|
||||||
buildSteps()->appendStep(qmakeStep);
|
buildSteps()->appendStep(qmakeStep);
|
||||||
buildSteps()->appendStep(Constants::MAKESTEP_BS_ID);
|
buildSteps()->appendStep(Constants::MAKESTEP_BS_ID);
|
||||||
|
|
||||||
cleanSteps()->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 *version = QtKitAspect::qtVersion(target->kit());
|
||||||
|
|
||||||
BaseQtVersion::QmakeBuildConfigs config = version->defaultBuildConfig();
|
BaseQtVersion::QmakeBuildConfigs config = version->defaultBuildConfig();
|
||||||
if (initialBuildType() == BuildConfiguration::Debug)
|
if (info.buildType == BuildConfiguration::Debug)
|
||||||
config |= BaseQtVersion::DebugBuild;
|
config |= BaseQtVersion::DebugBuild;
|
||||||
else
|
else
|
||||||
config &= ~BaseQtVersion::DebugBuild;
|
config &= ~BaseQtVersion::DebugBuild;
|
||||||
@@ -135,11 +135,11 @@ QmakeBuildConfiguration::QmakeBuildConfiguration(Target *target, Core::Id id)
|
|||||||
|
|
||||||
setQMakeBuildConfiguration(config);
|
setQMakeBuildConfiguration(config);
|
||||||
|
|
||||||
FilePath directory = initialBuildDirectory();
|
FilePath directory = info.buildDirectory;
|
||||||
if (directory.isEmpty()) {
|
if (directory.isEmpty()) {
|
||||||
directory = shadowBuildDirectory(target->project()->projectFilePath(),
|
directory = shadowBuildDirectory(target->project()->projectFilePath(),
|
||||||
target->kit(), initialDisplayName(),
|
target->kit(), info.displayName,
|
||||||
initialBuildType());
|
info.buildType);
|
||||||
}
|
}
|
||||||
|
|
||||||
setBuildDirectory(directory);
|
setBuildDirectory(directory);
|
||||||
|
Reference in New Issue
Block a user