-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathQt57Dev-StaticQmlResourceFilesFix.patch
72 lines (59 loc) · 2.8 KB
/
Qt57Dev-StaticQmlResourceFilesFix.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
From: Andy Shaw <[email protected]>
Date: Fri, 19 Jun 2015 23:14:07 +0000 (+0200)
Subject: Include the qml files into a resource when building a static plugin
X-Git-Url: https://codereview.qt-project.org/gitweb?p=qt%2Fqtbase.git;a=commitdiff_plain;h=00648503bb5fb6e29273ac14c478563ea6ebd17e;hp=72de2ae3175f78663dd86027870d0ee25ceee98b
Include the qml files into a resource when building a static plugin
Whenever a qml plugin is made static, the qmldir and other related
files need to be compiled into the resources, so they can be found
in the import path. By using qrc:/qt-project.org/imports, we can
have this taken care of automatically for us via the build system,
leaving us to just ensure that it is initialized in the code.
Task-number: QTBUG-35754
Change-Id: Ifa7e2a66fd78dc6713dd7a8661ea2c155b174d35
Reviewed-by: Oswald Buddenhagen <[email protected]>
---
diff --git a/qtbase/mkspecs/features/qml_module.prf b/qtbase/mkspecs/features/qml_module.prf
index e71543e..2115b39 100644
--- a/qtbase/mkspecs/features/qml_module.prf
+++ b/qtbase/mkspecs/features/qml_module.prf
@@ -13,7 +13,8 @@ equals(TEMPLATE, app): TEMPLATE = aux
isEmpty(TARGETPATH): error("Must set TARGETPATH (QML import name)")
-fq_qml_files = $$_PRO_FILE_PWD_/qmldir
+qmldir_file = $$_PRO_FILE_PWD_/qmldir
+fq_qml_files = $$qmldir_file
for(qmlf, QML_FILES): fq_qml_files += $$absolute_path($$qmlf, $$_PRO_FILE_PWD_)
@@ -25,6 +26,8 @@ qml1_target: \
else: \
instbase = $$[QT_INSTALL_QML]
+!qml1_target:static: CONFIG += builtin_resources
+
!force_independent:if(!debug_and_release|!build_all|CONFIG(release, debug|release)) {
# These bizarre rules copy the files to the qtbase build directory
@@ -32,7 +35,8 @@ else: \
return($$relative_path($$1, $$_PRO_FILE_PWD_))
}
- qmlfiles2build.input = fq_qml_files
+ !builtin_resources: qmlfiles2build.input = fq_qml_files
+ else: qmlfiles2build.input = qmldir_file
qmlfiles2build.output = $$instbase/$$TARGETPATH/${QMAKE_FUNC_FILE_IN_qmlModStripSrcDir}
!contains(TEMPLATE, vc.*): qmlfiles2build.variable_out = PRE_TARGETDEPS
qmlfiles2build.commands = $$QMAKE_COPY ${QMAKE_FILE_IN} ${QMAKE_FILE_OUT}
@@ -42,8 +46,18 @@ else: \
QMAKE_EXTRA_COMPILERS += qmlfiles2build
}
+builtin_resources {
+ URITARGET = $$replace(URI, "\\.", "_")
+ # Ensure the qml files are included in the resources
+ $${URITARGET}.files = $$fq_qml_files
+ # qt-project.org/imports is the path used for locating imports inside the resources
+ $${URITARGET}.prefix = /qt-project.org/imports/$$TARGETPATH
+ RESOURCES += $${URITARGET}
+}
+
# Install rules
qmldir.base = $$_PRO_FILE_PWD_
-qmldir.files = $$fq_qml_files
+!builtin_resources: qmldir.files = $$fq_qml_files
+else: qmldir.files = $$qmldir_file
qmldir.path = $$instbase/$$TARGETPATH
INSTALLS += qmldir