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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
#
# W A R N I N G
# -------------
#
# This file is not part of the Qt API. It exists purely as an
# implementation detail. It may change from version to version
# without notice, or even be removed.
#
# We mean it.
#
load(qt_build_paths)
TEMPLATE = lib
CONFIG -= qt
QT = # In case qt is re-added.
INCLUDEPATH += $$MODULE_INCLUDEPATH
DEFINES += $$MODULE_DEFINES
CONFIG -= warning_clean # Don't presume 3rd party code to be clean
load(qt_common)
qtConfig(debug_and_release): CONFIG += debug_and_release
qtConfig(build_all): CONFIG += build_all
DESTDIR = $$MODULE_BASE_OUTDIR/lib
DLLDESTDIR = $$MODULE_BASE_OUTDIR/bin
THE_TARGET = $$qt5LibraryTarget($$TARGET)
MODULE = $$replace(TARGET, ^qt, )
MODULE ~= s,-,_,
MODULE_PRI = $$MODULE_QMAKE_OUTDIR/mkspecs/modules/qt_ext_$${MODULE}.pri
ucmodule = $$upper($$MODULE)
win32|CONFIG(static, static|shared) {
prefix = $$QMAKE_PREFIX_STATICLIB
suffix = $$QMAKE_EXTENSION_STATICLIB
} else {
prefix = $$QMAKE_PREFIX_SHLIB
suffix = $$QMAKE_EXTENSION_SHLIB
}
!build_pass {
CC_USES =
LD_USES =
for (use, QMAKE_USE) {
use = $$split(use, /)
name = $$take_first(use)
nu = $$upper($$replace(name, -, _))
!contains(use, linkonly): CC_USES += $$nu
!contains(use, nolink): LD_USES += $$nu
}
CC_USES = $$unique(CC_USES)
LD_USES = $$unique(LD_USES)
MODULE_PRI_CONT = \
"QMAKE_DEPENDS_$${ucmodule}_CC =$$join(CC_USES, " ", " ")" \
"QMAKE_DEPENDS_$${ucmodule}_LD =$$join(LD_USES, " ", " ")" \
"QMAKE_INCDIR_$${ucmodule} = $$val_escape(MODULE_INCLUDEPATH)" \
"QMAKE_DEFINES_$${ucmodule} = $$val_escape(MODULE_DEFINES)"
!single_android_abi:android {
MODULE_PRI_CONT += "QMAKE_LIBS_$${ucmodule} ="
} else: if(msvc|qtConfig(debug_and_release)): {
win32: \
MODULE_DEBUG_LIBS = $$DESTDIR/$$prefix$${TARGET}d.$$suffix
else: darwin: \
MODULE_DEBUG_LIBS = $$DESTDIR/$$prefix$${TARGET}_debug.$$suffix
else: \
error("'$$QMAKE_PLATFORM' does not do debug_and_release.")
MODULE_RELEASE_LIBS = $$DESTDIR/$$prefix$${TARGET}.$$suffix
MODULE_PRI_CONT += \
"QMAKE_LIBS_$${ucmodule} =" \ # Needed for the module to be recognized.
"QMAKE_LIBS_$${ucmodule}_DEBUG = $$val_escape(MODULE_DEBUG_LIBS)" \
"QMAKE_LIBS_$${ucmodule}_RELEASE = $$val_escape(MODULE_RELEASE_LIBS)"
} else {
MODULE_LIBS = $$DESTDIR/$$prefix$${THE_TARGET}.$$suffix
MODULE_PRI_CONT += \
"QMAKE_LIBS_$${ucmodule} = $$val_escape(MODULE_LIBS)"
}
write_file($$MODULE_PRI, MODULE_PRI_CONT)|error()
} else: android {
ABI_TARGET = $$qt5LibraryTarget($$TARGET)
ABI_MODULE_LIBS = $$DESTDIR/$$prefix$${ABI_TARGET}.$$suffix
MODULE_PRI_CONT = "QMAKE_LIBS_$${ucmodule}_$${QT_ARCH} = $$val_escape(ABI_MODULE_LIBS)"
write_file($$MODULE_PRI, MODULE_PRI_CONT, append)|error()
}
TARGET = $$THE_TARGET
# In static builds of Qt, convenience libraries must be installed,
# as in this case they are not linked to the final library/plugin.
installed|if(!not_installed:qtConfig(static)) {
!isEmpty(MODULE_EXT_HEADERS) {
headers.files = $${MODULE_EXT_HEADERS}
headers.path = $$[QT_INSTALL_HEADERS]/$$TARGET
INSTALLS += headers
} else {
!isEmpty(MODULE_EXT_HEADERS_DIR) {
headers.files = $$MODULE_EXT_HEADERS_DIR/*
headers.path = $$[QT_INSTALL_HEADERS]/$$TARGET
INSTALLS += headers
}
}
CONFIG += qt_install_module
rpl_header_base = $$MODULE_INCLUDEPATH
rpl_lib_base = $${MODULE_LIBS}
qqt_dir = \$\$\$\$[QT_INSTALL_HEADERS]
pri_header_replace.match = $$rpl_header_base
pri_header_replace.replace = $$qqt_dir/$$TARGET
pri_header_replace.CONFIG = path
pri_header_replace.filename = qt_ext_$${MODULE}.pri
qqt_dir = \$\$\$\$[QT_INSTALL_LIBS]
pri_lib_replace.match = $$rpl_lib_base
pri_lib_replace.replace = $$qqt_dir/$$prefix$${THE_TARGET}.$$suffix
pri_lib_replace.CONFIG = path
pri_lib_replace.filename = qt_ext_$${MODULE}.pri
QMAKE_INSTALL_REPLACE += pri_header_replace pri_lib_replace
if(msvc|qtConfig(debug_and_release)): {
rpl_lib_target = $$prefix$${TARGET}.$$suffix
pri_lib_release_replace.match = $$DESTDIR/$${rpl_lib_target}
pri_lib_release_replace.replace = $$qqt_dir/$${rpl_lib_target}
pri_lib_release_replace.CONFIG = path
pri_lib_release_replace.filename = qt_ext_$${MODULE}.pri
QMAKE_INSTALL_REPLACE += pri_lib_release_replace
win32: \
rpl_lib_target = $$prefix$${TARGET}d.$$suffix
else: darwin: \
rpl_lib_target = $$prefix$${TARGET}_debug.$$suffix
pri_lib_debug_replace.match = $$DESTDIR/$${rpl_lib_target}
pri_lib_debug_replace.replace = $$qqt_dir/$${rpl_lib_target}
pri_lib_debug_replace.CONFIG = path
pri_lib_debug_replace.filename = qt_ext_$${MODULE}.pri
QMAKE_INSTALL_REPLACE += pri_lib_debug_replace
}
load(qt_installs)
}
|