aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/api/project.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/corelib/api/project.cpp')
-rw-r--r--src/lib/corelib/api/project.cpp57
1 files changed, 32 insertions, 25 deletions
diff --git a/src/lib/corelib/api/project.cpp b/src/lib/corelib/api/project.cpp
index 46c73dabd..53c711b49 100644
--- a/src/lib/corelib/api/project.cpp
+++ b/src/lib/corelib/api/project.cpp
@@ -61,7 +61,6 @@
#include <buildgraph/timestampsupdater.h>
#include <buildgraph/transformer.h>
#include <language/language.h>
-#include <language/projectresolver.h>
#include <language/propertymapinternal.h>
#include <logging/logger.h>
#include <logging/translator.h>
@@ -132,7 +131,7 @@ static void addDependencies(QVector<ResolvedProductPtr> &products)
{
for (int i = 0; i < products.size(); ++i) {
const ResolvedProductPtr &product = products.at(i);
- for (const ResolvedProductPtr &dependency : qAsConst(product->dependencies)) {
+ for (const ResolvedProductPtr &dependency : std::as_const(product->dependencies)) {
if (!products.contains(dependency))
products.push_back(dependency);
}
@@ -192,7 +191,7 @@ static QVector<ResolvedProductPtr> enabledInternalProducts(const ResolvedProject
if (p->enabled && (includingNonDefault || p->builtByDefault()))
products.push_back(p);
}
- for (const auto &subProject : qAsConst(project->subProjects))
+ for (const auto &subProject : std::as_const(project->subProjects))
products << enabledInternalProducts(subProject, includingNonDefault);
return products;
}
@@ -216,7 +215,7 @@ static ResolvedProductPtr internalProductForProject(const ResolvedProjectConstPt
if (matches(product, resolvedProduct))
return resolvedProduct;
}
- for (const auto &subProject : qAsConst(project->subProjects)) {
+ for (const auto &subProject : std::as_const(project->subProjects)) {
const ResolvedProductPtr &p = internalProductForProject(subProject, product);
if (p)
return p;
@@ -270,14 +269,10 @@ GroupData ProjectPrivate::createGroupDataFromGroup(const GroupPtr &resolvedGroup
for (const auto &sa : resolvedGroup->files) {
ArtifactData artifact = createApiSourceArtifact(sa);
setupInstallData(artifact, product);
- group.d->sourceArtifacts.push_back(artifact);
- }
- if (resolvedGroup->wildcards) {
- for (const auto &sa : resolvedGroup->wildcards->files) {
- ArtifactData artifact = createApiSourceArtifact(sa);
- setupInstallData(artifact, product);
+ if (sa->fromWildcard)
group.d->sourceArtifactsFromWildcards.push_back(artifact);
- }
+ else
+ group.d->sourceArtifacts.push_back(artifact);
}
std::sort(group.d->sourceArtifacts.begin(),
group.d->sourceArtifacts.end());
@@ -375,7 +370,7 @@ ProjectPrivate::GroupUpdateContext ProjectPrivate::getGroupContext(const Product
context.resolvedProducts = internalProducts(context.products);
const QString groupName = group.isValid() ? group.name() : product.name();
- for (const ResolvedProductPtr &p : qAsConst(context.resolvedProducts)) {
+ for (const ResolvedProductPtr &p : std::as_const(context.resolvedProducts)) {
for (const GroupPtr &g : p->groups) {
if (g->name == groupName) {
context.resolvedGroups << g;
@@ -385,7 +380,7 @@ ProjectPrivate::GroupUpdateContext ProjectPrivate::getGroupContext(const Product
}
if (context.resolvedGroups.empty())
throw ErrorInfo(Tr::tr("Group '%1' does not exist.").arg(groupName));
- for (const ProductData &p : qAsConst(context.products)) {
+ for (const ProductData &p : std::as_const(context.products)) {
const GroupData &g = findGroupData(p, groupName);
QBS_CHECK(p.isValid());
context.groups << g;
@@ -400,7 +395,7 @@ static bool matchesWildcard(const QString &filePath, const GroupConstPtr &group)
{
if (!group->wildcards)
return false;
- for (const QString &pattern : qAsConst(group->wildcards->patterns)) {
+ for (const QString &pattern : std::as_const(group->wildcards->patterns)) {
QString fullPattern;
if (QFileInfo(group->prefix).isAbsolute()) {
fullPattern = group->prefix;
@@ -464,8 +459,8 @@ void ProjectPrivate::addFiles(const ProductData &product, const GroupData &group
// We do not check for entries in other groups, because such doublettes might be legitimate
// due to conditions.
- for (const GroupPtr &group : qAsConst(groupContext.resolvedGroups)) {
- for (const QString &filePath : qAsConst(filesContext.absoluteFilePaths)) {
+ for (const GroupPtr &group : std::as_const(groupContext.resolvedGroups)) {
+ for (const QString &filePath : std::as_const(filesContext.absoluteFilePaths)) {
for (const auto &sa : group->files) {
if (sa->absoluteFilePath == filePath) {
throw ErrorInfo(Tr::tr("File '%1' already exists in group '%2'.")
@@ -528,7 +523,7 @@ void ProjectPrivate::prepareChangeToProject()
RuleCommandList ProjectPrivate::ruleCommandListForTransformer(const Transformer *transformer)
{
RuleCommandList list;
- for (const AbstractCommandPtr &internalCommand : qAsConst(transformer->commands.commands())) {
+ for (const AbstractCommandPtr &internalCommand : std::as_const(transformer->commands.commands())) {
RuleCommand externalCommand;
externalCommand.d->description = internalCommand->description();
externalCommand.d->extendedDescription = internalCommand->extendedDescription();
@@ -569,11 +564,11 @@ RuleCommandList ProjectPrivate::ruleCommands(const ProductData &product,
QBS_CHECK(resolvedProduct->buildData);
const ArtifactSet &outputArtifacts = resolvedProduct->buildData->artifactsByFileTag()
.value(FileTag(outputFileTag.toLocal8Bit()));
- for (const Artifact * const outputArtifact : qAsConst(outputArtifacts)) {
+ for (const Artifact * const outputArtifact : std::as_const(outputArtifacts)) {
const TransformerConstPtr transformer = outputArtifact->transformer;
if (!transformer)
continue;
- for (const Artifact * const inputArtifact : qAsConst(transformer->inputs)) {
+ for (const Artifact * const inputArtifact : std::as_const(transformer->inputs)) {
if (inputArtifact->filePath() == inputFilePath)
return ruleCommandListForTransformer(transformer.get());
}
@@ -691,7 +686,7 @@ void ProjectPrivate::retrieveProjectData(ProjectData &projectData,
}
}
for (const ResolvedProductPtr &resolvedDependentProduct
- : qAsConst(resolvedProduct->dependencies)) {
+ : std::as_const(resolvedProduct->dependencies)) {
product.d->dependencies << resolvedDependentProduct->fullDisplayName();
}
std::sort(product.d->type.begin(), product.d->type.end());
@@ -700,7 +695,7 @@ void ProjectPrivate::retrieveProjectData(ProjectData &projectData,
product.d->isValid = true;
projectData.d->products << product;
}
- for (const auto &internalSubProject : qAsConst(internalProject->subProjects)) {
+ for (const auto &internalSubProject : std::as_const(internalProject->subProjects)) {
if (!internalSubProject->enabled)
continue;
ProjectData subProject;
@@ -802,8 +797,14 @@ RunEnvironment Project::getRunEnvironment(const ProductData &product,
const QStringList &setupRunEnvConfig, Settings *settings) const
{
const ResolvedProductPtr resolvedProduct = d->internalProduct(product);
- return RunEnvironment(resolvedProduct, d->internalProject, installOptions, environment,
- setupRunEnvConfig, settings, d->logger);
+ return {
+ resolvedProduct,
+ d->internalProject,
+ installOptions,
+ environment,
+ setupRunEnvConfig,
+ settings,
+ d->logger};
}
/*!
@@ -961,6 +962,12 @@ std::set<QString> Project::buildSystemFiles() const
return rangeTo<std::set<QString>>(d->internalProject->buildSystemFiles);
}
+CodeLinks Project::codeLinks() const
+{
+ QBS_ASSERT(isValid(), return {});
+ return d->internalProject->codeLinks;
+}
+
RuleCommandList Project::ruleCommands(const ProductData &product,
const QString &inputFilePath, const QString &outputFileTag, ErrorInfo *error) const
{
@@ -1006,7 +1013,7 @@ Project::BuildGraphInfo Project::getBuildGraphInfo(const QString &bgFilePath,
const Internal::TopLevelProjectConstPtr project = BuildGraphLoader::loadProject(bgFilePath);
info.bgFilePath = bgFilePath;
info.overriddenProperties = project->overriddenValues;
- info.profileData = project->profileConfigs;
+ info.profileData = project->fullProfileConfigsTree();
std::vector<std::pair<QString, QString>> props;
for (const QString &prop : requestedProperties) {
QStringList components = prop.split(QLatin1Char('.'));
@@ -1045,7 +1052,7 @@ Project::BuildGraphInfo Project::getBuildGraphInfo() const
throw ErrorInfo(Tr::tr("A job is currently in progress."));
info.bgFilePath = d->internalProject->buildGraphFilePath();
info.overriddenProperties = d->internalProject->overriddenValues;
- info.profileData = d->internalProject->profileConfigs;
+ info.profileData = d->internalProject->fullProfileConfigsTree();
} catch (const ErrorInfo &e) {
info.error = e;
}