summaryrefslogtreecommitdiffstats
path: root/mkspecs
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@qt.io>2020-01-30 13:59:27 +0100
committerUlf Hermann <ulf.hermann@qt.io>2020-01-30 16:59:31 +0100
commit495db2cd2bb9130864f2dd1291788288765dfe7a (patch)
tree5220f88d0632a074cc09b00a85069a3fcf33fcdf /mkspecs
parentcaef33ae2df64eb397eadfc4ce4735545ff93ea5 (diff)
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>
Diffstat (limited to 'mkspecs')
-rw-r--r--mkspecs/features/resources.prf35
-rw-r--r--mkspecs/features/resources_functions.prf45
2 files changed, 46 insertions, 34 deletions
diff --git a/mkspecs/features/resources.prf b/mkspecs/features/resources.prf
index 6d9f27b86b..151051163d 100644
--- a/mkspecs/features/resources.prf
+++ b/mkspecs/features/resources.prf
@@ -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}
diff --git a/mkspecs/features/resources_functions.prf b/mkspecs/features/resources_functions.prf
index b7a15fd1d9..f0ca2ed793 100644
--- a/mkspecs/features/resources_functions.prf
+++ b/mkspecs/features/resources_functions.prf
@@ -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)
+}