1#load(qt_build_config)
2TEMPLATE = subdirs
3av.depends = core gui
4avwidgets.depends = av
5#MODULE_VERSION = $${QT_MAJOR_VERSION}.$${QT_MINOR_VERSION}.$${QT_PATCH_VERSION}
6config_gl {
7  avwidgets.depends += opengl
8}
9#load(qt_module)
10PROJECTROOT = $$PWD/../..
11include($$PROJECTROOT/common.pri)
12preparePaths($$OUT_PWD/../../out)
13
14VERSION = $$QTAV_VERSION
15# windows: Qt5AV.dll, not Qt1AV.dll
16!mac_framework: VERSION = $${QT_MAJOR_VERSION}.$${QT_MINOR_VERSION}.$${QT_PATCH_VERSION}
17
18PROJECT_LIBDIR = $$qtLongName($$BUILD_DIR/lib)
19
20LIBPREFIX = lib
21contains(QMAKE_HOST.os,Windows) {
22  SCRIPT_SUFFIX=bat
23  MOVE = move /y
24  COPY = copy /y
25  COPY_DIR = xcopy /s /q /y /i
26  MKDIR = mkdir
27  RM = del
28  RM_DIR = rd /s /q
29} else {
30  SCRIPT_SUFFIX=sh
31  MOVE = mv
32  COPY = cp -f
33  COPY_DIR = $$COPY -R
34  MKDIR = mkdir -p
35  RM = rm -f
36  RM_DIR = rm -rf
37}
38
39win32 {
40  *g++* {
41    LIBSUFFIX = a
42  } else {
43    LIBSUFFIX = lib
44    LIBPREFIX =
45  }
46} else:macx {
47  LIBSUFFIX = dylib
48} else:ios {
49  LIBSUFFIX = a
50} else {
51  LIBSUFFIX = so
52}
53DEBUG_SUF=
54mac: DEBUG_SUF=_debug
55win32: DEBUG_SUF=d
56NAME_SUF=
57iphonesimulator:!device: NAME_SUF=_iphonesimulator
58defineTest(createForModule) {
59  MODULE_NAME = $$1
60  MODULE_FULL_NAME = Qt$$MODULE_NAME
61  MODULE = $$lower($$MODULE_NAME)
62  MODULE_DEPENDS = $$eval($${MODULE}.depends)
63  MODULE_DEFINES = QT_$$upper($${MODULE})_LIB
64  static {
65    ORIG_LIB = $${LIBPREFIX}$${MODULE_FULL_NAME}.$${LIBSUFFIX}
66    ORIG_LIB_D = $${LIBPREFIX}$${MODULE_FULL_NAME}.$${LIBSUFFIX}
67  } else {
68    ORIG_LIB = $${LIBPREFIX}$$qtLibName($$MODULE_FULL_NAME, $$QTAV_MAJOR_VERSION).$${LIBSUFFIX}
69    ORIG_LIB_D = $${LIBPREFIX}$$qtLibName($$MODULE_FULL_NAME$${DEBUG_SUF}, $$QTAV_MAJOR_VERSION).$${LIBSUFFIX}
70  }
71greaterThan(QT_MAJOR_VERSION, 4) {
72  MODULE_PRF_FILE = $$OUT_PWD/mkspecs/features/$${MODULE}.prf
73  NEW_LIB = $${LIBPREFIX}Qt$${QT_MAJOR_VERSION}$${MODULE_NAME}$${NAME_SUF}.$${LIBSUFFIX}
74  NEW_LIB_D = $${LIBPREFIX}Qt$${QT_MAJOR_VERSION}$${MODULE_NAME}$${NAME_SUF}$${DEBUG_SUF}.$${LIBSUFFIX}
75  MKSPECS_DIR = $$[QT_HOST_DATA]/mkspecs
76} else {
77  MODULE_PRF_FILE = $$PWD/qt4/$${MODULE}.prf
78  NEW_LIB = $${ORIG_LIB}
79  NEW_LIB_D = $${ORIG_LIB_D}
80  MKSPECS_DIR=$$[QMAKE_MKSPECS]
81}
82
83# copy files to a dir need '/' at the end
84mac_framework {
85  sdk_install.commands = $$quote($$COPY_DIR $$system_path($$PROJECT_LIBDIR/$${MODULE_FULL_NAME}.framework) $$system_path($$[QT_INSTALL_LIBS]))
86  sdk_install.commands += $$quote($$RM $$system_path($$[QT_INSTALL_LIBS])/$${MODULE_FULL_NAME}.framework/*.prl)
87} else {
88  sdk_install.commands = $$quote($$MKDIR $$system_path($$[QT_INSTALL_HEADERS]/$${MODULE_FULL_NAME}/))
89  sdk_install.commands += $$quote($$COPY $$system_path($$PROJECT_LIBDIR/*Qt*AV*.$$LIBSUFFIX*) $$system_path($$[QT_INSTALL_LIBS]/))
90  sdk_install.commands += $$quote($$COPY $$system_path($$PROJECT_LIBDIR/$$ORIG_LIB) $$system_path($$[QT_INSTALL_LIBS]/$$NEW_LIB))
91  sdk_install.commands += $$quote($$COPY $$system_path($$PROJECT_LIBDIR/$$ORIG_LIB_D) $$system_path($$[QT_INSTALL_LIBS]/$$NEW_LIB_D))
92  static {
93    sdk_install.commands += $$quote($$COPY $$system_path($$PROJECT_LIBDIR/$$replace(ORIG_LIB, .$$LIBSUFFIX$, .prl)) $$system_path($$[QT_INSTALL_LIBS]/$$replace(NEW_LIB, .$$LIBSUFFIX$, .prl)))
94  }
95}
96sdk_install.commands += $$quote($$COPY $$system_path($$MODULE_PRF_FILE) $$system_path($$MKSPECS_DIR/features/$${MODULE}.prf))
97greaterThan(QT_MAJOR_VERSION, 4) {
98  sdk_install.commands += $$quote($$COPY $$system_path($$OUT_PWD/mkspecs/modules/qt_lib_$${MODULE}*.pri) $$system_path($$MKSPECS_DIR/modules/))
99}
100win32:sdk_install.commands += $$quote($$COPY $$system_path($$BUILD_DIR/bin/Qt*AV*.dll) $$system_path($$[QT_INSTALL_BINS]/))
101
102mac_framework {
103  sdk_uninstall.commands = $$quote($$RM_DIR $$system_path($$[QT_INSTALL_LIBS]/$${MODULE_FULL_NAME}.framework))
104} else {
105  sdk_uninstall.commands = $$quote($$QMAKE_DEL_FILE $$system_path($$[QT_INSTALL_LIBS]/*Qt*AV*))
106}
107sdk_uninstall.commands += $$quote($$QMAKE_DEL_FILE $$system_path($$[QT_INSTALL_LIBS]/$$NEW_LIB))
108sdk_uninstall.commands += $$quote($$RM_DIR $$system_path($$[QT_INSTALL_HEADERS]/$${MODULE_FULL_NAME}))
109sdk_uninstall.commands += $$quote($$QMAKE_DEL_FILE $$system_path($$MKSPECS_DIR/features/$${MODULE}.prf))
110greaterThan(QT_MAJOR_VERSION, 4) {
111  sdk_uninstall.commands += $$quote($$QMAKE_DEL_FILE $$system_path($$MKSPECS_DIR/modules/qt_lib_$${MODULE}*.pri))
112}
113win32: sdk_uninstall.commands += $$quote($$QMAKE_DEL_FILE $$system_path($$[QT_INSTALL_BINS]/Qt*AV*.dll))
114android: sdk_uninstall.commands += $$quote($$QMAKE_DEL_FILE $$system_path($$[QT_INSTALL_LIBS]/libcommon.so))
115
116write_file($$BUILD_DIR/sdk_install.$$SCRIPT_SUFFIX, sdk_install.commands, append)
117write_file($$BUILD_DIR/sdk_uninstall.$$SCRIPT_SUFFIX, sdk_uninstall.commands, append)
118
119message(run $$BUILD_DIR/sdk_install.$$SCRIPT_SUFFIX to install $${MODULE_FULL_NAME} as a Qt module)
120
121greaterThan(QT_MAJOR_VERSION, 4) {
122AV_PRF_CONT = "QTAV_MAJOR_VERSION=$$QTAV_MAJOR_VERSION"
123AV_PRF_CONT += "QTAV_MINOR_VERSION=$$QTAV_MINOR_VERSION"
124AV_PRF_CONT += "QTAV_PATCH_VERSION=$$QTAV_PATCH_VERSION"
125AV_PRF_CONT += "android: QMAKE_LFLAGS += -lOpenSLES"
126AV_PRF_CONT += "static: DEFINES += BUILD_QT$$upper($${MODULE})_STATIC"
127#AV_PRF_CONT += "QMAKE_LFLAGS += -lavutil -lavcodec -lavformat -lswscale"
128#config_avresample: AV_PRF_CONT += "QMAKE_LFLAGS += -lavresample"
129#config_swresample: AV_PRF_CONT += "QMAKE_LFLAGS += -lswresample"
130AV_PRF_CONT += "!contains(QT, $${MODULE}): QT *= $${MODULE}"
131mac_framework {
132# mac module with config 'lib_bundle' only include Headers dir. see qtAddModule in qt_functions.prf
133# but will add Qt.$${MODULE}.config to CONFIG
134# $$eval(QT.$${MODULE}.libs) for Qt5
135  AV_PRF_CONT += "INCLUDEPATH *= $$[QT_INSTALL_LIBS]/$${MODULE_FULL_NAME}.framework/Headers/$${MODULE_FULL_NAME}"
136}
137write_file($$MODULE_PRF_FILE, AV_PRF_CONT)
138
139
140MODULE_QMAKE_OUTDIR = $$OUT_PWD
141MODULE_CONFIG = $${MODULE}
142MODULE_INCNAME = $${MODULE_FULL_NAME}
143
144## the following is from mkspecs/features/qt_module_pris.prf
145mod_work_pfx = $$MODULE_QMAKE_OUTDIR/mkspecs/modules
146need_fwd_pri: \
147    mod_inst_pfx = $$MODULE_QMAKE_OUTDIR/mkspecs/modules-inst
148else: \
149    mod_inst_pfx = $$mod_work_pfx
150!internal_module {
151    MODULE_ID = $$MODULE
152    MODULE_PRIVATE_PRI = $$mod_inst_pfx/qt_lib_$${MODULE}_private.pri
153    mods_to_load = $$MODULE $${MODULE}_private
154} else {
155    MODULE_ID = $${MODULE}_private
156    mods_to_load = $${MODULE}_private
157}
158need_fwd_pri: \
159    pris_to_load = $$MODULE_ID
160else: \
161    pris_to_load = $$mods_to_load
162MODULE_PRI = $$mod_inst_pfx/qt_lib_$${MODULE_ID}.pri
163MODULE_FWD_PRI = $$mod_work_pfx/qt_lib_$${MODULE_ID}.pri
164
165
166!build_pass {
167
168    # Create a module .pri file
169    host_build: \
170        module_libs = "\$\$QT_MODULE_HOST_LIB_BASE"
171    else: \
172        module_libs = "\$\$QT_MODULE_LIB_BASE"
173    unix:!static {
174        host_build: \
175            module_rpath = "QT.$${MODULE_ID}.rpath = $$[QT_HOST_LIBS]"
176        else: \
177            module_rpath = "QT.$${MODULE_ID}.rpath = $$[QT_INSTALL_LIBS/raw]"
178    } else {
179        module_rpath =
180    }
181    !isEmpty(QT_PRIVATE): \
182        module_rundep = "QT.$${MODULE_ID}.run_depends = $$replace(QT_PRIVATE, -private$, _private)"
183    else: \
184        module_rundep =
185    static: \
186        module_build_type = staticlib
187    else:mac:contains(QT_CONFIG, qt_framework): \
188        module_build_type = lib_bundle
189    else: \
190        module_build_type =
191    internal_module: \
192        module_build_type += internal_module
193    !isEmpty(MODULE_CONFIG): \
194        module_config = "QT.$${MODULE_ID}.CONFIG = $$MODULE_CONFIG"
195    else: \
196        module_config =
197    !isEmpty(MODULE_PLUGIN_TYPES): \
198        module_plugtypes = "QT.$${MODULE_ID}.plugin_types = $$replace(MODULE_PLUGIN_TYPES, /.*$, )"
199    else: \
200        module_plugtypes =
201    !no_module_headers:!minimal_syncqt {
202        MODULE_INCLUDES = \$\$QT_MODULE_INCLUDE_BASE \$\$QT_MODULE_INCLUDE_BASE/$$MODULE_INCNAME
203        MODULE_PRIVATE_INCLUDES = \$\$QT_MODULE_INCLUDE_BASE/$$MODULE_INCNAME/$$VERSION \
204                                  \$\$QT_MODULE_INCLUDE_BASE/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME
205    }
206    split_incpath: \
207        MODULE_SHADOW_INCLUDES = $$replace(MODULE_INCLUDES, ^\\\$\\\$QT_MODULE_INCLUDE_BASE, \
208                                                            $$MODULE_BASE_OUTDIR/include)
209    MODULE_INCLUDES += $$MODULE_AUX_INCLUDES
210    MODULE_PRIVATE_INCLUDES += $$MODULE_PRIVATE_AUX_INCLUDES
211    internal_module: \
212        MODULE_INCLUDES += $$MODULE_PRIVATE_INCLUDES
213    split_incpath: \
214        MODULE_FWD_PRI_CONT_SUFFIX += "QT.$${MODULE_ID}.includes += $$MODULE_SHADOW_INCLUDES"
215    MODULE_PRI_CONT = \
216        "QT.$${MODULE_ID}.VERSION = $${VERSION}" \
217        "QT.$${MODULE_ID}.MAJOR_VERSION = $$section(VERSION, ., 0, 0)" \
218        "QT.$${MODULE_ID}.MINOR_VERSION = $$section(VERSION, ., 1, 1)" \
219        "QT.$${MODULE_ID}.PATCH_VERSION = $$section(VERSION, ., 2, 2)" \
220        "" \
221        "QT.$${MODULE_ID}.name = $${MODULE_FULL_NAME}" \
222        "QT.$${MODULE_ID}.libs = $$module_libs" \
223        $$module_rpath \
224        "QT.$${MODULE_ID}.includes = $$MODULE_INCLUDES"
225    !host_build: MODULE_PRI_CONT += \
226        "QT.$${MODULE_ID}.bins = \$\$QT_MODULE_BIN_BASE" \
227        "QT.$${MODULE_ID}.libexecs = \$\$QT_MODULE_LIBEXEC_BASE" \
228        "QT.$${MODULE_ID}.plugins = \$\$QT_MODULE_PLUGIN_BASE" \
229        "QT.$${MODULE_ID}.imports = \$\$QT_MODULE_IMPORT_BASE" \
230        "QT.$${MODULE_ID}.qml = \$\$QT_MODULE_QML_BASE" \
231        $$module_plugtypes
232    MODULE_PRI_CONT += \
233        "QT.$${MODULE_ID}.depends =$$join(MODULE_DEPENDS, " ", " ")" \
234        $$module_rundep \
235        "QT.$${MODULE_ID}.module_config =$$join(module_build_type, " ", " ")" \
236        $$module_config \
237        "QT.$${MODULE_ID}.DEFINES = $$MODULE_DEFINES" \ # assume sufficient quoting
238        "" \
239        "QT_MODULES += $$MODULE"
240    write_file($$MODULE_PRI, MODULE_PRI_CONT)|error("Aborting.")
241    !internal_module {
242        module_build_type += internal_module no_link
243        MODULE_PRIVATE_PRI_CONT = \
244            "QT.$${MODULE}_private.VERSION = $${VERSION}" \
245            "QT.$${MODULE}_private.MAJOR_VERSION = $$section(VERSION, ., 0, 0)" \
246            "QT.$${MODULE}_private.MINOR_VERSION = $$section(VERSION, ., 1, 1)" \
247            "QT.$${MODULE}_private.PATCH_VERSION = $$section(VERSION, ., 2, 2)" \
248            "" \
249            "QT.$${MODULE}_private.name = $${MODULE_FULL_NAME}" \   # Same name as base module
250            "QT.$${MODULE}_private.libs = $$module_libs" \
251            "QT.$${MODULE}_private.includes = $$MODULE_PRIVATE_INCLUDES" \
252            "QT.$${MODULE}_private.depends = $$replace($$list($$MODULE $$QT_FOR_PRIVATE), -private$, _private)" \
253            "QT.$${MODULE}_private.module_config =$$join(module_build_type, " ", " ")"
254        write_file($$MODULE_PRIVATE_PRI, MODULE_PRIVATE_PRI_CONT)|error("Aborting.")
255    }
256    MODULE_PRI_FILES = $$MODULE_PRI $$MODULE_PRIVATE_PRI
257
258    need_fwd_pri {
259
260        split_incpath: \
261            MODULE_BASE_INCDIR = $$MODULE_BASE_INDIR
262        else: \
263            MODULE_BASE_INCDIR = $$MODULE_BASE_OUTDIR
264
265        # Create a forwarding module .pri file
266        MODULE_FWD_PRI_CONT = \
267            "QT_MODULE_BIN_BASE = $$MODULE_BASE_OUTDIR/bin" \
268            "QT_MODULE_INCLUDE_BASE = $$MODULE_BASE_INCDIR/include" \
269            "QT_MODULE_IMPORT_BASE = $$MODULE_BASE_OUTDIR/imports" \
270            "QT_MODULE_QML_BASE = $$MODULE_BASE_OUTDIR/qml" \
271            "QT_MODULE_LIB_BASE = $$MODULE_BASE_OUTDIR/lib" \
272            "QT_MODULE_HOST_LIB_BASE = $$MODULE_BASE_OUTDIR/lib" \
273            "QT_MODULE_LIBEXEC_BASE = $$MODULE_BASE_OUTDIR/libexec" \
274            "QT_MODULE_PLUGIN_BASE = $$MODULE_BASE_OUTDIR/plugins" \
275            "include($$MODULE_PRI)"
276        !internal_module: MODULE_FWD_PRI_CONT += \
277            "include($$MODULE_PRIVATE_PRI)"
278        MODULE_FWD_PRI_CONT += $$MODULE_FWD_PRI_CONT_SUFFIX
279        write_file($$MODULE_FWD_PRI, MODULE_FWD_PRI_CONT)|error("Aborting.")
280        touch($$MODULE_FWD_PRI, $$MODULE_PRI)
281        MODULE_PRI_FILES += $$MODULE_FWD_PRI
282
283    } else {
284
285        # This is needed for the direct include() below. Mirrors qt_config.prf
286        QT_MODULE_BIN_BASE = $$[QT_INSTALL_BINS]
287        QT_MODULE_INCLUDE_BASE = $$[QT_INSTALL_HEADERS]
288        QT_MODULE_IMPORT_BASE = $$[QT_INSTALL_IMPORTS]
289        QT_MODULE_QML_BASE = $$[QT_INSTALL_QML]
290        QT_MODULE_LIB_BASE = $$[QT_INSTALL_LIBS]
291        QT_MODULE_HOST_LIB_BASE = $$[QT_HOST_LIBS]
292        QT_MODULE_LIBEXEC_BASE = $$[QT_INSTALL_LIBEXECS]
293        QT_MODULE_PLUGIN_BASE = $$[QT_INSTALL_PLUGINS]
294
295    }
296
297    # Then, inject the new module into the current cache state
298    !contains(QMAKE_INTERNAL_INCLUDED_FILES, $$MODULE_PRI): \ # before the actual include()!
299        cache(QMAKE_INTERNAL_INCLUDED_FILES, add transient, MODULE_PRI_FILES)
300    for(pri, pris_to_load): \
301        include($$mod_work_pfx/qt_lib_$${pri}.pri)
302    for(mod, mods_to_load) {
303        for(var, $$list(VERSION MAJOR_VERSION MINOR_VERSION PATCH_VERSION \
304                        name depends run_depends plugin_types module_config CONFIG DEFINES \
305                        includes bins libs libexecs plugins imports qml \
306                )):defined(QT.$${mod}.$$var, var):cache(QT.$${mod}.$$var, transient)
307    }
308    cache(QT_MODULES, transient)
309
310} # !build_pass
311
312
313# Schedule the regular .pri file for installation
314CONFIG += qt_install_module
315} #Qt5
316
317eval(qt$${MODULE}_pri.files = $$MODULE_PRI_FILES)
318eval(qt$${MODULE}_pri.path = $$MKSPECS_DIR/modules)
319greaterThan(QT_MAJOR_VERSION, 4): INSTALLS += qt$${MODULE}_pri
320eval(qt$${MODULE}_prf.files = $$MODULE_PRF_FILE)
321eval(qt$${MODULE}_prf.path = $$MKSPECS_DIR/features)
322INSTALLS += qt$${MODULE}_prf
323
324# export is required, otherwise INSTALLS is not valid
325  export(qt$${MODULE}_pri.files)
326  export(qt$${MODULE}_pri.path)
327  export(qt$${MODULE}_prf.files)
328  export(qt$${MODULE}_prf.path)
329  !contains(QMAKE_HOST.os, Windows):export(INSTALLS)
330
331  return(true)
332} #createForModule
333
334write_file($$BUILD_DIR/sdk_install.$$SCRIPT_SUFFIX)
335write_file($$BUILD_DIR/sdk_uninstall.$$SCRIPT_SUFFIX)
336
337avmodules = AV
338!no-widgets: avmodules += AVWidgets
339for(module, $$list($$avmodules)) {
340message("creating script for module Qt$$module ...")
341  createForModule($$module)
342}
343
344#headers
345!mac_framework {
346  sdk_h_install.commands = $$quote($$COPY $$system_path($$PROJECTROOT/src/QtAV/*.h) $$system_path($$[QT_INSTALL_HEADERS]/QtAV/))
347  sdk_h_install.commands += $$quote($$COPY $$system_path($$PROJECTROOT/src/QtAV/QtAV) $$system_path($$[QT_INSTALL_HEADERS]/QtAV/))
348  !no-widgets {
349    sdk_h_install.commands += $$quote($$COPY $$system_path($$PROJECTROOT/widgets/QtAVWidgets/*.h) $$system_path($$[QT_INSTALL_HEADERS]/QtAVWidgets/))
350    sdk_h_install.commands += $$quote($$COPY $$system_path($$PROJECTROOT/widgets/QtAVWidgets/QtAVWidgets) $$system_path($$[QT_INSTALL_HEADERS]/QtAVWidgets/))
351  }
352  sdk_h_install.commands += $$quote($$MKDIR $$system_path($$[QT_INSTALL_HEADERS]/QtAV/$$VERSION/QtAV/))
353  contains(QMAKE_HOST.os,Windows) {
354    sdk_h_install.commands += $$quote($$COPY_DIR $$system_path($$PROJECTROOT/src/QtAV/private) $$system_path($$[QT_INSTALL_HEADERS]/QtAV/private))
355    sdk_h_install.commands += $$quote($$COPY_DIR $$system_path($$PROJECTROOT/src/QtAV/private) $$system_path($$[QT_INSTALL_HEADERS]/QtAV/$$VERSION/QtAV/private))
356  } else {
357    sdk_h_install.commands += $$quote($$COPY_DIR $$system_path($$PROJECTROOT/src/QtAV/private) $$system_path($$[QT_INSTALL_HEADERS]/QtAV))
358    sdk_h_install.commands += $$quote($$COPY_DIR $$system_path($$PROJECTROOT/src/QtAV/private) $$system_path($$[QT_INSTALL_HEADERS]/QtAV/$$VERSION/QtAV))
359  }
360  write_file($$BUILD_DIR/sdk_install.$$SCRIPT_SUFFIX, sdk_h_install.commands, append)
361}
362#qml
363greaterThan(QT_MAJOR_VERSION, 4) {
364  # qtHaveModule does not exist in Qt5.0
365  isEqual(QT_MINOR_VERSION, 0)|qtHaveModule(quick) {
366    contains(QMAKE_HOST.os,Windows) {
367      sdk_qml_install.commands = $$quote($$COPY_DIR $$system_path($$BUILD_DIR/bin/QtAV) $$system_path($$[QT_INSTALL_QML]/QtAV))
368    } else {
369      sdk_qml_install.commands = $$quote($$COPY_DIR $$system_path($$BUILD_DIR/bin/QtAV) $$system_path($$[QT_INSTALL_QML]))
370    }
371    static: sdk_qml_install.commands += $$quote($$COPY $$system_path($$PROJECT_LIBDIR/$$ORIG_LIB/libQmlAV*) $$system_path($$[QT_INSTALL_QML]/QtAV/))
372#static qml plugin is not copied to bin/QtAV. copy it and prl
373    sdk_qml_install.commands += $$quote($$COPY $$system_path($$PROJECTROOT/qml/plugins.qmltypes) $$system_path($$[QT_INSTALL_QML]/QtAV/))
374    sdk_qml_uninstall.commands = $$quote($$RM_DIR $$system_path($$[QT_INSTALL_QML]/QtAV))
375    write_file($$BUILD_DIR/sdk_install.$$SCRIPT_SUFFIX, sdk_qml_install.commands, append)
376    write_file($$BUILD_DIR/sdk_uninstall.$$SCRIPT_SUFFIX, sdk_qml_uninstall.commands, append)
377  }
378}
379