diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/qmlcachegen/Qt5QuickCompilerConfig.cmake | 2 | ||||
-rw-r--r-- | tools/qmlcachegen/generateloader.cpp | 15 | ||||
-rw-r--r-- | tools/qmlcachegen/qtquickcompiler.prf | 14 |
3 files changed, 20 insertions, 11 deletions
diff --git a/tools/qmlcachegen/Qt5QuickCompilerConfig.cmake b/tools/qmlcachegen/Qt5QuickCompilerConfig.cmake index 6fe1662995..56cb3fb55e 100644 --- a/tools/qmlcachegen/Qt5QuickCompilerConfig.cmake +++ b/tools/qmlcachegen/Qt5QuickCompilerConfig.cmake @@ -44,7 +44,7 @@ function(QTQUICK_COMPILER_ADD_RESOURCES outfiles) set(rcc_file_with_compilation_units) - exec_program(${rcc_path} ARGS -list ${input_resource} OUTPUT_VARIABLE rcc_contents) + exec_program(${rcc_path} ARGS -list \"${input_resource}\" OUTPUT_VARIABLE rcc_contents) string(REGEX REPLACE "[\r\n]+" ";" rcc_contents ${rcc_contents}) foreach(it ${rcc_contents}) get_filename_component(extension ${it} EXT) diff --git a/tools/qmlcachegen/generateloader.cpp b/tools/qmlcachegen/generateloader.cpp index 1a0b987c64..96528a9477 100644 --- a/tools/qmlcachegen/generateloader.cpp +++ b/tools/qmlcachegen/generateloader.cpp @@ -51,6 +51,7 @@ QString symbolNamespaceForPath(const QString &relativePath) symbol.replace(QLatin1Char('.'), QLatin1Char('_')); symbol.replace(QLatin1Char('+'), QLatin1Char('_')); symbol.replace(QLatin1Char('-'), QLatin1Char('_')); + symbol.replace(QLatin1Char(' '), QLatin1Char('_')); return symbol; } @@ -358,15 +359,23 @@ bool generateLoader(const QStringList &compiledFiles, const QString &outputFileN originalResourceFile.truncate(mappingSplit); } - const QString function = QLatin1String("qInitResources_") + qtResourceNameForFile(originalResourceFile); + const QString suffix = qtResourceNameForFile(originalResourceFile); + const QString initFunction = QLatin1String("qInitResources_") + suffix; - stream << QStringLiteral("int QT_MANGLE_NAMESPACE(%1)() {\n").arg(function); + stream << QStringLiteral("int QT_MANGLE_NAMESPACE(%1)() {\n").arg(initFunction); stream << " ::unitRegistry();\n"; if (!newResourceFile.isEmpty()) stream << " Q_INIT_RESOURCE(" << qtResourceNameForFile(newResourceFile) << ");\n"; stream << " return 1;\n"; stream << "}\n"; - stream << "Q_CONSTRUCTOR_FUNCTION(QT_MANGLE_NAMESPACE(" << function << "));\n"; + stream << "Q_CONSTRUCTOR_FUNCTION(QT_MANGLE_NAMESPACE(" << initFunction << "));\n"; + + const QString cleanupFunction = QLatin1String("qCleanupResources_") + suffix; + stream << QStringLiteral("int QT_MANGLE_NAMESPACE(%1)() {\n").arg(cleanupFunction); + if (!newResourceFile.isEmpty()) + stream << " Q_CLEANUP_RESOURCE(" << qtResourceNameForFile(newResourceFile) << ");\n"; + stream << " return 1;\n"; + stream << "}\n"; } } diff --git a/tools/qmlcachegen/qtquickcompiler.prf b/tools/qmlcachegen/qtquickcompiler.prf index 75e474ba70..9fa982ca0f 100644 --- a/tools/qmlcachegen/qtquickcompiler.prf +++ b/tools/qmlcachegen/qtquickcompiler.prf @@ -2,7 +2,7 @@ qtPrepareTool(QML_CACHEGEN, qmlcachegen, _FILTER) qtPrepareTool(QMAKE_RCC, rcc, _DEP) -QMLCACHE_DIR = .qmlcache +isEmpty(QMLCACHE_DIR): QMLCACHE_DIR = . defineReplace(qmlCacheResourceFileOutputName) { name = $$relative_path($$1, $$_PRO_FILE_PWD_) @@ -22,21 +22,21 @@ QMLCACHE_RESOURCE_FILES = for(res, RESOURCES) { absRes = $$absolute_path($$res, $$_PRO_FILE_PWD_) - rccContents = $$system($$QMAKE_RCC_DEP -list $$absRes,lines) + rccContents = $$system($$QMAKE_RCC_DEP -list $$system_quote($$absRes),lines) contains(rccContents,.*\\.js$)|contains(rccContents,.*\\.qml$) { new_resource = $$qmlCacheResourceFileOutputName($$res) mkpath($$dirname(new_resource)) - remaining_files = $$system($$QML_CACHEGEN_FILTER -filter-resource-file -o $$new_resource $$absRes,lines) + remaining_files = $$system($$QML_CACHEGEN_FILTER -filter-resource-file -o $$system_quote($$new_resource) $$system_quote($$absRes),lines) !isEmpty(remaining_files) { NEWRESOURCES += $$new_resource - QMLCACHE_LOADER_FLAGS += --resource-file-mapping=$$absRes=$$new_resource + QMLCACHE_LOADER_FLAGS += --resource-file-mapping=$$shell_quote($$absRes=$$new_resource) } else { - QMLCACHE_LOADER_FLAGS += --resource-file-mapping=$$absRes + QMLCACHE_LOADER_FLAGS += --resource-file-mapping=$$shell_quote($$absRes) } QMLCACHE_RESOURCE_FILES += $$absRes - for(candidate, $$list($$rccContents)) { + for(candidate, rccContents) { contains(candidate,.*\\.js$)|contains(candidate,.*\\.qml$) { QMLCACHE_FILES += $$candidate } @@ -50,7 +50,7 @@ RESOURCES = $$NEWRESOURCES QMLCACHE_RESOURCE_FLAGS = for(res, QMLCACHE_RESOURCE_FILES) { - QMLCACHE_RESOURCE_FLAGS += --resource=$$res + QMLCACHE_RESOURCE_FLAGS += --resource=$$shell_quote($$res) } defineReplace(qmlCacheOutputName) { |