diff options
Diffstat (limited to 'src/lib/corelib/api/project.cpp')
-rw-r--r-- | src/lib/corelib/api/project.cpp | 57 |
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; } |