aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/buildgraph/qtmocscanner.h
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@digia.com>2014-02-10 18:08:01 +0100
committerJoerg Bornemann <joerg.bornemann@digia.com>2014-02-13 15:33:27 +0100
commite73f60919079fc7cb0f0ad6d50b1a364c7b0d2a6 (patch)
tree3ce15f1f9b336063d591999ce325ce28a6e21320 /src/lib/corelib/buildgraph/qtmocscanner.h
parenta3634a6bbb193c47cdec887a6b29356c979961aa (diff)
support transformers with an unknown number of outputs
To support different types of nodes in the build graph, we introduce the base class BuildGraphNode. Artifact now derives from BuildGraphNode. A RuleNode class is introduced that represents a rule in the build graph. Rules are applied in the build phase and not in a pre-build phase anymore. The handling of moc has been revisited. The fixed automoc pre-build phase is no more. This is the squashed merge of a feature branch. Task-number: QBS-370 Change-Id: If27cdc51cba8c9542e4282c2caa456faa723aeff Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Diffstat (limited to 'src/lib/corelib/buildgraph/qtmocscanner.h')
-rw-r--r--src/lib/corelib/buildgraph/qtmocscanner.h76
1 files changed, 76 insertions, 0 deletions
diff --git a/src/lib/corelib/buildgraph/qtmocscanner.h b/src/lib/corelib/buildgraph/qtmocscanner.h
new file mode 100644
index 000000000..60983fe06
--- /dev/null
+++ b/src/lib/corelib/buildgraph/qtmocscanner.h
@@ -0,0 +1,76 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt Build Suite.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+****************************************************************************/
+
+#ifndef QBS_QTMOCSCANNER_H
+#define QBS_QTMOCSCANNER_H
+
+#include <language/language.h>
+#include <logging/logger.h>
+
+#include <QHash>
+#include <QScriptValue>
+#include <QString>
+
+QT_BEGIN_NAMESPACE
+class QScriptContext;
+QT_END_NAMESPACE
+
+class ScannerPlugin;
+
+namespace qbs {
+namespace Internal {
+
+class Artifact;
+class ScanResultCache;
+
+class QtMocScanner
+{
+public:
+ explicit QtMocScanner(const ResolvedProductPtr &product, QScriptValue targetScriptValue,
+ const Logger &logger);
+ ~QtMocScanner();
+
+private:
+ void findIncludedMocCppFiles();
+ static QScriptValue js_apply(QScriptContext *ctx, QScriptEngine *engine, void *data);
+ QScriptValue apply(QScriptEngine *engine, const Artifact *artifact);
+
+ const ResolvedProductPtr &m_product;
+ QScriptValue m_targetScriptValue;
+ const Logger &m_logger;
+ ScanResultCache *m_scanResultCache;
+ QHash<QString, QString> m_includedMocCppFiles;
+ ScannerPlugin *m_cppScanner;
+ ScannerPlugin *m_hppScanner;
+};
+
+} // namespace Internal
+} // namespace qbs
+
+#endif // QBS_QTMOCSCANNER_H