aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/buildgraph
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@digia.com>2014-06-04 16:32:15 +0200
committerChristian Kandeler <christian.kandeler@digia.com>2014-06-11 23:07:41 +0200
commit74c99e52836a367c58a4f1108c5df527d3028f2c (patch)
tree28601e699769bfe0e98e263e7653190072e9113f /src/lib/corelib/buildgraph
parenta4041a342d21a7f950eba8255841f024ec93f0c8 (diff)
centralize input(s) property setup
For simplex rules we did set up the inputs with setupScriptEngineForArtifact. We removed setupScriptEngineForArtifact in favor of translateFileConfig. Change-Id: I0df90c65ad6157e715d83e785b3ae67d92ec2088 Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Diffstat (limited to 'src/lib/corelib/buildgraph')
-rw-r--r--src/lib/corelib/buildgraph/rulesapplicator.cpp38
-rw-r--r--src/lib/corelib/buildgraph/rulesapplicator.h1
-rw-r--r--src/lib/corelib/buildgraph/transformer.cpp2
3 files changed, 3 insertions, 38 deletions
diff --git a/src/lib/corelib/buildgraph/rulesapplicator.cpp b/src/lib/corelib/buildgraph/rulesapplicator.cpp
index ee5062c8e..38999e582 100644
--- a/src/lib/corelib/buildgraph/rulesapplicator.cpp
+++ b/src/lib/corelib/buildgraph/rulesapplicator.cpp
@@ -111,7 +111,6 @@ void RulesApplicator::applyRule(const RuleConstPtr &rule)
doApply(inputArtifacts, prepareScriptContext);
} else { // apply the rule once for each input
foreach (Artifact * const inputArtifact, inputArtifacts + usingsArtifacts) {
- setupScriptEngineForArtifact(inputArtifact);
ArtifactSet lst;
lst += inputArtifact;
doApply(lst, prepareScriptContext);
@@ -173,10 +172,7 @@ void RulesApplicator::doApply(const ArtifactSet &inputArtifacts, QScriptValue &p
// create the output artifacts from the set of input artifacts
Transformer::setupInputs(prepareScriptContext, inputArtifacts, m_rule->module->name);
copyProperty(QLatin1String("inputs"), prepareScriptContext, scope());
- if (m_rule->multiplex) {
- // ### awful! Revisit how the "input" property is set up!
- copyProperty(QLatin1String("input"), prepareScriptContext, scope());
- }
+ copyProperty(QLatin1String("input"), prepareScriptContext, scope());
copyProperty(QLatin1String("product"), prepareScriptContext, scope());
copyProperty(QLatin1String("project"), prepareScriptContext, scope());
if (m_rule->isDynamic()) {
@@ -260,38 +256,6 @@ void RulesApplicator::doApply(const ArtifactSet &inputArtifacts, QScriptValue &p
.arg(m_rule->toString()), m_rule->prepareScript->location);
}
-void RulesApplicator::setupScriptEngineForArtifact(Artifact *artifact)
-{
- QString inFileName = artifact->fileName();
- QString inBaseName = FileInfo::baseName(artifact->filePath());
- QString inCompleteBaseName = FileInfo::completeBaseName(artifact->filePath());
-
- QString basedir;
- if (artifact->artifactType == Artifact::SourceFile) {
- QDir sourceDir(m_product->sourceDirectory);
- basedir = FileInfo::path(sourceDir.relativeFilePath(artifact->filePath()));
- } else {
- QDir buildDir(m_product->topLevelProject()->buildDirectory);
- basedir = FileInfo::path(buildDir.relativeFilePath(artifact->filePath()));
- }
-
- // expose per file properties we want to use in an Artifact within a Rule
- QScriptValue scriptValue = engine()->newObject();
- ModuleProperties::init(scriptValue, artifact);
- scriptValue.setProperty(QLatin1String("fileName"), inFileName);
- scriptValue.setProperty(QLatin1String("filePath"), artifact->filePath());
- scriptValue.setProperty(QLatin1String("baseName"), inBaseName);
- scriptValue.setProperty(QLatin1String("completeBaseName"), inCompleteBaseName);
- scriptValue.setProperty(QLatin1String("baseDir"), basedir);
- scriptValue.setProperty(QLatin1String("fileTags"),
- engine()->toScriptValue(artifact->fileTags.toStringList()));
- attachPointerTo(scriptValue, artifact);
-
- scope().setProperty(QLatin1String("input"), scriptValue);
- Q_ASSERT_X(scriptValue.strictlyEquals(engine()->evaluate(QLatin1String("input"))),
- "BG", "The input object is not in current scope.");
-}
-
ArtifactSet RulesApplicator::collectOldOutputArtifacts(const ArtifactSet &inputArtifacts) const
{
ArtifactSet result;
diff --git a/src/lib/corelib/buildgraph/rulesapplicator.h b/src/lib/corelib/buildgraph/rulesapplicator.h
index 2cd63968f..334dfa084 100644
--- a/src/lib/corelib/buildgraph/rulesapplicator.h
+++ b/src/lib/corelib/buildgraph/rulesapplicator.h
@@ -60,7 +60,6 @@ public:
private:
void doApply(const ArtifactSet &inputArtifacts, QScriptValue &prepareScriptContext);
- void setupScriptEngineForArtifact(Artifact *artifact);
ArtifactSet collectOldOutputArtifacts(const ArtifactSet &inputArtifacts) const;
Artifact *createOutputArtifactFromRuleArtifact(const RuleArtifactConstPtr &ruleArtifact,
const ArtifactSet &inputArtifacts);
diff --git a/src/lib/corelib/buildgraph/transformer.cpp b/src/lib/corelib/buildgraph/transformer.cpp
index e0cbf900a..b9a206851 100644
--- a/src/lib/corelib/buildgraph/transformer.cpp
+++ b/src/lib/corelib/buildgraph/transformer.cpp
@@ -37,6 +37,7 @@
#include <logging/translator.h>
#include <tools/error.h>
#include <tools/persistence.h>
+#include <tools/scripttools.h>
#include <tools/qbsassert.h>
#include <QDir>
@@ -94,6 +95,7 @@ static void setArtifactProperty(QScriptValue &obj, const QString &name,
QScriptValue Transformer::translateFileConfig(QScriptEngine *scriptEngine, Artifact *artifact, const QString &defaultModuleName)
{
QScriptValue obj = scriptEngine->newObject();
+ attachPointerTo(obj, artifact);
ModuleProperties::init(obj, artifact);
obj.setProperty(QLatin1String("fileName"), artifact->fileName());
obj.setProperty(QLatin1String("filePath"), artifact->filePath());