diff options
author | Oswald Buddenhagen <oswald.buddenhagen@digia.com> | 2013-10-21 21:05:35 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-10-24 20:20:59 +0200 |
commit | 16f4bc5b63c3944846ca17314adeea1bdfed566c (patch) | |
tree | 6b270cc558c3a94cca062f90c2bfda14aed664b8 /mkspecs/features/qt_module_pris.prf | |
parent | dff6d73d6c37c40790d90bfdf3cb2f6e75c5bfa4 (diff) |
rewrite handling of private modules
instead of being magic attributes of the main modules, the privates
are now proper modules of their own.
this cleans up some code paths, is more mappable to other build tools,
and enables private modules to depend on other private modules.
note that the library path is needed even in the "empty" private
modules, as in the framework case that's where headers are found.
consequently, the modules need to be explicitly marked with the new
"no_link" flag. this required some reorganization of qtAddModule().
Change-Id: I8e4f44a609f8d639cc01bcb658256870a627eb63
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Diffstat (limited to 'mkspecs/features/qt_module_pris.prf')
-rw-r--r-- | mkspecs/features/qt_module_pris.prf | 122 |
1 files changed, 69 insertions, 53 deletions
diff --git a/mkspecs/features/qt_module_pris.prf b/mkspecs/features/qt_module_pris.prf index 90e5288524..2e57f498e3 100644 --- a/mkspecs/features/qt_module_pris.prf +++ b/mkspecs/features/qt_module_pris.prf @@ -19,11 +19,25 @@ load(qt_build_paths) CONFIG += split_incpath force_independent|split_incpath: \ CONFIG += need_fwd_pri -MODULE_FWD_PRI = $$MODULE_QMAKE_OUTDIR/mkspecs/modules/qt_lib_$${MODULE}.pri +mod_work_pfx = $$MODULE_QMAKE_OUTDIR/mkspecs/modules need_fwd_pri: \ - MODULE_PRI = $$MODULE_QMAKE_OUTDIR/mkspecs/modules-inst/qt_lib_$${MODULE}.pri + mod_inst_pfx = $$MODULE_QMAKE_OUTDIR/mkspecs/modules-inst else: \ - MODULE_PRI = $$MODULE_FWD_PRI + mod_inst_pfx = $$mod_work_pfx +!internal_module { + MODULE_ID = $$MODULE + MODULE_PRIVATE_PRI = $$mod_inst_pfx/qt_lib_$${MODULE}_private.pri + mods_to_load = $$MODULE $${MODULE}_private +} else { + MODULE_ID = $${MODULE}_private + mods_to_load = $${MODULE}_private +} +need_fwd_pri: \ + pris_to_load = $$MODULE_ID +else: \ + pris_to_load = $$mods_to_load +MODULE_PRI = $$mod_inst_pfx/qt_lib_$${MODULE_ID}.pri +MODULE_FWD_PRI = $$mod_work_pfx/qt_lib_$${MODULE_ID}.pri !build_pass { @@ -34,20 +48,14 @@ else: \ module_libs = "\$\$QT_MODULE_LIB_BASE" unix:!static { host_build: \ - module_rpath = "QT.$${MODULE}.rpath = $$[QT_HOST_LIBS]" + module_rpath = "QT.$${MODULE_ID}.rpath = $$[QT_HOST_LIBS]" else: \ - module_rpath = "QT.$${MODULE}.rpath = $$[QT_INSTALL_LIBS/raw]" + module_rpath = "QT.$${MODULE_ID}.rpath = $$[QT_INSTALL_LIBS/raw]" } else { module_rpath = } - !isEmpty(QT_FOR_PRIVATE) { - contains(QT_FOR_PRIVATE, .*-private$):error("QT_FOR_PRIVATE may not contain *-private.") - module_privdep = "QT.$${MODULE}.private_depends = $$QT_FOR_PRIVATE" - } else { - module_privdep = - } !isEmpty(QT_PRIVATE): \ - module_rundep = "QT.$${MODULE}.run_depends = $$unique($$list($$replace(QT_PRIVATE, -private$, )))" + module_rundep = "QT.$${MODULE_ID}.run_depends = $$replace(QT_PRIVATE, -private$, _private)" else: \ module_rundep = static: \ @@ -58,10 +66,8 @@ else: \ module_build_type = internal_module: \ module_build_type += internal_module - !isEmpty(module_build_type): \ - module_build_type = "QT.$${MODULE}.module_config = $$module_build_type" !isEmpty(MODULE_CONFIG): \ - module_config = "QT.$${MODULE}.CONFIG = $$MODULE_CONFIG" + module_config = "QT.$${MODULE_ID}.CONFIG = $$MODULE_CONFIG" else: \ module_config = !no_module_headers:!minimal_syncqt { @@ -74,46 +80,51 @@ else: \ $$MODULE_BASE_OUTDIR/include) MODULE_INCLUDES += $$MODULE_AUX_INCLUDES MODULE_PRIVATE_INCLUDES += $$MODULE_PRIVATE_AUX_INCLUDES - internal_module { - MODULE_PRIVATE_INCLUDES = $$MODULE_INCLUDES $$MODULE_PRIVATE_INCLUDES - MODULE_INCLUDES = - MODULE_PRIVATE_SHADOW_INCLUDES = $$MODULE_SHADOW_INCLUDES - MODULE_SHADOW_INCLUDES = - } - split_incpath { - !isEmpty(MODULE_SHADOW_INCLUDES): \ - MODULE_FWD_PRI_CONT_SUFFIX += "QT.$${MODULE}.includes += $$MODULE_SHADOW_INCLUDES" - !isEmpty(MODULE_PRIVATE_SHADOW_INCLUDES): \ - MODULE_FWD_PRI_CONT_SUFFIX += "QT.$${MODULE}.private_includes += $$MODULE_PRIVATE_SHADOW_INCLUDES" - } + internal_module: \ + MODULE_INCLUDES += $$MODULE_PRIVATE_INCLUDES + split_incpath: \ + MODULE_FWD_PRI_CONT_SUFFIX += "QT.$${MODULE_ID}.includes += $$MODULE_SHADOW_INCLUDES" MODULE_PRI_CONT = \ - "QT.$${MODULE}.VERSION = $${VERSION}" \ - "QT.$${MODULE}.MAJOR_VERSION = $$section(VERSION, ., 0, 0)" \ - "QT.$${MODULE}.MINOR_VERSION = $$section(VERSION, ., 1, 1)" \ - "QT.$${MODULE}.PATCH_VERSION = $$section(VERSION, ., 2, 2)" \ + "QT.$${MODULE_ID}.VERSION = $${VERSION}" \ + "QT.$${MODULE_ID}.MAJOR_VERSION = $$section(VERSION, ., 0, 0)" \ + "QT.$${MODULE_ID}.MINOR_VERSION = $$section(VERSION, ., 1, 1)" \ + "QT.$${MODULE_ID}.PATCH_VERSION = $$section(VERSION, ., 2, 2)" \ "" \ - "QT.$${MODULE}.name = $$TARGET" \ - "QT.$${MODULE}.libs = $$module_libs" \ + "QT.$${MODULE_ID}.name = $$TARGET" \ + "QT.$${MODULE_ID}.libs = $$module_libs" \ $$module_rpath \ - "QT.$${MODULE}.private_includes = $$MODULE_PRIVATE_INCLUDES" + "QT.$${MODULE_ID}.includes = $$MODULE_INCLUDES" !host_build: MODULE_PRI_CONT += \ - "QT.$${MODULE}.includes = $$MODULE_INCLUDES" \ - "QT.$${MODULE}.bins = \$\$QT_MODULE_BIN_BASE" \ - "QT.$${MODULE}.libexecs = \$\$QT_MODULE_LIBEXEC_BASE" \ - "QT.$${MODULE}.plugins = \$\$QT_MODULE_PLUGIN_BASE" \ - "QT.$${MODULE}.imports = \$\$QT_MODULE_IMPORT_BASE" \ - "QT.$${MODULE}.qml = \$\$QT_MODULE_QML_BASE" + "QT.$${MODULE_ID}.bins = \$\$QT_MODULE_BIN_BASE" \ + "QT.$${MODULE_ID}.libexecs = \$\$QT_MODULE_LIBEXEC_BASE" \ + "QT.$${MODULE_ID}.plugins = \$\$QT_MODULE_PLUGIN_BASE" \ + "QT.$${MODULE_ID}.imports = \$\$QT_MODULE_IMPORT_BASE" \ + "QT.$${MODULE_ID}.qml = \$\$QT_MODULE_QML_BASE" MODULE_PRI_CONT += \ - "QT.$${MODULE}.depends =$$join(MODULE_DEPENDS, " ", " ")" \ - $$module_privdep \ + "QT.$${MODULE_ID}.depends =$$join(MODULE_DEPENDS, " ", " ")" \ $$module_rundep \ - $$module_build_type \ + "QT.$${MODULE_ID}.module_config =$$join(module_build_type, " ", " ")" \ $$module_config \ - "QT.$${MODULE}.DEFINES = $$MODULE_DEFINES" \ # assume sufficient quoting + "QT.$${MODULE_ID}.DEFINES = $$MODULE_DEFINES" \ # assume sufficient quoting "" \ "QT_MODULES += $$MODULE" write_file($$MODULE_PRI, MODULE_PRI_CONT)|error("Aborting.") - MODULE_PRI_FILES = $$MODULE_PRI + !internal_module { + module_build_type += internal_module no_link + MODULE_PRIVATE_PRI_CONT = \ + "QT.$${MODULE}_private.VERSION = $${VERSION}" \ + "QT.$${MODULE}_private.MAJOR_VERSION = $$section(VERSION, ., 0, 0)" \ + "QT.$${MODULE}_private.MINOR_VERSION = $$section(VERSION, ., 1, 1)" \ + "QT.$${MODULE}_private.PATCH_VERSION = $$section(VERSION, ., 2, 2)" \ + "" \ + "QT.$${MODULE}_private.name = $${TARGET}" \ # Same name as base module + "QT.$${MODULE}_private.libs = $$module_libs" \ + "QT.$${MODULE}_private.includes = $$MODULE_PRIVATE_INCLUDES" \ + "QT.$${MODULE}_private.depends = $$replace($$list($$MODULE $$QT_FOR_PRIVATE), -private$, _private)" \ + "QT.$${MODULE}_private.module_config =$$join(module_build_type, " ", " ")" + write_file($$MODULE_PRIVATE_PRI, MODULE_PRIVATE_PRI_CONT)|error("Aborting.") + } + MODULE_PRI_FILES = $$MODULE_PRI $$MODULE_PRIVATE_PRI need_fwd_pri { @@ -132,8 +143,10 @@ else: \ "QT_MODULE_HOST_LIB_BASE = $$MODULE_BASE_OUTDIR/lib" \ "QT_MODULE_LIBEXEC_BASE = $$MODULE_BASE_OUTDIR/libexec" \ "QT_MODULE_PLUGIN_BASE = $$MODULE_BASE_OUTDIR/plugins" \ - "include($$MODULE_PRI)" \ - $$MODULE_FWD_PRI_CONT_SUFFIX + "include($$MODULE_PRI)" + !internal_module: MODULE_FWD_PRI_CONT += \ + "include($$MODULE_PRIVATE_PRI)" + MODULE_FWD_PRI_CONT += $$MODULE_FWD_PRI_CONT_SUFFIX write_file($$MODULE_FWD_PRI, MODULE_FWD_PRI_CONT)|error("Aborting.") touch($$MODULE_FWD_PRI, $$MODULE_PRI) MODULE_PRI_FILES += $$MODULE_FWD_PRI @@ -155,12 +168,15 @@ else: \ # Then, inject the new module into the current cache state !contains(QMAKE_INTERNAL_INCLUDED_FILES, $$MODULE_PRI): \ # before the actual include()! cache(QMAKE_INTERNAL_INCLUDED_FILES, add transient, MODULE_PRI_FILES) - include($$MODULE_FWD_PRI) - for(var, $$list(VERSION MAJOR_VERSION MINOR_VERSION PATCH_VERSION \ - name depends private_depends module_config CONFIG DEFINES sources \ - includes private_includes bins libs libexecs plugins imports qml \ - rpath_link rpath_link_private \ - )):defined(QT.$${MODULE}.$$var, var):cache(QT.$${MODULE}.$$var, transient) + for(pri, pris_to_load): \ + include($$mod_work_pfx/qt_lib_$${pri}.pri) + for(mod, mods_to_load) { + for(var, $$list(VERSION MAJOR_VERSION MINOR_VERSION PATCH_VERSION \ + name depends module_config CONFIG DEFINES sources \ + includes bins libs libexecs plugins imports qml \ + rpath_link \ + )):defined(QT.$${mod}.$$var, var):cache(QT.$${mod}.$$var, transient) + } cache(QT_MODULES, transient) } # !build_pass |