| if(qtc_run|lupdate_run): return() |
| |
| !contains(QT, qml) { |
| qt_modules = \ |
| $$replace(QT, -private$, _private) \ |
| $$replace(QT_PRIVATE, -private$, _private) |
| qt_modules = $$resolve_depends(qt_modules, "QT.", ".depends" ".run_depends") |
| !contains(qt_modules, qml): \ |
| return() |
| unset(qt_modules) |
| } |
| |
| qtPrepareTool(QML_CACHEGEN, qmlcachegen, _FILTER) |
| qtPrepareTool(QMAKE_RCC, rcc, _DEP) |
| |
| isEmpty(QMLCACHE_DIR): QMLCACHE_DIR = . |
| |
| defineReplace(qmlCacheResourceFileOutputName) { |
| name = $$relative_path($$1, $$_PRO_FILE_PWD_) |
| contains(name, ^\\.\\..*): name = $$relative_path($$1, $$OUT_PWD) |
| name = $$replace(name, \\.qrc$, _qmlcache.qrc) |
| name = $$replace(name,\.\.,) |
| name = $$replace(name,[/\-:],_) |
| name = $$absolute_path($$name, $$OUT_PWD) |
| return($${name}) |
| } |
| |
| defineTest(qtQuickSkippedResourceFile) { |
| for(skippedRes, QTQUICK_COMPILER_SKIPPED_RESOURCES) { |
| equals(1, $$skippedRes): return(true) |
| } |
| return(false) |
| } |
| |
| # Flatten RESOURCES that may contain individual files or objects |
| load(resources_functions) |
| qtFlattenResources() |
| qtEnsurePluginResourcesCpp() |
| |
| NEWRESOURCES = |
| QMLCACHE_RESOURCE_FILES = |
| |
| for(res, RESOURCES) { |
| qtQuickSkippedResourceFile($$res) { |
| NEWRESOURCES += $$res |
| next() |
| } |
| |
| absRes = $$absolute_path($$res, $$_PRO_FILE_PWD_) |
| rccContents = $$system($$QMAKE_RCC_DEP -list $$system_quote($$absRes),lines) |
| contains(rccContents,.*\\.js$)|contains(rccContents,.*\\.qml$)|contains(rccContents,.*\\.mjs$) { |
| new_resource = $$qmlCacheResourceFileOutputName($$res) |
| mkpath($$dirname(new_resource)) |
| dummy = $$system($$QML_CACHEGEN_FILTER --filter-resource-file -o $$system_quote($$new_resource) $$system_quote($$absRes)) |
| NEWRESOURCES += $$new_resource |
| QMLCACHE_LOADER_FLAGS += --resource-file-mapping=$$shell_quote($$absRes=$$new_resource) |
| |
| QMLCACHE_RESOURCE_FILES += $$absRes |
| |
| for(candidate, rccContents) { |
| contains(candidate,.*\\.js$)|contains(candidate,.*\\.qml$)|contains(candidate,.*\\.mjs$) { |
| QMLCACHE_FILES += $$candidate |
| } |
| } |
| } else { |
| NEWRESOURCES += $$res |
| } |
| } |
| |
| RESOURCES = $$NEWRESOURCES |
| |
| QMLCACHE_RESOURCE_FLAGS = |
| for(res, QMLCACHE_RESOURCE_FILES) { |
| QMLCACHE_RESOURCE_FLAGS += --resource=$$shell_quote($$res) |
| } |
| |
| defineReplace(qmlCacheOutputName) { |
| name = $$absolute_path($$1, $$OUT_PWD) |
| name = $$relative_path($$name, $$_PRO_FILE_PWD_) |
| name = $$replace(name, \\.qml$, _qml) |
| name = $$replace(name, \\.js$, _js) |
| name = $$replace(name, \\.mjs$, _mjs) |
| name = $$replace(name,/,_) |
| name = $$QMLCACHE_DIR/$${name} |
| return($${name}) |
| } |
| |
| qmlcache.input = QMLCACHE_FILES |
| qmlcache.output = ${QMAKE_FUNC_FILE_IN_qmlCacheOutputName}$${first(QMAKE_EXT_CPP)} |
| qmlcache.commands = $$QML_CACHEGEN $$QMLCACHE_RESOURCE_FLAGS $$QMLCACHE_FLAGS -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_IN} |
| qmlcache.name = qmlcachegen ${QMAKE_FILE_IN} |
| qmlcache.variable_out = GENERATED_SOURCES |
| qmlcache.dependency_type = TYPE_C |
| |
| qmlcache_loader.input = QMLCACHE_RESOURCE_FILES |
| qmlcache_loader.output = $$QMLCACHE_DIR/qmlcache_loader.cpp |
| qmlcache_loader.commands = $$QML_CACHEGEN $$QMLCACHE_LOADER_FLAGS $$QMLCACHE_FLAGS -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_IN} |
| qmlcache_loader.name = qmlcachengen_loader ${QMAKE_FILE_IN} |
| qmlcache_loader.variable_out = SOURCES |
| qmlcache_loader.dependency_type = TYPE_C |
| qmlcache_loader.CONFIG = combine |
| |
| unix:!no_qmlcache_depend { |
| qmlcache.depends += $$QML_CACHEGEN |
| qmlcache_loader.depends += $$QML_CACHEGEN |
| } |
| |
| QMAKE_EXTRA_COMPILERS += qmlcache qmlcache_loader |