577b6554f0
Introduce resources_functions.prf with the test function qtFlattenResources which ensures that RESOURCES has a flat structure, e.g. only contains *.qrc entries. This can be called by other .prf files like qtquickcompiler.prf without disturbing the ability to extend RESOURCES in other .prf files. Task-number: QTBUG-79672 Change-Id: I43246e40f5ea52a9d9c917a1bd781aeeb1304acc Reviewed-by: Kai Koehne <kai.koehne@qt.io>
90 lines
3.1 KiB
Plaintext
90 lines
3.1 KiB
Plaintext
qtPrepareTool(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}
|
|
|
|
# http://www.w3.org/TR/xml/#syntax
|
|
defineReplace(xml_escape) {
|
|
1 ~= s,&,&,
|
|
1 ~= s,\',',
|
|
1 ~= s,\",",
|
|
1 ~= s,<,<,
|
|
1 ~= s,>,>,
|
|
return($$1)
|
|
}
|
|
|
|
load(resources_functions)
|
|
qtFlattenResources()
|
|
|
|
!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()
|
|
}
|
|
}
|
|
|
|
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
|
|
|
|
!resources_big|ltcg|macx-xcode|wasm|contains(TEMPLATE, "vc.*") {
|
|
|
|
rcc.output = $$RCC_DIR/$${first(QMAKE_MOD_RCC)}_${QMAKE_FILE_BASE}$${first(QMAKE_EXT_CPP)}
|
|
rcc.commands = $$QMAKE_RCC $$QMAKE_RESOURCE_FLAGS ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
|
|
rcc.variable_out = SOURCES
|
|
|
|
} else {
|
|
|
|
isEmpty(RCC_CXX):RCC_CXX = $$QMAKE_CXX $(CXXFLAGS)
|
|
RCC_OUT_BASE = $$RCC_DIR/$${first(QMAKE_MOD_RCC)}_${QMAKE_FILE_BASE}
|
|
RCC_CPP = $$RCC_OUT_BASE$${first(QMAKE_EXT_CPP)}
|
|
RCC_TMP = $${RCC_OUT_BASE}.tmp$${first(QMAKE_EXT_OBJ)}
|
|
RCC_OBJ = $$RCC_OUT_BASE$${first(QMAKE_EXT_OBJ)}
|
|
|
|
msvc: RCC_CXX_O_FLAG = "-Fo"
|
|
else: RCC_CXX_O_FLAG = "-o "
|
|
|
|
rcc.output = $$RCC_OBJ
|
|
rcc.commands = \
|
|
$$QMAKE_RCC $$QMAKE_RESOURCE_FLAGS ${QMAKE_FILE_IN} -pass 1 -o $$RCC_CPP && \
|
|
$$RCC_CXX -c $$RCC_CPP $$RCC_CXX_O_FLAG$$RCC_TMP && \
|
|
$$QMAKE_RCC $$QMAKE_RESOURCE_FLAGS ${QMAKE_FILE_IN} -pass 2 -temp $$RCC_TMP -o ${QMAKE_FILE_OUT}
|
|
rcc.clean += $$RCC_CPP $$RCC_TMP
|
|
|
|
}
|
|
|
|
rcc.depends += $$QMAKE_RCC_EXE
|
|
silent:rcc.commands = @echo rcc ${QMAKE_FILE_IN} && $$rcc.commands
|
|
else:rcc.commands ~= s/&&/$$escape_expand(\\n\\t)/g
|
|
QMAKE_EXTRA_COMPILERS += rcc
|