aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/buildgraph
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/corelib/buildgraph')
-rw-r--r--src/lib/corelib/buildgraph/artifactcleaner.cpp2
-rw-r--r--src/lib/corelib/buildgraph/artifactcleaner.h2
-rw-r--r--src/lib/corelib/buildgraph/artifactvisitor.cpp2
-rw-r--r--src/lib/corelib/buildgraph/buildgraph.cpp8
-rw-r--r--src/lib/corelib/buildgraph/buildgraphloader.cpp15
-rw-r--r--src/lib/corelib/buildgraph/buildgraphloader.h6
-rw-r--r--src/lib/corelib/buildgraph/depscanner.h2
-rw-r--r--src/lib/corelib/buildgraph/environmentscriptrunner.cpp6
-rw-r--r--src/lib/corelib/buildgraph/executor.cpp42
-rw-r--r--src/lib/corelib/buildgraph/executor.h5
-rw-r--r--src/lib/corelib/buildgraph/executorjob.cpp4
-rw-r--r--src/lib/corelib/buildgraph/executorjob.h2
-rw-r--r--src/lib/corelib/buildgraph/filedependency.cpp16
-rw-r--r--src/lib/corelib/buildgraph/inputartifactscanner.cpp24
-rw-r--r--src/lib/corelib/buildgraph/nodetreedumper.cpp4
-rw-r--r--src/lib/corelib/buildgraph/nodetreedumper.h4
-rw-r--r--src/lib/corelib/buildgraph/processcommandexecutor.cpp3
-rw-r--r--src/lib/corelib/buildgraph/productinstaller.cpp6
-rw-r--r--src/lib/corelib/buildgraph/productinstaller.h4
-rw-r--r--src/lib/corelib/buildgraph/projectbuilddata.cpp10
-rw-r--r--src/lib/corelib/buildgraph/qtmocscanner.cpp2
-rw-r--r--src/lib/corelib/buildgraph/requesteddependencies.cpp6
-rw-r--r--src/lib/corelib/buildgraph/rescuableartifactdata.h9
-rw-r--r--src/lib/corelib/buildgraph/rulecommands.cpp17
-rw-r--r--src/lib/corelib/buildgraph/rulecommands.h10
-rw-r--r--src/lib/corelib/buildgraph/rulegraph.cpp8
-rw-r--r--src/lib/corelib/buildgraph/rulenode.cpp12
-rw-r--r--src/lib/corelib/buildgraph/rulesapplicator.cpp19
-rw-r--r--src/lib/corelib/buildgraph/rulesapplicator.h4
-rw-r--r--src/lib/corelib/buildgraph/scriptclasspropertyiterator.h4
-rw-r--r--src/lib/corelib/buildgraph/timestampsupdater.cpp2
-rw-r--r--src/lib/corelib/buildgraph/timestampsupdater.h2
-rw-r--r--src/lib/corelib/buildgraph/transformer.cpp6
-rw-r--r--src/lib/corelib/buildgraph/transformer.h2
-rw-r--r--src/lib/corelib/buildgraph/transformerchangetracking.cpp4
35 files changed, 140 insertions, 134 deletions
diff --git a/src/lib/corelib/buildgraph/artifactcleaner.cpp b/src/lib/corelib/buildgraph/artifactcleaner.cpp
index 000dfda02..03b327232 100644
--- a/src/lib/corelib/buildgraph/artifactcleaner.cpp
+++ b/src/lib/corelib/buildgraph/artifactcleaner.cpp
@@ -162,7 +162,7 @@ ArtifactCleaner::ArtifactCleaner(Logger logger, ProgressObserver *observer)
}
void ArtifactCleaner::cleanup(const TopLevelProjectPtr &project,
- const QList<ResolvedProductPtr> &products, const CleanOptions &options)
+ const QVector<ResolvedProductPtr> &products, const CleanOptions &options)
{
m_hasError = false;
diff --git a/src/lib/corelib/buildgraph/artifactcleaner.h b/src/lib/corelib/buildgraph/artifactcleaner.h
index 5112a75d6..8d0bef275 100644
--- a/src/lib/corelib/buildgraph/artifactcleaner.h
+++ b/src/lib/corelib/buildgraph/artifactcleaner.h
@@ -54,7 +54,7 @@ class ArtifactCleaner
{
public:
ArtifactCleaner(Logger logger, ProgressObserver *observer);
- void cleanup(const TopLevelProjectPtr &project, const QList<ResolvedProductPtr> &products,
+ void cleanup(const TopLevelProjectPtr &project, const QVector<ResolvedProductPtr> &products,
const CleanOptions &options);
private:
diff --git a/src/lib/corelib/buildgraph/artifactvisitor.cpp b/src/lib/corelib/buildgraph/artifactvisitor.cpp
index c28f07424..22c987572 100644
--- a/src/lib/corelib/buildgraph/artifactvisitor.cpp
+++ b/src/lib/corelib/buildgraph/artifactvisitor.cpp
@@ -61,7 +61,7 @@ void ArtifactVisitor::visitProduct(const ResolvedProductConstPtr &product)
void ArtifactVisitor::visitProject(const ResolvedProjectConstPtr &project)
{
- for (const ResolvedProductConstPtr &product : project->allProducts())
+ for (const auto &product : project->allProducts())
visitProduct(product);
}
diff --git a/src/lib/corelib/buildgraph/buildgraph.cpp b/src/lib/corelib/buildgraph/buildgraph.cpp
index 3726c654d..0d5e8a1f0 100644
--- a/src/lib/corelib/buildgraph/buildgraph.cpp
+++ b/src/lib/corelib/buildgraph/buildgraph.cpp
@@ -278,7 +278,7 @@ private:
}
return result;
}
- for (const ResolvedModuleConstPtr &dependency : product->modules) {
+ for (const auto &dependency : product->modules) {
if (dependency->isProduct)
continue;
QScriptValue obj = engine->newObject(engine->modulePropertyScriptClass());
@@ -661,7 +661,7 @@ void provideFullFileTagsAndProperties(Artifact *artifact)
artifact->properties = artifact->product->moduleProperties;
FileTags allTags = artifact->pureFileTags.empty()
? artifact->product->fileTagsForFileName(artifact->fileName()) : artifact->pureFileTags;
- for (const ArtifactPropertiesConstPtr &props : artifact->product->artifactProperties) {
+ for (const auto &props : artifact->product->artifactProperties) {
if (allTags.intersects(props->fileTagsFilter())) {
artifact->properties = props->propertyMap();
allTags += props->extraFileTags();
@@ -733,7 +733,7 @@ static void doSanityChecksForProduct(const ResolvedProductConstPtr &product,
CycleDetector cycleDetector(logger);
cycleDetector.visitProduct(product);
const ProductBuildData * const buildData = product->buildData.get();
- for (const ResolvedModuleConstPtr &m : product->modules)
+ for (const auto &m : product->modules)
QBS_CHECK(m->product == product.get());
qCDebug(lcBuildGraph) << "enabled:" << product->enabled << "build data:" << buildData;
if (product->enabled)
@@ -836,7 +836,7 @@ static void doSanityChecks(const ResolvedProjectPtr &project,
for (const ResolvedProjectPtr &subProject : qAsConst(project->subProjects))
doSanityChecks(subProject, allProducts, productNames, logger);
- for (const ResolvedProductConstPtr &product : project->products) {
+ for (const auto &product : project->products) {
QBS_CHECK(product->project == project);
QBS_CHECK(product->topLevelProject() == project->topLevelProject());
doSanityChecksForProduct(product, allProducts, logger);
diff --git a/src/lib/corelib/buildgraph/buildgraphloader.cpp b/src/lib/corelib/buildgraph/buildgraphloader.cpp
index bf6c30dcd..58a34b616 100644
--- a/src/lib/corelib/buildgraph/buildgraphloader.cpp
+++ b/src/lib/corelib/buildgraph/buildgraphloader.cpp
@@ -71,6 +71,7 @@
#include <algorithm>
#include <functional>
+#include <memory>
#include <unordered_map>
namespace qbs {
@@ -273,7 +274,7 @@ static void updateProductAndRulePointers(const ResolvedProductPtr &newProduct)
const auto it = ruleMap.find(oldRule);
if (it != ruleMap.cend())
return it->second;
- for (const RuleConstPtr &r : qAsConst(newProduct->rules)) {
+ for (const auto &r : qAsConst(newProduct->rules)) {
if (*r == *oldRule) {
ruleMap.insert(std::make_pair(oldRule, r));
return r;
@@ -362,7 +363,7 @@ void BuildGraphLoader::trackProjectChanges()
ChildListHash childLists;
if (!changedProducts.empty()) {
oldBuildData = std::make_shared<ProjectBuildData>(restoredProject->buildData.get());
- for (const ResolvedProductConstPtr &product : qAsConst(allRestoredProducts)) {
+ for (const auto &product : qAsConst(allRestoredProducts)) {
if (!product->buildData)
continue;
@@ -451,7 +452,7 @@ void BuildGraphLoader::trackProjectChanges()
updateGeneratedArtifacts(product.get());
}
- for (const ResolvedProductConstPtr &changedProduct : qAsConst(changedProducts)) {
+ for (const auto &changedProduct : qAsConst(changedProducts)) {
rescueOldBuildData(changedProduct,
m_freshProductsByName.value(changedProduct->uniqueName()),
childLists, rescuableArtifactData.value(changedProduct->uniqueName()));
@@ -614,7 +615,7 @@ bool BuildGraphLoader::hasProductFileChanged(const std::vector<ResolvedProductPt
FileInfo::path(group->location.filePath()),
product->topLevelProject()->buildDirectory);
Set<QString> wcFiles;
- for (const SourceArtifactConstPtr &sourceArtifact : group->wildcards->files)
+ for (const auto &sourceArtifact : group->wildcards->files)
wcFiles += sourceArtifact->absoluteFilePath;
if (files == wcFiles)
continue;
@@ -741,9 +742,9 @@ static bool dependenciesAreEqual(const ResolvedProductConstPtr &p1,
return false;
Set<QString> names1;
Set<QString> names2;
- for (const ResolvedProductConstPtr &dep : qAsConst(p1->dependencies))
+ for (const auto &dep : qAsConst(p1->dependencies))
names1 << dep->uniqueName();
- for (const ResolvedProductConstPtr &dep : qAsConst(p2->dependencies))
+ for (const auto &dep : qAsConst(p2->dependencies))
names2 << dep->uniqueName();
return names1 == names2;
}
@@ -909,7 +910,7 @@ void BuildGraphLoader::rescueOldBuildData(const ResolvedProductConstPtr &restore
if (!restoredProduct->buildData)
return;
if (!newlyResolvedProduct->buildData)
- newlyResolvedProduct->buildData.reset(new ProductBuildData);
+ newlyResolvedProduct->buildData = std::make_unique<ProductBuildData>();
qCDebug(lcBuildGraph) << "rescue data of product" << restoredProduct->uniqueName();
QBS_CHECK(newlyResolvedProduct->buildData);
diff --git a/src/lib/corelib/buildgraph/buildgraphloader.h b/src/lib/corelib/buildgraph/buildgraphloader.h
index 9363b8358..c62ba7fa7 100644
--- a/src/lib/corelib/buildgraph/buildgraphloader.h
+++ b/src/lib/corelib/buildgraph/buildgraphloader.h
@@ -121,9 +121,9 @@ private:
bool checkConfigCompatibility();
struct ChildrenInfo {
- ChildrenInfo() {}
- ChildrenInfo(const ArtifactSet &c1, const ArtifactSet &c2)
- : children(c1), childrenAddedByScanner(c2) {}
+ ChildrenInfo() = default;
+ ChildrenInfo(ArtifactSet c1, ArtifactSet c2)
+ : children(std::move(c1)), childrenAddedByScanner(std::move(c2)) {}
ArtifactSet children;
ArtifactSet childrenAddedByScanner;
};
diff --git a/src/lib/corelib/buildgraph/depscanner.h b/src/lib/corelib/buildgraph/depscanner.h
index ffc0b83de..6b18004f9 100644
--- a/src/lib/corelib/buildgraph/depscanner.h
+++ b/src/lib/corelib/buildgraph/depscanner.h
@@ -61,7 +61,7 @@ class ScriptEngine;
class DependencyScanner
{
public:
- virtual ~DependencyScanner() {}
+ virtual ~DependencyScanner() = default;
QString id() const;
diff --git a/src/lib/corelib/buildgraph/environmentscriptrunner.cpp b/src/lib/corelib/buildgraph/environmentscriptrunner.cpp
index 7d82efb41..9dafbf296 100644
--- a/src/lib/corelib/buildgraph/environmentscriptrunner.cpp
+++ b/src/lib/corelib/buildgraph/environmentscriptrunner.cpp
@@ -129,12 +129,12 @@ void EnvironmentScriptRunner::setupEnvironment()
return;
QMap<QString, const ResolvedModule *> moduleMap;
- for (const ResolvedModuleConstPtr &module : m_product->modules)
+ for (const auto &module : m_product->modules)
moduleMap.insert(module->name, module.get());
QHash<const ResolvedModule*, QList<const ResolvedModule*> > moduleParents;
QHash<const ResolvedModule*, QList<const ResolvedModule*> > moduleChildren;
- for (const ResolvedModuleConstPtr &module : m_product->modules) {
+ for (const auto &module : m_product->modules) {
for (const QString &moduleName : qAsConst(module->moduleDependencies)) {
const ResolvedModule * const depmod = moduleMap.value(moduleName);
QBS_ASSERT(depmod, return);
@@ -144,7 +144,7 @@ void EnvironmentScriptRunner::setupEnvironment()
}
QList<const ResolvedModule *> rootModules;
- for (const ResolvedModuleConstPtr &module : m_product->modules) {
+ for (const auto &module : m_product->modules) {
if (moduleParents.value(module.get()).isEmpty()) {
QBS_ASSERT(module, return);
rootModules.push_back(module.get());
diff --git a/src/lib/corelib/buildgraph/executor.cpp b/src/lib/corelib/buildgraph/executor.cpp
index de81ada20..377222d21 100644
--- a/src/lib/corelib/buildgraph/executor.cpp
+++ b/src/lib/corelib/buildgraph/executor.cpp
@@ -102,12 +102,8 @@ Executor::Executor(Logger logger, QObject *parent)
Executor::~Executor()
{
- // jobs must be destroyed before deleting the shared scan result cache
- for (ExecutorJob *job : qAsConst(m_availableJobs))
- delete job;
- const auto processingJobs = m_processingJobs.keys();
- for (ExecutorJob *job : processingJobs)
- delete job;
+ // jobs must be destroyed before deleting the m_inputArtifactScanContext
+ m_allJobs.clear();
delete m_inputArtifactScanContext;
delete m_productInstaller;
}
@@ -153,7 +149,7 @@ void Executor::retrieveSourceFileTimestamp(Artifact *artifact) const
void Executor::build()
{
try {
- m_partialBuild = m_productsToBuild.size() != m_allProducts.size();
+ m_partialBuild = size_t(m_productsToBuild.size()) != m_allProducts.size();
doBuild();
} catch (const ErrorInfo &e) {
handleError(e);
@@ -170,7 +166,7 @@ void Executor::setProject(const TopLevelProjectPtr &project)
m_projectsByName.insert(std::make_pair(p->name, p.get()));
}
-void Executor::setProducts(const std::vector<ResolvedProductPtr> &productsToBuild)
+void Executor::setProducts(const QVector<ResolvedProductPtr> &productsToBuild)
{
m_productsToBuild = productsToBuild;
m_productsByName.clear();
@@ -266,8 +262,7 @@ void Executor::doBuild()
doSanityChecks();
QBS_CHECK(!m_project->buildData->evaluationContext);
- m_project->buildData->evaluationContext
- = RulesEvaluationContextPtr(new RulesEvaluationContext(m_logger));
+ m_project->buildData->evaluationContext = std::make_shared<RulesEvaluationContext>(m_logger);
m_evalContext = m_project->buildData->evaluationContext;
m_elapsedTimeRules = m_elapsedTimeScanners = m_elapsedTimeInstalling = 0;
@@ -700,7 +695,7 @@ bool Executor::transformerHasMatchingInputFiles(const TransformerConstPtr &trans
void Executor::setupJobLimits()
{
Settings settings(m_buildOptions.settingsDirectory());
- for (const ResolvedProductConstPtr &p : m_productsToBuild) {
+ for (const auto &p : qAsConst(m_productsToBuild)) {
const Preferences prefs(&settings, p->profile());
const JobLimits &jobLimitsFromSettings = prefs.jobLimits();
JobLimits effectiveJobLimits;
@@ -737,7 +732,7 @@ void Executor::setupProgressObserver()
if (!m_progressObserver)
return;
int totalEffort = 1; // For the effort after the last rule application;
- for (const ResolvedProductConstPtr &product : qAsConst(m_productsToBuild)) {
+ for (const auto &product : qAsConst(m_productsToBuild)) {
QBS_CHECK(product->buildData);
const auto filtered = filterByType<RuleNode>(product->buildData->allNodes());
totalEffort += std::distance(filtered.begin(), filtered.end());
@@ -749,7 +744,7 @@ void Executor::doSanityChecks()
{
QBS_CHECK(m_project);
QBS_CHECK(!m_productsToBuild.empty());
- for (const ResolvedProductConstPtr &product : qAsConst(m_productsToBuild)) {
+ for (const auto &product : qAsConst(m_productsToBuild)) {
QBS_CHECK(product->buildData);
QBS_CHECK(product->topLevelProject() == m_project.get());
}
@@ -768,10 +763,13 @@ void Executor::handleError(const ErrorInfo &error)
void Executor::addExecutorJobs()
{
- qCDebug(lcExec) << "preparing executor for" << m_buildOptions.maxJobCount()
- << "jobs in parallel";
- for (int i = 1; i <= m_buildOptions.maxJobCount(); i++) {
- const auto job = new ExecutorJob(m_logger, this);
+ const int count = m_buildOptions.maxJobCount();
+ qCDebug(lcExec) << "preparing executor for" << count << "jobs in parallel";
+ m_allJobs.reserve(count);
+ m_availableJobs.reserve(count);
+ for (int i = 1; i <= count; i++) {
+ m_allJobs.push_back(std::make_unique<ExecutorJob>(m_logger));
+ const auto job = m_allJobs.back().get();
job->setMainThreadScriptEngine(m_evalContext->engine());
job->setObjectName(QStringLiteral("J%1").arg(i));
job->setDryRun(m_buildOptions.dryRun());
@@ -1084,7 +1082,7 @@ void Executor::checkForUnbuiltProducts()
if (m_buildOptions.executeRulesOnly())
return;
std::vector<ResolvedProductPtr> unbuiltProducts;
- for (const ResolvedProductPtr &product : m_productsToBuild) {
+ for (const ResolvedProductPtr &product : qAsConst(m_productsToBuild)) {
bool productBuilt = true;
for (BuildGraphNode *rootNode : qAsConst(product->buildData->rootNodes())) {
if (rootNode->buildState != BuildGraphNode::Built) {
@@ -1206,7 +1204,7 @@ void Executor::prepareAllNodes()
node->buildState = BuildGraphNode::Untouched;
}
}
- for (const ResolvedProductPtr &product : m_productsToBuild) {
+ for (const ResolvedProductPtr &product : qAsConst(m_productsToBuild)) {
QBS_CHECK(product->buildData);
for (Artifact * const artifact : filterByType<Artifact>(product->buildData->allNodes()))
prepareArtifact(artifact);
@@ -1228,7 +1226,7 @@ void Executor::syncFileDependencies()
"removing from lookup table";
m_project->buildData->removeFromLookupTable(dep);
bool isReferencedByArtifact = false;
- for (const ResolvedProductConstPtr &product : m_allProducts) {
+ for (const auto &product : m_allProducts) {
if (!product->buildData)
continue;
const auto artifactList = filterByType<Artifact>(product->buildData->allNodes());
@@ -1310,7 +1308,7 @@ void Executor::prepareProducts()
{
ProductPrioritySetter prioritySetter(m_allProducts);
prioritySetter.apply();
- for (const ResolvedProductPtr &product : m_productsToBuild) {
+ for (const ResolvedProductPtr &product : qAsConst(m_productsToBuild)) {
EnvironmentScriptRunner(product.get(), m_evalContext.get(), m_project->environment)
.setupForBuild();
}
@@ -1319,7 +1317,7 @@ void Executor::prepareProducts()
void Executor::setupRootNodes()
{
m_roots.clear();
- for (const ResolvedProductPtr &product : m_productsToBuild)
+ for (const ResolvedProductPtr &product : qAsConst(m_productsToBuild))
m_roots += product->buildData->rootNodes();
}
diff --git a/src/lib/corelib/buildgraph/executor.h b/src/lib/corelib/buildgraph/executor.h
index 1fd591176..cc879e125 100644
--- a/src/lib/corelib/buildgraph/executor.h
+++ b/src/lib/corelib/buildgraph/executor.h
@@ -81,7 +81,7 @@ public:
~Executor() override;
void setProject(const TopLevelProjectPtr &project);
- void setProducts(const std::vector<ResolvedProductPtr> &productsToBuild);
+ void setProducts(const QVector<ResolvedProductPtr> &productsToBuild);
void setBuildOptions(const BuildOptions &buildOptions);
void setProgressObserver(ProgressObserver *observer) { m_progressObserver = observer; }
@@ -166,10 +166,11 @@ private:
BuildOptions m_buildOptions;
Logger m_logger;
ProgressObserver *m_progressObserver;
+ std::vector<std::unique_ptr<ExecutorJob>> m_allJobs;
QList<ExecutorJob*> m_availableJobs;
ExecutorState m_state;
TopLevelProjectPtr m_project;
- std::vector<ResolvedProductPtr> m_productsToBuild;
+ QVector<ResolvedProductPtr> m_productsToBuild;
std::vector<ResolvedProductPtr> m_allProducts;
std::unordered_map<QString, const ResolvedProduct *> m_productsByName;
std::unordered_map<QString, const ResolvedProject *> m_projectsByName;
diff --git a/src/lib/corelib/buildgraph/executorjob.cpp b/src/lib/corelib/buildgraph/executorjob.cpp
index 79f17377d..bc96cbb6e 100644
--- a/src/lib/corelib/buildgraph/executorjob.cpp
+++ b/src/lib/corelib/buildgraph/executorjob.cpp
@@ -71,9 +71,7 @@ ExecutorJob::ExecutorJob(const Logger &logger, QObject *parent)
reset();
}
-ExecutorJob::~ExecutorJob()
-{
-}
+ExecutorJob::~ExecutorJob() = default;
void ExecutorJob::setMainThreadScriptEngine(ScriptEngine *engine)
{
diff --git a/src/lib/corelib/buildgraph/executorjob.h b/src/lib/corelib/buildgraph/executorjob.h
index bc8954072..1f8f0cd73 100644
--- a/src/lib/corelib/buildgraph/executorjob.h
+++ b/src/lib/corelib/buildgraph/executorjob.h
@@ -65,7 +65,7 @@ class ExecutorJob : public QObject
{
Q_OBJECT
public:
- ExecutorJob(const Logger &logger, QObject *parent);
+ explicit ExecutorJob(const Logger &logger, QObject *parent = nullptr);
~ExecutorJob() override;
void setMainThreadScriptEngine(ScriptEngine *engine);
diff --git a/src/lib/corelib/buildgraph/filedependency.cpp b/src/lib/corelib/buildgraph/filedependency.cpp
index 9420fa96b..cbee758c7 100644
--- a/src/lib/corelib/buildgraph/filedependency.cpp
+++ b/src/lib/corelib/buildgraph/filedependency.cpp
@@ -44,13 +44,9 @@
namespace qbs {
namespace Internal {
-FileResourceBase::FileResourceBase()
-{
-}
+FileResourceBase::FileResourceBase() = default;
-FileResourceBase::~FileResourceBase()
-{
-}
+FileResourceBase::~FileResourceBase() = default;
void FileResourceBase::setTimestamp(const FileTime &t)
@@ -86,13 +82,9 @@ void FileResourceBase::store(PersistentPool &pool)
}
-FileDependency::FileDependency()
-{
-}
+FileDependency::FileDependency() = default;
-FileDependency::~FileDependency()
-{
-}
+FileDependency::~FileDependency() = default;
} // namespace Internal
} // namespace qbs
diff --git a/src/lib/corelib/buildgraph/inputartifactscanner.cpp b/src/lib/corelib/buildgraph/inputartifactscanner.cpp
index 81cbe2178..1d00e29e1 100644
--- a/src/lib/corelib/buildgraph/inputartifactscanner.cpp
+++ b/src/lib/corelib/buildgraph/inputartifactscanner.cpp
@@ -77,6 +77,7 @@ static void resolveDepencency(const RawScannedDependency &dependency,
FileDependency *fileDependencyArtifact = nullptr;
Artifact *dependencyInProduct = nullptr;
Artifact *dependencyInOtherProduct = nullptr;
+ bool productOfDependencyIsDependency = false;
const auto files = project->topLevelProject()
->buildData->lookupFiles(absDirPath, dependency.fileName());
for (FileResourceBase *lookupResult : files) {
@@ -86,10 +87,13 @@ static void resolveDepencency(const RawScannedDependency &dependency,
break;
case FileResourceBase::FileTypeArtifact: {
auto const foundArtifact = static_cast<Artifact *>(lookupResult);
- if (foundArtifact->product == product)
+ if (foundArtifact->product == product) {
dependencyInProduct = foundArtifact;
- else
+ } else if (!productOfDependencyIsDependency) {
dependencyInOtherProduct = foundArtifact;
+ productOfDependencyIsDependency
+ = contains(product->dependencies, dependencyInOtherProduct->product.lock());
+ }
break;
}
}
@@ -102,6 +106,14 @@ static void resolveDepencency(const RawScannedDependency &dependency,
|| (result->file = dependencyInOtherProduct)
|| (result->file = fileDependencyArtifact)) {
result->filePath = result->file->filePath();
+
+ if (result->file == dependencyInOtherProduct && !productOfDependencyIsDependency) {
+ qCDebug(lcDepScan) << "product" << dependencyInOtherProduct->product->fullDisplayName()
+ << "of scanned dependency" << result->filePath
+ << "is not a dependency of product" << product->fullDisplayName()
+ << ". The file dependency might get lost during change tracking.";
+ }
+
return;
}
@@ -349,6 +361,8 @@ void InputArtifactScanner::handleDependency(ResolvedDependency &dependency)
if (m_artifact == dependency.file)
return;
+ if (artifactDependency && artifactDependency->transformer == m_artifact->transformer)
+ return;
if (fileDependency) {
m_artifact->fileDependencies << fileDependency;
@@ -372,16 +386,14 @@ void InputArtifactScanner::scanWithScannerPlugin(DependencyScanner *scanner,
const QStringList &dependencies = scanner->collectDependencies(
inputArtifact, fileToBeScanned, m_fileTagsForScanner.constData());
for (const QString &s : dependencies)
- scanResult->deps.push_back(RawScannedDependency(s));
+ scanResult->deps.emplace_back(s);
}
InputArtifactScannerContext::DependencyScannerCacheItem::DependencyScannerCacheItem() : valid(false)
{
}
-InputArtifactScannerContext::DependencyScannerCacheItem::~DependencyScannerCacheItem()
-{
-}
+InputArtifactScannerContext::DependencyScannerCacheItem::~DependencyScannerCacheItem() = default;
} // namespace Internal
} // namespace qbs
diff --git a/src/lib/corelib/buildgraph/nodetreedumper.cpp b/src/lib/corelib/buildgraph/nodetreedumper.cpp
index 89975baf2..8475a46cf 100644
--- a/src/lib/corelib/buildgraph/nodetreedumper.cpp
+++ b/src/lib/corelib/buildgraph/nodetreedumper.cpp
@@ -51,13 +51,13 @@
namespace qbs {
namespace Internal {
-static unsigned int indentWidth() { return 4; }
+static int indentWidth() { return 4; }
NodeTreeDumper::NodeTreeDumper(QIODevice &outDevice) : m_outDevice(outDevice)
{
}
-void NodeTreeDumper::start(const QList<ResolvedProductPtr> &products)
+void NodeTreeDumper::start(const QVector<ResolvedProductPtr> &products)
{
m_indentation = 0;
for (const ResolvedProductPtr &p : products) {
diff --git a/src/lib/corelib/buildgraph/nodetreedumper.h b/src/lib/corelib/buildgraph/nodetreedumper.h
index 4175ce727..38ccd6dae 100644
--- a/src/lib/corelib/buildgraph/nodetreedumper.h
+++ b/src/lib/corelib/buildgraph/nodetreedumper.h
@@ -57,7 +57,7 @@ class NodeTreeDumper : public BuildGraphVisitor
public:
NodeTreeDumper(QIODevice &outDevice);
- void start(const QList<ResolvedProductPtr> &products);
+ void start(const QVector<ResolvedProductPtr> &products);
private:
bool visit(Artifact *artifact) override;
@@ -74,7 +74,7 @@ private:
QIODevice &m_outDevice;
ResolvedProductPtr m_currentProduct;
NodeSet m_visited;
- unsigned int m_indentation = 0;
+ int m_indentation = 0;
};
} // namespace Internal
diff --git a/src/lib/corelib/buildgraph/processcommandexecutor.cpp b/src/lib/corelib/buildgraph/processcommandexecutor.cpp
index 79edda320..7cde8553c 100644
--- a/src/lib/corelib/buildgraph/processcommandexecutor.cpp
+++ b/src/lib/corelib/buildgraph/processcommandexecutor.cpp
@@ -166,6 +166,7 @@ bool ProcessCommandExecutor::doStart()
.arg(responseFile.fileName())));
return false;
}
+ const auto separator = cmd->responseFileSeparator().toUtf8();
for (int i = cmd->responseFileArgumentIndex(); i < cmd->arguments().size(); ++i) {
const QString arg = cmd->arguments().at(i);
if (arg.startsWith(cmd->responseFileUsagePrefix())) {
@@ -179,7 +180,7 @@ bool ProcessCommandExecutor::doStart()
} else {
responseFile.write(qbs::Internal::shellQuote(arg).toLocal8Bit());
}
- responseFile.write("\n");
+ responseFile.write(separator);
}
responseFile.close();
m_responseFileName = responseFile.fileName();
diff --git a/src/lib/corelib/buildgraph/productinstaller.cpp b/src/lib/corelib/buildgraph/productinstaller.cpp
index d4acc9ace..80a76d7f5 100644
--- a/src/lib/corelib/buildgraph/productinstaller.cpp
+++ b/src/lib/corelib/buildgraph/productinstaller.cpp
@@ -60,7 +60,7 @@ namespace qbs {
namespace Internal {
ProductInstaller::ProductInstaller(TopLevelProjectPtr project,
- std::vector<ResolvedProductPtr> products, InstallOptions options,
+ QVector<ResolvedProductPtr> products, InstallOptions options,
ProgressObserver *observer, Logger logger)
: m_project(std::move(project)),
m_products(std::move(products)),
@@ -96,7 +96,7 @@ void ProductInstaller::install()
removeInstallRoot();
QList<const Artifact *> artifactsToInstall;
- for (const ResolvedProductConstPtr &product : qAsConst(m_products)) {
+ for (const auto &product : qAsConst(m_products)) {
QBS_CHECK(product->buildData);
for (const Artifact *artifact : filterByType<Artifact>(product->buildData->allNodes())) {
if (artifact->properties->qbsPropertyValue(StringConstants::installProperty()).toBool())
@@ -250,5 +250,5 @@ void ProductInstaller::handleError(const QString &message)
m_logger.qbsWarning() << message;
}
-} // namespace Intern
+} // namespace Internal
} // namespace qbs
diff --git a/src/lib/corelib/buildgraph/productinstaller.h b/src/lib/corelib/buildgraph/productinstaller.h
index 09828cfe9..c07e0b7cf 100644
--- a/src/lib/corelib/buildgraph/productinstaller.h
+++ b/src/lib/corelib/buildgraph/productinstaller.h
@@ -56,7 +56,7 @@ class ProductInstaller
{
public:
ProductInstaller(TopLevelProjectPtr project,
- std::vector<ResolvedProductPtr> products,
+ QVector<ResolvedProductPtr> products,
InstallOptions options, ProgressObserver *observer, Logger logger);
void install();
@@ -72,7 +72,7 @@ private:
void handleError(const QString &message);
const TopLevelProjectConstPtr m_project;
- const std::vector<ResolvedProductPtr> m_products;
+ const QVector<ResolvedProductPtr> m_products;
InstallOptions m_options;
ProgressObserver * const m_observer;
Logger m_logger;
diff --git a/src/lib/corelib/buildgraph/projectbuilddata.cpp b/src/lib/corelib/buildgraph/projectbuilddata.cpp
index 31012e23e..0ac6b1537 100644
--- a/src/lib/corelib/buildgraph/projectbuilddata.cpp
+++ b/src/lib/corelib/buildgraph/projectbuilddata.cpp
@@ -60,6 +60,8 @@
#include <tools/qttools.h>
#include <tools/stlutils.h>
+#include <memory>
+
namespace qbs {
namespace Internal {
@@ -276,7 +278,7 @@ void BuildDataResolver::resolveBuildData(const TopLevelProjectPtr &resolvedProje
{
QBS_CHECK(!resolvedProject->buildData);
m_project = resolvedProject;
- resolvedProject->buildData.reset(new ProjectBuildData);
+ resolvedProject->buildData = std::make_unique<ProjectBuildData>();
resolvedProject->buildData->evaluationContext = evalContext;
const std::vector<ResolvedProductPtr> &allProducts = resolvedProject->allProducts();
evalContext->initializeObserver(Tr::tr("Setting up build graph for configuration %1")
@@ -390,7 +392,7 @@ void BuildDataResolver::resolveProductBuildData(const ResolvedProductPtr &produc
evalContext()->checkForCancelation();
- product->buildData.reset(new ProductBuildData);
+ product->buildData = std::make_unique<ProductBuildData>();
ArtifactSetByFileTag artifactsPerFileTag;
for (const auto &dependency : qAsConst(product->dependencies)) {
@@ -411,7 +413,7 @@ void BuildDataResolver::resolveProductBuildData(const ResolvedProductPtr &produc
artifactsPerFileTag["qbs"].insert(qbsFileArtifact);
// read sources
- for (const SourceArtifactConstPtr &sourceArtifact : product->allEnabledFiles()) {
+ for (const auto &sourceArtifact : product->allEnabledFiles()) {
QString filePath = sourceArtifact->absoluteFilePath;
if (lookupArtifact(product, filePath))
continue; // ignore duplicate artifacts
@@ -443,7 +445,7 @@ void BuildDataResolver::connectRulesToDependencies(const ResolvedProductPtr &pro
std::vector<RuleNode *> ruleNodes;
for (RuleNode *ruleNode : filterByType<RuleNode>(product->buildData->allNodes()))
ruleNodes.push_back(ruleNode);
- for (const ResolvedProductConstPtr &dep : dependencies) {
+ for (const auto &dep : dependencies) {
if (!dep->buildData)
continue;
for (RuleNode *depRuleNode : filterByType<RuleNode>(dep->buildData->allNodes())) {
diff --git a/src/lib/corelib/buildgraph/qtmocscanner.cpp b/src/lib/corelib/buildgraph/qtmocscanner.cpp
index c834c60e6..4e054a636 100644
--- a/src/lib/corelib/buildgraph/qtmocscanner.cpp
+++ b/src/lib/corelib/buildgraph/qtmocscanner.cpp
@@ -167,7 +167,7 @@ static RawScanResult runScanner(ScannerPlugin *scanner, const Artifact *artifact
if (FileInfo::exists(localFilePath))
includedFilePath = localFilePath;
}
- scanData.rawScanResult.deps.push_back(RawScannedDependency(includedFilePath));
+ scanData.rawScanResult.deps.emplace_back(includedFilePath);
}
scanner->close(opaq);
diff --git a/src/lib/corelib/buildgraph/requesteddependencies.cpp b/src/lib/corelib/buildgraph/requesteddependencies.cpp
index f993b2518..b95c8db94 100644
--- a/src/lib/corelib/buildgraph/requesteddependencies.cpp
+++ b/src/lib/corelib/buildgraph/requesteddependencies.cpp
@@ -48,9 +48,9 @@ namespace Internal {
static Set<QString> depNamesForProduct(const ResolvedProduct *p)
{
Set<QString> names;
- for (const ResolvedProductConstPtr &dep : p->dependencies)
+ for (const auto &dep : p->dependencies)
names.insert(dep->uniqueName());
- for (const ResolvedModuleConstPtr &m : p->modules) {
+ for (const auto &m : p->modules) {
if (!m->isProduct)
names.insert(m->name);
}
@@ -73,7 +73,7 @@ bool RequestedDependencies::isUpToDate(const TopLevelProject *project) const
{
if (m_depsPerProduct.empty())
return true;
- for (const ResolvedProductConstPtr &product : project->allProducts()) {
+ for (const auto &product : project->allProducts()) {
const auto it = m_depsPerProduct.find(product->uniqueName());
if (it == m_depsPerProduct.cend())
continue;
diff --git a/src/lib/corelib/buildgraph/rescuableartifactdata.h b/src/lib/corelib/buildgraph/rescuableartifactdata.h
index 3e4d6e25f..6dd10f76c 100644
--- a/src/lib/corelib/buildgraph/rescuableartifactdata.h
+++ b/src/lib/corelib/buildgraph/rescuableartifactdata.h
@@ -84,9 +84,12 @@ public:
struct ChildData
{
- ChildData(const QString &n = QString(), const QString &m = QString(),
- const QString &c = QString(), bool byScanner = false)
- : productName(n), productMultiplexId(m), childFilePath(c), addedByScanner(byScanner)
+ ChildData(QString n = QString(), QString m = QString(),
+ QString c = QString(), bool byScanner = false)
+ : productName(std::move(n))
+ , productMultiplexId(std::move(m))
+ , childFilePath(std::move(c))
+ , addedByScanner(byScanner)
{}
template<PersistentPool::OpType opType> void completeSerializationOp(PersistentPool &pool)
diff --git a/src/lib/corelib/buildgraph/rulecommands.cpp b/src/lib/corelib/buildgraph/rulecommands.cpp
index 31ff6be4b..8fa3255f1 100644
--- a/src/lib/corelib/buildgraph/rulecommands.cpp
+++ b/src/lib/corelib/buildgraph/rulecommands.cpp
@@ -70,6 +70,7 @@ static QString responseFileUsagePrefixProperty()
{
return QStringLiteral("responseFileUsagePrefix");
}
+static QString responseFileSeparatorProperty() { return QStringLiteral("responseFileSeparator"); }
static QString silentProperty() { return QStringLiteral("silent"); }
static QString stderrFilePathProperty() { return QStringLiteral("stderrFilePath"); }
static QString stderrFilterFunctionProperty() { return QStringLiteral("stderrFilterFunction"); }
@@ -78,7 +79,7 @@ static QString stdoutFilterFunctionProperty() { return QStringLiteral("stdoutFil
static QString timeoutProperty() { return QStringLiteral("timeout"); }
static QString workingDirProperty() { return QStringLiteral("workingDirectory"); }
-static QString invokedSourceCode(const QScriptValue codeOrFunction)
+static QString invokedSourceCode(const QScriptValue &codeOrFunction)
{
const QString &code = codeOrFunction.toString();
return codeOrFunction.isFunction() ? QStringLiteral("(") + code + QStringLiteral(")()") : code;
@@ -94,9 +95,7 @@ AbstractCommand::AbstractCommand()
{
}
-AbstractCommand::~AbstractCommand()
-{
-}
+AbstractCommand::~AbstractCommand() = default;
bool AbstractCommand::equals(const AbstractCommand *other) const
{
@@ -218,6 +217,8 @@ static QScriptValue js_Command(QScriptContext *context, QScriptEngine *engine)
engine->toScriptValue(commandPrototype->responseFileArgumentIndex()));
cmd.setProperty(responseFileUsagePrefixProperty(),
engine->toScriptValue(commandPrototype->responseFileUsagePrefix()));
+ cmd.setProperty(responseFileSeparatorProperty(),
+ engine->toScriptValue(commandPrototype->responseFileSeparator()));
cmd.setProperty(stdoutFilePathProperty(),
engine->toScriptValue(commandPrototype->stdoutFilePath()));
cmd.setProperty(stderrFilePathProperty(),
@@ -241,6 +242,7 @@ ProcessCommand::ProcessCommand()
: m_maxExitCode(0)
, m_responseFileThreshold(defaultResponseFileThreshold())
, m_responseFileArgumentIndex(0)
+ , m_responseFileSeparator(QStringLiteral("\n"))
{
}
@@ -279,6 +281,7 @@ bool ProcessCommand::equals(const AbstractCommand *otherAbstractCommand) const
&& m_responseFileThreshold == other->m_responseFileThreshold
&& m_responseFileArgumentIndex == other->m_responseFileArgumentIndex
&& m_responseFileUsagePrefix == other->m_responseFileUsagePrefix
+ && m_responseFileSeparator == other->m_responseFileSeparator
&& m_stdoutFilePath == other->m_stdoutFilePath
&& m_stderrFilePath == other->m_stderrFilePath
&& m_relevantEnvVars == other->m_relevantEnvVars
@@ -313,6 +316,8 @@ void ProcessCommand::fillFromScriptValue(const QScriptValue *scriptValue, const
.toInt32();
m_responseFileUsagePrefix = scriptValue->property(responseFileUsagePrefixProperty())
.toString();
+ m_responseFileSeparator = scriptValue->property(responseFileSeparatorProperty())
+ .toString();
QStringList envList = scriptValue->property(environmentProperty()).toVariant()
.toStringList();
getEnvironmentFromList(envList);
@@ -399,9 +404,7 @@ void JavaScriptCommand::setupForJavaScript(QScriptValue targetObject)
targetObject.setProperty(StringConstants::javaScriptCommandType(), ctor);
}
-JavaScriptCommand::JavaScriptCommand()
-{
-}
+JavaScriptCommand::JavaScriptCommand() = default;
bool JavaScriptCommand::equals(const AbstractCommand *otherAbstractCommand) const
{
diff --git a/src/lib/corelib/buildgraph/rulecommands.h b/src/lib/corelib/buildgraph/rulecommands.h
index d4d70d591..725cd6d89 100644
--- a/src/lib/corelib/buildgraph/rulecommands.h
+++ b/src/lib/corelib/buildgraph/rulecommands.h
@@ -136,6 +136,7 @@ public:
int responseFileThreshold() const { return m_responseFileThreshold; }
int responseFileArgumentIndex() const { return m_responseFileArgumentIndex; }
QString responseFileUsagePrefix() const { return m_responseFileUsagePrefix; }
+ QString responseFileSeparator() const { return m_responseFileSeparator; }
QProcessEnvironment environment() const { return m_environment; }
QStringList relevantEnvVars() const;
void clearRelevantEnvValues() { m_relevantEnvValues.clear(); }
@@ -158,10 +159,10 @@ private:
{
pool.serializationOp<opType>(m_program, m_arguments, m_environment, m_workingDir,
m_stdoutFilterFunction, m_stderrFilterFunction,
- m_responseFileUsagePrefix, m_maxExitCode,
- m_responseFileThreshold, m_responseFileArgumentIndex,
- m_relevantEnvVars, m_relevantEnvValues, m_stdoutFilePath,
- m_stderrFilePath);
+ m_responseFileUsagePrefix, m_responseFileSeparator,
+ m_maxExitCode, m_responseFileThreshold,
+ m_responseFileArgumentIndex, m_relevantEnvVars,
+ m_relevantEnvValues, m_stdoutFilePath, m_stderrFilePath);
}
QString m_program;
@@ -173,6 +174,7 @@ private:
int m_responseFileThreshold; // When to use response files? In bytes of (program name + arguments).
int m_responseFileArgumentIndex;
QString m_responseFileUsagePrefix;
+ QString m_responseFileSeparator;
QProcessEnvironment m_environment;
QStringList m_relevantEnvVars;
QProcessEnvironment m_relevantEnvValues;
diff --git a/src/lib/corelib/buildgraph/rulegraph.cpp b/src/lib/corelib/buildgraph/rulegraph.cpp
index 23227ca09..23f22b7f2 100644
--- a/src/lib/corelib/buildgraph/rulegraph.cpp
+++ b/src/lib/corelib/buildgraph/rulegraph.cpp
@@ -46,9 +46,7 @@
namespace qbs {
namespace Internal {
-RuleGraph::RuleGraph()
-{
-}
+RuleGraph::RuleGraph() = default;
void RuleGraph::build(const std::vector<RulePtr> &rules, const FileTags &productFileTags)
{
@@ -63,7 +61,7 @@ void RuleGraph::build(const std::vector<RulePtr> &rules, const FileTags &product
m_parents.resize(rules.size());
m_children.resize(rules.size());
- for (const RuleConstPtr &rule : qAsConst(m_rules)) {
+ for (const auto &rule : qAsConst(m_rules)) {
FileTags inFileTags = rule->inputs;
inFileTags += rule->auxiliaryInputs;
inFileTags += rule->explicitlyDependsOn;
@@ -100,7 +98,7 @@ void RuleGraph::dump() const
QByteArray indent;
printf("---rule graph dump:\n");
Set<int> rootRules;
- for (const RuleConstPtr &rule : qAsConst(m_rules))
+ for (const auto &rule : qAsConst(m_rules))
if (m_parents[rule->ruleGraphId].empty())
rootRules += rule->ruleGraphId;
for (int idx : qAsConst(rootRules))
diff --git a/src/lib/corelib/buildgraph/rulenode.cpp b/src/lib/corelib/buildgraph/rulenode.cpp
index bf25b1da8..0558ba144 100644
--- a/src/lib/corelib/buildgraph/rulenode.cpp
+++ b/src/lib/corelib/buildgraph/rulenode.cpp
@@ -56,13 +56,9 @@
namespace qbs {
namespace Internal {
-RuleNode::RuleNode()
-{
-}
+RuleNode::RuleNode() = default;
-RuleNode::~RuleNode()
-{
-}
+RuleNode::~RuleNode() = default;
void RuleNode::accept(BuildGraphVisitor *visitor)
{
@@ -182,7 +178,7 @@ void RuleNode::apply(const Logger &logger,
if (removedInputForcesOutputRemoval)
outputArtifactsToRemove += parent;
else
- connectionsToBreak.push_back(std::make_pair(parent, artifact));
+ connectionsToBreak.emplace_back(parent, artifact);
}
disconnect(this, artifact);
}
@@ -262,7 +258,7 @@ ArtifactSet RuleNode::currentInputArtifacts() const
}
}
- for (const ResolvedProductConstPtr &dep : qAsConst(product->dependencies)) {
+ for (const auto &dep : qAsConst(product->dependencies)) {
if (!dep->buildData)
continue;
for (Artifact * const a : filterByType<Artifact>(dep->buildData->allNodes())) {
diff --git a/src/lib/corelib/buildgraph/rulesapplicator.cpp b/src/lib/corelib/buildgraph/rulesapplicator.cpp
index 16aa0c001..0d36e1e21 100644
--- a/src/lib/corelib/buildgraph/rulesapplicator.cpp
+++ b/src/lib/corelib/buildgraph/rulesapplicator.cpp
@@ -79,12 +79,13 @@ namespace Internal {
RulesApplicator::RulesApplicator(
ResolvedProductPtr product,
- std::unordered_map<QString, const ResolvedProduct *> productsByName,
- std::unordered_map<QString, const ResolvedProject *> projectsByName,
+ const std::unordered_map<QString, const ResolvedProduct *> &productsByName,
+ const std::unordered_map<QString, const ResolvedProject *> &projectsByName,
Logger logger)
: m_product(std::move(product))
- , m_productsByName(std::move(productsByName))
- , m_projectsByName(std::move(projectsByName))
+ // m_productsByName and m_projectsByName are references, cannot move-construct
+ , m_productsByName(productsByName)
+ , m_projectsByName(projectsByName)
, m_mocScanner(nullptr)
, m_logger(std::move(logger))
{
@@ -213,13 +214,13 @@ void RulesApplicator::doApply(const ArtifactSet &inputArtifacts, QScriptValue &p
ScriptEngine::argumentList(Rule::argumentNamesForOutputArtifacts(), scope()));
} else {
Set<QString> outputFilePaths;
- for (const RuleArtifactConstPtr &ruleArtifact : m_rule->artifacts) {
+ for (const auto &ruleArtifact : m_rule->artifacts) {
const OutputArtifactInfo outputInfo = createOutputArtifactFromRuleArtifact(
ruleArtifact, inputArtifacts, &outputFilePaths);
if (!outputInfo.artifact)
continue;
outputArtifacts.push_back(outputInfo.artifact);
- ruleArtifactArtifactMap.push_back({ ruleArtifact.get(), outputInfo });
+ ruleArtifactArtifactMap.emplace_back(ruleArtifact.get(), outputInfo);
}
if (m_rule->artifacts.empty()) {
outputArtifacts.push_back(createOutputArtifactFromRuleArtifact(
@@ -287,7 +288,7 @@ void RulesApplicator::doApply(const ArtifactSet &inputArtifacts, QScriptValue &p
}
const QVariant value = scriptValue.toVariant();
setConfigProperty(artifactModulesCfg, binding.name, value);
- outputArtifact->pureProperties.push_back(std::make_pair(binding.name, value));
+ outputArtifact->pureProperties.emplace_back(binding.name, value);
}
outputArtifact->properties->setValue(artifactModulesCfg);
if (!outputInfo.newlyCreated && (outputArtifact->fileTags() != outputInfo.oldFileTags
@@ -354,7 +355,7 @@ ArtifactSet RulesApplicator::collectAdditionalInputs(const FileTags &tags, const
}
if (inputsSources.testFlag(Dependencies)) {
- for (const ResolvedProductConstPtr &depProduct : product->dependencies) {
+ for (const auto &depProduct : product->dependencies) {
for (Artifact * const ta : depProduct->targetArtifacts()) {
if (ta->fileTags().contains(fileTag)
&& !ta->fileTags().intersects(rule->excludedInputs)) {
@@ -607,7 +608,7 @@ public:
for (const auto &e : m_propertyValues) {
const QStringList key{e.module, e.name};
setConfigProperty(artifactCfg, key, e.value);
- outputArtifact->pureProperties.push_back(std::make_pair(key, e.value));
+ outputArtifact->pureProperties.emplace_back(key, e.value);
}
outputArtifact->properties->setValue(artifactCfg);
}
diff --git a/src/lib/corelib/buildgraph/rulesapplicator.h b/src/lib/corelib/buildgraph/rulesapplicator.h
index 1160f3d09..da7815014 100644
--- a/src/lib/corelib/buildgraph/rulesapplicator.h
+++ b/src/lib/corelib/buildgraph/rulesapplicator.h
@@ -63,8 +63,8 @@ class RulesApplicator
{
public:
RulesApplicator(ResolvedProductPtr product,
- std::unordered_map<QString, const ResolvedProduct *> productsByName,
- std::unordered_map<QString, const ResolvedProject *> projectsByName,
+ const std::unordered_map<QString, const ResolvedProduct *> &productsByName,
+ const std::unordered_map<QString, const ResolvedProject *> &projectsByName,
Logger logger);
~RulesApplicator();
diff --git a/src/lib/corelib/buildgraph/scriptclasspropertyiterator.h b/src/lib/corelib/buildgraph/scriptclasspropertyiterator.h
index f6154f993..b57072236 100644
--- a/src/lib/corelib/buildgraph/scriptclasspropertyiterator.h
+++ b/src/lib/corelib/buildgraph/scriptclasspropertyiterator.h
@@ -57,10 +57,10 @@ class ScriptClassPropertyIterator : public QScriptClassPropertyIterator
{
public:
ScriptClassPropertyIterator(const QScriptValue &object, const QVariantMap &properties,
- const std::vector<QString> &additionalProperties)
+ std::vector<QString> additionalProperties)
: QScriptClassPropertyIterator(object),
m_it(properties),
- m_additionalProperties(additionalProperties)
+ m_additionalProperties(std::move(additionalProperties))
{
}
diff --git a/src/lib/corelib/buildgraph/timestampsupdater.cpp b/src/lib/corelib/buildgraph/timestampsupdater.cpp
index d31f57445..3f5279dd2 100644
--- a/src/lib/corelib/buildgraph/timestampsupdater.cpp
+++ b/src/lib/corelib/buildgraph/timestampsupdater.cpp
@@ -83,7 +83,7 @@ private:
};
void TimestampsUpdater::updateTimestamps(const TopLevelProjectPtr &project,
- const QList<ResolvedProductPtr> &products, const Logger &logger)
+ const QVector<ResolvedProductPtr> &products, const Logger &logger)
{
TimestampsUpdateVisitor v;
for (const ResolvedProductPtr &product : products)
diff --git a/src/lib/corelib/buildgraph/timestampsupdater.h b/src/lib/corelib/buildgraph/timestampsupdater.h
index cfe20df12..8184ca708 100644
--- a/src/lib/corelib/buildgraph/timestampsupdater.h
+++ b/src/lib/corelib/buildgraph/timestampsupdater.h
@@ -51,7 +51,7 @@ class TimestampsUpdater
{
public:
void updateTimestamps(const TopLevelProjectPtr &project,
- const QList<ResolvedProductPtr> &products, const Logger &logger);
+ const QVector<ResolvedProductPtr> &products, const Logger &logger);
};
} // namespace Internal
diff --git a/src/lib/corelib/buildgraph/transformer.cpp b/src/lib/corelib/buildgraph/transformer.cpp
index cc0b4c923..29f2bcdf0 100644
--- a/src/lib/corelib/buildgraph/transformer.cpp
+++ b/src/lib/corelib/buildgraph/transformer.cpp
@@ -62,9 +62,7 @@ Transformer::Transformer() : alwaysRun(false)
{
}
-Transformer::~Transformer()
-{
-}
+Transformer::~Transformer() = default;
static QScriptValue js_baseName(QScriptContext *ctx, QScriptEngine *engine,
const Artifact *artifact)
@@ -196,7 +194,7 @@ void Transformer::setupInputs(QScriptValue targetScriptValue, const ArtifactSet
targetScriptValue.setProperty(StringConstants::inputVar(), inputScriptValue);
}
-void Transformer::setupInputs(QScriptValue targetScriptValue)
+void Transformer::setupInputs(const QScriptValue &targetScriptValue)
{
setupInputs(targetScriptValue, inputs, rule->module->name);
}
diff --git a/src/lib/corelib/buildgraph/transformer.h b/src/lib/corelib/buildgraph/transformer.h
index 2f6a8e56d..8772ed868 100644
--- a/src/lib/corelib/buildgraph/transformer.h
+++ b/src/lib/corelib/buildgraph/transformer.h
@@ -95,7 +95,7 @@ public:
const Artifact *artifact,
const QString &defaultModuleName);
ResolvedProductPtr product() const;
- void setupInputs(QScriptValue targetScriptValue);
+ void setupInputs(const QScriptValue &targetScriptValue);
void setupOutputs(QScriptValue targetScriptValue);
void setupExplicitlyDependsOn(QScriptValue targetScriptValue);
void createCommands(ScriptEngine *engine, const PrivateScriptFunction &script,
diff --git a/src/lib/corelib/buildgraph/transformerchangetracking.cpp b/src/lib/corelib/buildgraph/transformerchangetracking.cpp
index 505f0cbba..e44c31639 100644
--- a/src/lib/corelib/buildgraph/transformerchangetracking.cpp
+++ b/src/lib/corelib/buildgraph/transformerchangetracking.cpp
@@ -71,7 +71,7 @@ private:
const char *context) const;
bool isExportedModuleUpToDate(const QString &productName, const ExportedModule &module) const;
bool areExportedModulesUpToDate(
- const std::unordered_map<QString, ExportedModule> exportedModules) const;
+ const std::unordered_map<QString, ExportedModule> &exportedModules) const;
const Artifact *getArtifact(const QString &filePath, const QString &productName) const;
const ResolvedProduct *getProduct(const QString &name) const;
@@ -207,7 +207,7 @@ bool TrafoChangeTracker::isExportedModuleUpToDate(const QString &productName,
}
bool TrafoChangeTracker::areExportedModulesUpToDate(
- const std::unordered_map<QString, ExportedModule> exportedModules) const
+ const std::unordered_map<QString, ExportedModule> &exportedModules) const
{
for (const auto &kv : exportedModules) {
if (!isExportedModuleUpToDate(kv.first, kv.second))