From 835f8a90387c8d62e7ab262d23e3ab103aa6d133 Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Mon, 30 Jan 2017 15:40:42 +0100 Subject: Allow selecting armv7 as target architecture in qmlcachegen Change-Id: I36e8f95e83ea3de6553145efc762e3bc46f60071 Reviewed-by: Lars Knoll --- tools/qmlcachegen/qmlcache.prf | 5 ++++- tools/qmlcachegen/qmlcachegen.cpp | 20 +++++++++++++++++--- tools/qmlcachegen/qmlcachegen.pro | 2 +- 3 files changed, 22 insertions(+), 5 deletions(-) (limited to 'tools') diff --git a/tools/qmlcachegen/qmlcache.prf b/tools/qmlcachegen/qmlcache.prf index f151218811..fed9f0d2f3 100644 --- a/tools/qmlcachegen/qmlcache.prf +++ b/tools/qmlcachegen/qmlcache.prf @@ -1,8 +1,11 @@ qtPrepareTool(QML_CACHEGEN, qmlcachegen) +!isEmpty(QT_TARGET_ARCH):QML_CACHEGEN_ARCH=$$QT_TARGET_ARCH +else:QML_CACHEGEN_ARCH=$$QT_ARCH + qmlcachegen.input = QML_FILES qmlcachegen.output = ${QMAKE_FILE_IN}c -qmlcachegen.commands = $$QML_CACHEGEN ${QMAKE_FILE_IN} +qmlcachegen.commands = $$QML_CACHEGEN --target-architecture=$$QML_CACHEGEN_ARCH ${QMAKE_FILE_IN} qmlcachegen.name = Generate QML Cache ${QMAKE_FILE_IN} qmlcachegen.variable_out = AUX_QML_FILES diff --git a/tools/qmlcachegen/qmlcachegen.cpp b/tools/qmlcachegen/qmlcachegen.cpp index 21ff882c2f..4b902eda0f 100644 --- a/tools/qmlcachegen/qmlcachegen.cpp +++ b/tools/qmlcachegen/qmlcachegen.cpp @@ -39,6 +39,11 @@ QT_BEGIN_NAMESPACE extern Q_CORE_EXPORT QBasicAtomicInt qt_qhash_seed; + +namespace QV4 { namespace JIT { +Q_QML_EXPORT QV4::EvalISelFactory *createISelForArchitecture(const QString &architecture); +} } + QT_END_NAMESPACE struct Error @@ -261,6 +266,9 @@ int main(int argc, char **argv) parser.addHelpOption(); parser.addVersionOption(); + QCommandLineOption targetArchitectureOption(QStringLiteral("target-architecture"), QCoreApplication::translate("main", "Target architecture"), QCoreApplication::translate("main", "architecture")); + parser.addOption(targetArchitectureOption); + parser.addPositionalArgument(QStringLiteral("[qml file]"), QStringLiteral("QML source file to generate cache for.")); @@ -273,17 +281,23 @@ int main(int argc, char **argv) } const QString inputFile = sources.first(); - QV4::Moth::ISelFactory interpreterISelFactory; + QScopedPointer isel; + const QString targetArchitecture = parser.value(targetArchitectureOption); + + isel.reset(QV4::JIT::createISelForArchitecture(targetArchitecture)); + + if (!isel) + isel.reset(new QV4::Moth::ISelFactory); Error error; if (inputFile.endsWith(QLatin1String(".qml"))) { - if (!compileQmlFile(inputFile, &interpreterISelFactory, &error)) { + if (!compileQmlFile(inputFile, isel.data(), &error)) { error.augment(QLatin1String("Error compiling qml file: ")).print(); return EXIT_FAILURE; } } else if (inputFile.endsWith(QLatin1String(".js"))) { - if (!compileJSFile(inputFile, &interpreterISelFactory, &error)) { + if (!compileJSFile(inputFile, isel.data(), &error)) { error.augment(QLatin1String("Error compiling qml file: ")).print(); return EXIT_FAILURE; } diff --git a/tools/qmlcachegen/qmlcachegen.pro b/tools/qmlcachegen/qmlcachegen.pro index 48e08b0946..81783d0396 100644 --- a/tools/qmlcachegen/qmlcachegen.pro +++ b/tools/qmlcachegen/qmlcachegen.pro @@ -13,7 +13,7 @@ BUILD_INTEGRATION = qmlcache.prf qmake_integration.commands = $$QMAKE_COPY ${QMAKE_FILE_IN} ${QMAKE_FILE_OUT} qmake_integration.name = COPY ${QMAKE_FILE_IN} ${QMAKE_FILE_OUT} qmake_integration.CONFIG = no_clean no_link - !contains(TEMPLATE, vc.*): qmake_integration.variable_out = PRE_TARGETDEPS + !contains(TEMPLATE, vc.*): qmake_integration.variable_out = GENERATED_FILES QMAKE_EXTRA_COMPILERS += qmake_integration } -- cgit v1.2.3