diff options
Diffstat (limited to 'tools/qmlcachegen/qmlcachegen.cpp')
-rw-r--r-- | tools/qmlcachegen/qmlcachegen.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/tools/qmlcachegen/qmlcachegen.cpp b/tools/qmlcachegen/qmlcachegen.cpp index 1805dde5d2..f7891e7d4b 100644 --- a/tools/qmlcachegen/qmlcachegen.cpp +++ b/tools/qmlcachegen/qmlcachegen.cpp @@ -43,8 +43,12 @@ #include "resourcefilemapper.h" +#include <algorithm> + int filterResourceFile(const QString &input, const QString &output); -bool generateLoader(const QStringList &compiledFiles, const QString &output, const QStringList &resourceFileMappings, QString *errorString); +bool generateLoader(const QStringList &compiledFiles, const QStringList &retainedFiles, + const QString &output, const QStringList &resourceFileMappings, + QString *errorString); QString symbolNamespaceForPath(const QString &relativePath); QSet<QString> illegalNames; @@ -113,7 +117,7 @@ static void annotateListElements(QmlIR::Document *document) { QStringList listElementNames; - foreach (const QV4::CompiledData::Import *import, document->imports) { + for (const QV4::CompiledData::Import *import : qAsConst(document->imports)) { const QString uri = document->stringAt(import->uriIndex); if (uri != QStringLiteral("QtQml.Models") && uri != QStringLiteral("QtQuick")) continue; @@ -130,7 +134,7 @@ static void annotateListElements(QmlIR::Document *document) if (listElementNames.isEmpty()) return; - foreach (QmlIR::Object *object, document->objects) { + for (QmlIR::Object *object : qAsConst(document->objects)) { if (!listElementNames.contains(document->stringAt(object->inheritedTypeNameIndex))) continue; for (QmlIR::Binding *binding = object->firstBinding(); binding; binding = binding->next) { @@ -438,6 +442,8 @@ int main(int argc, char **argv) parser.addOption(resourceFileMappingOption); QCommandLineOption resourceOption(QStringLiteral("resource"), QCoreApplication::translate("main", "Qt resource file that might later contain one of the compiled files"), QCoreApplication::translate("main", "resource-file-name")); parser.addOption(resourceOption); + QCommandLineOption retainOption(QStringLiteral("retain"), QCoreApplication::translate("main", "Qt resource file the contents of which should not be replaced by empty stubs"), QCoreApplication::translate("main", "resource-file-name")); + parser.addOption(retainOption); QCommandLineOption resourcePathOption(QStringLiteral("resource-path"), QCoreApplication::translate("main", "Qt resource file path corresponding to the file being compiled"), QCoreApplication::translate("main", "resource-path")); parser.addOption(resourcePathOption); @@ -485,9 +491,13 @@ int main(int argc, char **argv) if (target == GenerateLoader) { ResourceFileMapper mapper(sources); + ResourceFileMapper retain(parser.values(retainOption)); Error error; - if (!generateLoader(mapper.qmlCompilerFiles(), outputFileName, parser.values(resourceFileMappingOption), &error.message)) { + QStringList retainedFiles = retain.qmlCompilerFiles(); + std::sort(retainedFiles.begin(), retainedFiles.end()); + if (!generateLoader(mapper.qmlCompilerFiles(), retainedFiles, outputFileName, + parser.values(resourceFileMappingOption), &error.message)) { error.augment(QLatin1String("Error generating loader stub: ")).print(); return EXIT_FAILURE; } |