diff options
Diffstat (limited to 'mkspecs/features/resources.prf')
-rw-r--r-- | mkspecs/features/resources.prf | 109 |
1 files changed, 6 insertions, 103 deletions
diff --git a/mkspecs/features/resources.prf b/mkspecs/features/resources.prf index fa8ff1fb58..ab9761a83c 100644 --- a/mkspecs/features/resources.prf +++ b/mkspecs/features/resources.prf @@ -1,116 +1,19 @@ -qtPrepareTool(QMAKE_RCC, rcc, _DEP) +qtPrepareLibExecTool(QMAKE_RCC, rcc, _DEP) -isEmpty(RCC_DIR):RCC_DIR = . isEmpty(QMAKE_MOD_RCC):QMAKE_MOD_RCC = qrc !contains(QMAKE_RESOURCE_FLAGS, -root):!isEmpty(QMAKE_RESOURCE_ROOT):QMAKE_RESOURCE_FLAGS += -root $$QMAKE_RESOURCE_ROOT !contains(QMAKE_RESOURCE_FLAGS, -name): QMAKE_RESOURCE_FLAGS += -name ${QMAKE_FILE_BASE} +!qtConfig(zstd): QMAKE_RESOURCE_FLAGS += --no-zstd -# http://www.w3.org/TR/xml/#syntax -defineReplace(xml_escape) { - 1 ~= s,&,&, - 1 ~= s,\',', - 1 ~= s,\",", - 1 ~= s,<,<, - 1 ~= s,>,>, - return($$1) -} - -RESOURCES += qmake_immediate -for(resource, RESOURCES) { - # Regular case of user qrc file - contains(resource, ".*\\.qrc$"): \ - next() - - # Fallback for stand-alone files/directories - !defined($${resource}.files, var) { - !equals(resource, qmake_immediate) { - !exists($$absolute_path($$resource, $$_PRO_FILE_PWD_)): \ - warning("Failure to find: $$resource") - qmake_immediate.files += $$resource - OTHER_FILES *= $$resource - } - RESOURCES -= $$resource - next() - } - - resource_file = $$absolute_path($$RCC_DIR/qmake_$${resource}.qrc, $$OUT_PWD) - - isEmpty(BUILDS)|build_pass { - # Collection of files, generate qrc file - prefix = $$eval($${resource}.prefix) - isEmpty(prefix): \ - prefix = "/" - - resource_file_content = \ - "<!DOCTYPE RCC><RCC version=\"1.0\">" \ - "<qresource prefix=\"$$xml_escape($$prefix)\">" - - abs_base = $$absolute_path($$eval($${resource}.base), $$_PRO_FILE_PWD_) - - for(file, $${resource}.files) { - abs_path = $$absolute_path($$file, $$_PRO_FILE_PWD_) - files = $$files($$abs_path/*, true) - isEmpty(files): \ - files = $$abs_path - for (file, files) { - exists($$file/*): next() # exclude directories - alias = $$relative_path($$file, $$abs_base) - resource_file_content += \ - "<file alias=\"$$xml_escape($$alias)\">$$xml_escape($$file)</file>" - OTHER_FILES *= $$file - } - } - - resource_file_content += \ - "</qresource>" \ - "</RCC>" - - !write_file($$resource_file, resource_file_content): \ - error() - } - - RESOURCES -= $$resource - RESOURCES += $$resource_file -} - -!isEmpty(RESOURCES):contains(TEMPLATE, .*lib):plugin:static { - pluginBaseName = $$basename(TARGET) - pluginName = $$lower($$replace(pluginBaseName, [-], _)) - resource_init_function = $${pluginName}_plugin_resource_init - DEFINES += "QT_PLUGIN_RESOURCE_INIT_FUNCTION=$$resource_init_function" - RESOURCE_INIT_CPP = $$OUT_PWD/$${pluginName}_plugin_resources.cpp - - GENERATED_SOURCES += $$RESOURCE_INIT_CPP - QMAKE_DISTCLEAN += $$RESOURCE_INIT_CPP - - isEmpty(BUILDS)|build_pass { - RESOURCE_INIT_CONT = \ - "// This file is autogenerated by qmake. It contains a function that" \ - "// references all resources the plugin includes and the function is" \ - "// referenced by Qt_(MOC_)EXPORT_PLUGIN to ensure the inclusion in" \ - "// the statically linked plugin." \ - "$${LITERAL_HASH}include <QtCore/qglobal.h>" \ - "void $${resource_init_function}() " \ - "{" \ - - for (resource, RESOURCES) { - resource_name = $$section($$list($$basename(resource)), ., 0, 0) - resource_name = $$replace(resource_name, [^a-zA-Z0-9_], _) - RESOURCE_INIT_CONT += " Q_INIT_RESOURCE($$resource_name);" - } - - RESOURCE_INIT_CONT += \ - "}" - - write_file($$RESOURCE_INIT_CPP, RESOURCE_INIT_CONT)|error() - } -} +load(resources_functions) +qtFlattenResources() +qtEnsurePluginResourcesCpp() rcc.input = RESOURCES rcc.name = RCC ${QMAKE_FILE_IN} rcc.depend_command = $$QMAKE_RCC_DEP -list $$QMAKE_RESOURCE_FLAGS ${QMAKE_FILE_IN} -rcc.CONFIG += add_inputs_as_makefile_deps dep_lines +rcc.CONFIG += add_inputs_as_makefile_deps dep_lines remove_no_exist !resources_big|ltcg|macx-xcode|wasm|contains(TEMPLATE, "vc.*") { |