summaryrefslogtreecommitdiffstats
path: root/mkspecs/features/resources_functions.prf
diff options
context:
space:
mode:
Diffstat (limited to 'mkspecs/features/resources_functions.prf')
-rw-r--r--mkspecs/features/resources_functions.prf61
1 files changed, 57 insertions, 4 deletions
diff --git a/mkspecs/features/resources_functions.prf b/mkspecs/features/resources_functions.prf
index b7a15fd1d9..fe2dc17d4d 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)
@@ -33,7 +34,18 @@ defineTest(qtFlattenResources) {
next()
}
- resource_file = $$absolute_path($$RCC_DIR/qmake_$${resource}.qrc, $$OUT_PWD)
+ RESOURCES -= $$resource
+ !android|isEmpty(BUILDS)|build_pass {
+ resource_file = $$absolute_path($$RCC_DIR/qmake_$${resource}.qrc, $$OUT_PWD)
+ RESOURCES += $$resource_file
+ } else {
+ # Android will need a resource file for each architecture make sure it is placed
+ # correctly for other functions that need the right paths for these files
+ for (arch, ANDROID_ABIS) {
+ resource_file = $$absolute_path($$RCC_DIR/qmake_$${resource}.qrc, $$OUT_PWD/$$arch)
+ RESOURCES += $$resource_file
+ }
+ }
isEmpty(BUILDS)|build_pass {
# Collection of files, generate qrc file
@@ -68,13 +80,54 @@ defineTest(qtFlattenResources) {
!write_file($$resource_file, resource_file_content): \
error()
}
-
- 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)
+}