Add function for initializing plugin resources for static builds
Also move the setting of default RCC_DIR into qtFlattenResources as we need a valid RCC_DIR there. Fixes: QTBUG-81699 Fixes: QTBUG-81713 Change-Id: I7558d99f3aca75d2e9cad0ec89fbb0aa0758dcc7 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>bb10
parent
caef33ae2d
commit
495db2cd2b
|
|
@ -1,6 +1,5 @@
|
|||
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
|
||||
|
|
@ -8,39 +7,7 @@ isEmpty(QMAKE_MOD_RCC):QMAKE_MOD_RCC = qrc
|
|||
|
||||
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 = $$replace($$list($$basename(resource)),\.qrc$, )
|
||||
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()
|
||||
}
|
||||
}
|
||||
qtEnsurePluginResourcesCpp()
|
||||
|
||||
rcc.input = RESOURCES
|
||||
rcc.name = RCC ${QMAKE_FILE_IN}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ defineReplace(xml_escape) {
|
|||
}
|
||||
|
||||
defineTest(qtFlattenResources) {
|
||||
isEmpty(RCC_DIR):RCC_DIR = .
|
||||
immediate = qmake_immediate$$QMAKE_RESOURCES_IMMEDIATE_NR
|
||||
defined(QMAKE_RESOURCES_IMMEDIATE_NR, var): \
|
||||
QMAKE_RESOURCES_IMMEDIATE_NR = $$num_add($$QMAKE_RESOURCES_IMMEDIATE_NR, 1)
|
||||
|
|
@ -72,9 +73,53 @@ defineTest(qtFlattenResources) {
|
|||
RESOURCES -= $$resource
|
||||
RESOURCES += $$resource_file
|
||||
}
|
||||
export(RCC_DIR)
|
||||
export(QMAKE_RESOURCES_IMMEDIATE_NR)
|
||||
export(RESOURCES)
|
||||
export(OTHER_FILES)
|
||||
export($${immediate}.files)
|
||||
return(true)
|
||||
}
|
||||
|
||||
defineTest(qtEnsurePluginResourcesCpp) {
|
||||
contains(DEFINES, QT_PLUGIN_RESOURCE_INIT_FUNCTION=.*): \
|
||||
return(true)
|
||||
|
||||
!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 = $$replace($$list($$basename(resource)),\.qrc$, )
|
||||
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()
|
||||
}
|
||||
|
||||
export(DEFINES)
|
||||
export(GENERATED_SOURCES)
|
||||
export(QMAKE_DISTCLEAN)
|
||||
}
|
||||
return(true)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue