diff options
-rw-r--r-- | mkspecs/features/qt_module.prf | 4 | ||||
-rw-r--r-- | mkspecs/features/qt_module_headers.prf | 62 | ||||
-rw-r--r-- | mkspecs/features/qt_module_pris.prf | 42 | ||||
-rw-r--r-- | src/angle/angle.pro | 3 | ||||
-rw-r--r-- | src/src.pro | 4 | ||||
-rw-r--r-- | src/tools/bootstrap-dbus/bootstrap-dbus.pro | 8 | ||||
-rw-r--r-- | src/tools/bootstrap/bootstrap.pro | 18 |
7 files changed, 81 insertions, 60 deletions
diff --git a/mkspecs/features/qt_module.prf b/mkspecs/features/qt_module.prf index 6ed75a4416..fdce486c00 100644 --- a/mkspecs/features/qt_module.prf +++ b/mkspecs/features/qt_module.prf @@ -80,10 +80,10 @@ CONFIG += qmake_cache target_qt QMAKE_DOCS_TARGETDIR = qt$${MODULE} -load(qt_module_pris) load(qt_common) - !no_module_headers: load(qt_module_headers) +load(qt_module_pris) + INCLUDEPATH *= $$eval(QT.$${MODULE}.includes) $$eval(QT.$${MODULE}_private.includes) # If Qt was configured with -debug-and-release then build the module the same way diff --git a/mkspecs/features/qt_module_headers.prf b/mkspecs/features/qt_module_headers.prf index 892a9a2c4b..eb1db08405 100644 --- a/mkspecs/features/qt_module_headers.prf +++ b/mkspecs/features/qt_module_headers.prf @@ -18,10 +18,11 @@ load(qt_build_paths) } else { contains(QT_CONFIG, private_tests): \ # -developer-build QMAKE_SYNCQT += -check-includes - QMAKE_SYNCQT += -module $$MODULE_INCNAME -version $$VERSION } + for(mod, MODULE_INCNAME): \ + QMAKE_SYNCQT += -module $$mod QMAKE_SYNCQT += \ - -outdir $$system_quote($$MODULE_BASE_OUTDIR) $$MODULE_SYNCQT_DIR + -version $$VERSION -outdir $$system_quote($$MODULE_BASE_OUTDIR) $$MODULE_SYNCQT_DIR !silent: message($$QMAKE_SYNCQT) system($$QMAKE_SYNCQT)|error("Failed to run: $$QMAKE_SYNCQT") @@ -33,6 +34,63 @@ load(qt_build_paths) } } +# Pre-generated headers in the source tree (tar-ball) and +# - shadow build or +# - non-shadow non-prefix build of a module which is not qtbase +# (because the build-time generated headers all end up in qtbase). +!git_build: \ + if(!equals(_PRO_FILE_PWD_, $$OUT_PWD) \ + |if(!prefix_build:!equals(MODULE_BASE_INDIR, $$[QT_HOST_PREFIX]))): \ + CONFIG += split_incpath + +# To avoid stuffing the code with repetetive conditionals, +# we parametrize the names of the variables we assign to. + +# Internal modules have no private part - they *are* private. +!internal_module: \ + prv = _PRIVATE + +# When doing a framework build with a prefix, the module needs to point +# into the frameworks' Headers dirs directly, as no shared include/ dir +# is installed. +# However, during the build, it needs to point into the shared include/ +# dir, as the framework doesn't even exist yet. For bootstrapped modules +# which borrow headers from "proper" modules, this situation persists +# even beyond the module's own build. The implication of this is that +# qmake might never use a framework's headers in a non-prefix build, +# as there is no separate set of .pri files for users outside Qt. +prefix_build:lib_bundle: \ + fwd = _FWD +# When using a split include path during the build, the installed module's +# include path is also structurally different from that in the build dir. +prefix_build:split_incpath: \ + sfwd = _FWD + +ibase = \$\$QT_MODULE_INCLUDE_BASE +MODULE$${fwd}_INCLUDES = $$ibase +split_incpath { + bibase = $$val_escape(MODULE_BASE_OUTDIR)/include + MODULE$${sfwd}_INCLUDES += $$bibase +} +for(mod, MODULE_INCNAME) { + mibase = $$ibase/$$mod + MODULE$${fwd}_INCLUDES += $$mibase + MODULE$${fwd}$${prv}_INCLUDES += $$mibase/$$VERSION $$mibase/$$VERSION/$$mod + split_incpath { + mbibase = $$bibase/$$mod + MODULE$${sfwd}_INCLUDES += $$mbibase + generated_privates: \ + MODULE$${sfwd}$${prv}_INCLUDES += $$mbibase/$$VERSION $$mbibase/$$VERSION/$$mod + } + prefix_build:lib_bundle { + mfbase = \$\$QT_MODULE_LIB_BASE/$${mod}.framework/Headers + MODULE_INCLUDES += $$mfbase + MODULE$${prv}_INCLUDES += $$mfbase/$$VERSION $$mfbase/$$VERSION/$$mod + } +} +MODULE_INCLUDES += $$MODULE_AUX_INCLUDES +MODULE_PRIVATE_INCLUDES += $$MODULE_PRIVATE_AUX_INCLUDES + minimal_syncqt: return() #load up the headers info diff --git a/mkspecs/features/qt_module_pris.prf b/mkspecs/features/qt_module_pris.prf index 3f21a0f7d5..fdcb9df270 100644 --- a/mkspecs/features/qt_module_pris.prf +++ b/mkspecs/features/qt_module_pris.prf @@ -10,14 +10,7 @@ # load(qt_build_paths) -# Pre-generated headers in the source tree and -# - shadow build or -# - non-shadow non-prefix build of a module which is not qtbase (because the build-time -# generated headers all end up in qtbase). -!git_build:if(!equals(_PRO_FILE_PWD_, $$OUT_PWD) \ - |if(!prefix_build:!equals(MODULE_BASE_INDIR, $$[QT_HOST_PREFIX]))): \ - CONFIG += split_incpath -force_independent|split_incpath: \ +force_independent|!isEmpty(MODULE_FWD_INCLUDES): \ CONFIG += need_fwd_pri mod_work_pfx = $$MODULE_QMAKE_OUTDIR/mkspecs/modules need_fwd_pri: \ @@ -77,27 +70,6 @@ MODULE_FWD_PRI = $$mod_work_pfx/qt_lib_$${MODULE_ID}.pri module_master = "QT.$${MODULE_ID}.master_header = $$MODULE_MASTER_HEADER" else: \ module_master = - !no_module_headers:!minimal_syncqt { - MODULE_INCLUDES = \$\$QT_MODULE_INCLUDE_BASE \$\$QT_MODULE_INCLUDE_BASE/$$MODULE_INCNAME - MODULE_PRIVATE_INCLUDES = \$\$QT_MODULE_INCLUDE_BASE/$$MODULE_INCNAME/$$VERSION \ - \$\$QT_MODULE_INCLUDE_BASE/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME - } - split_incpath { - MODULE_SHADOW_INCLUDES = $$replace(MODULE_INCLUDES, ^\\\$\\\$QT_MODULE_INCLUDE_BASE, \ - $$MODULE_BASE_OUTDIR/include) - generated_privates: \ - MODULE_SHADOW_PRIVATE_INCLUDES = $$replace(MODULE_PRIVATE_INCLUDES, ^\\\$\\\$QT_MODULE_INCLUDE_BASE, \ - $$MODULE_BASE_OUTDIR/include) - } - MODULE_INCLUDES += $$MODULE_AUX_INCLUDES - MODULE_PRIVATE_INCLUDES += $$MODULE_PRIVATE_AUX_INCLUDES - internal_module: \ - MODULE_INCLUDES += $$MODULE_PRIVATE_INCLUDES - split_incpath { - MODULE_FWD_PRI_CONT_SUFFIX += "QT.$${MODULE_ID}.includes += $$val_escape(MODULE_SHADOW_INCLUDES)" - generated_privates: \ - MODULE_FWD_PRI_CONT_SUFFIX += "QT.$${MODULE}_private.includes += $$val_escape(MODULE_SHADOW_PRIVATE_INCLUDES)" - } MODULE_PRI_CONT = \ "QT.$${MODULE_ID}.VERSION = $${VERSION}" \ "QT.$${MODULE_ID}.MAJOR_VERSION = $$section(VERSION, ., 0, 0)" \ @@ -143,7 +115,7 @@ MODULE_FWD_PRI = $$mod_work_pfx/qt_lib_$${MODULE_ID}.pri need_fwd_pri { - split_incpath: \ + !git_build: \ MODULE_BASE_INCDIR = $$MODULE_BASE_INDIR else: \ MODULE_BASE_INCDIR = $$MODULE_BASE_OUTDIR @@ -163,7 +135,15 @@ MODULE_FWD_PRI = $$mod_work_pfx/qt_lib_$${MODULE_ID}.pri !internal_module:!no_private_module: MODULE_FWD_PRI_CONT += \ "include($$val_escape(MODULE_PRIVATE_PRI))" \ "QT.$${MODULE}_private.priority = 1" - MODULE_FWD_PRI_CONT += $$MODULE_FWD_PRI_CONT_SUFFIX + !isEmpty(MODULE_FWD_INCLUDES) { + !lib_bundle: \ + pls = + + MODULE_FWD_PRI_CONT += \ + "QT.$${MODULE_ID}.includes $$pls= $$MODULE_FWD_INCLUDES" + !internal_module: \ + MODULE_FWD_PRI_CONT += \ + "QT.$${MODULE}_private.includes $$pls= $$MODULE_FWD_PRIVATE_INCLUDES" + } write_file($$MODULE_FWD_PRI, MODULE_FWD_PRI_CONT)|error("Aborting.") touch($$MODULE_FWD_PRI, $$MODULE_PRI) MODULE_PRI_FILES += $$MODULE_FWD_PRI diff --git a/src/angle/angle.pro b/src/angle/angle.pro index c454fee8f9..8fae66dfb9 100644 --- a/src/angle/angle.pro +++ b/src/angle/angle.pro @@ -6,5 +6,6 @@ SUBDIRS += src # 2) If we made a 'QtANGLE' module, the include directory would be flattened which won't work since # we need to support "#include <GLES2/gl2.h>" CONFIG += minimal_syncqt -QMAKE_SYNCQT_OPTIONS = -module QtANGLE/KHR -module QtANGLE/EGL -module QtANGLE/GLES2 -module QtANGLE/GLES3 -version none +MODULE_INCNAME = QtANGLE/KHR QtANGLE/EGL QtANGLE/GLES2 QtANGLE/GLES3 +VERSION = none load(qt_module_headers) diff --git a/src/src.pro b/src/src.pro index df5c85fa53..167133859b 100644 --- a/src/src.pro +++ b/src/src.pro @@ -63,6 +63,7 @@ src_xml.depends = src_corelib src_dbus.subdir = $$PWD/dbus src_dbus.target = sub-dbus src_dbus.depends = src_corelib +force_bootstrap: src_dbus.depends += src_tools_bootstrap_dbus # avoid syncqt race src_concurrent.subdir = $$PWD/concurrent src_concurrent.target = sub-concurrent @@ -139,9 +140,8 @@ TOOLS = src_tools_moc src_tools_rcc src_tools_qlalr win32:SUBDIRS += src_winmain SUBDIRS += src_network src_sql src_xml src_testlib contains(QT_CONFIG, dbus) { - SUBDIRS += src_dbus force_bootstrap: SUBDIRS += src_tools_bootstrap_dbus - SUBDIRS += src_tools_qdbusxml2cpp src_tools_qdbuscpp2xml + SUBDIRS += src_dbus src_tools_qdbusxml2cpp src_tools_qdbuscpp2xml TOOLS += src_tools_qdbusxml2cpp src_tools_qdbuscpp2xml contains(QT_CONFIG, accessibility-atspi-bridge): \ src_platformsupport.depends += src_dbus src_tools_qdbusxml2cpp diff --git a/src/tools/bootstrap-dbus/bootstrap-dbus.pro b/src/tools/bootstrap-dbus/bootstrap-dbus.pro index fb06b4d8a2..4c466ba0e9 100644 --- a/src/tools/bootstrap-dbus/bootstrap-dbus.pro +++ b/src/tools/bootstrap-dbus/bootstrap-dbus.pro @@ -2,16 +2,12 @@ option(host_build) MODULE = bootstrap_dbus TARGET = QtBootstrapDBus -CONFIG += no_module_headers internal_module force_bootstrap +CONFIG += minimal_syncqt internal_module force_bootstrap DEFINES += \ QT_NO_CAST_FROM_ASCII -MODULE_INCLUDES = \ - \$\$QT_MODULE_INCLUDE_BASE/QtDBus -MODULE_PRIVATE_INCLUDES = \ - \$\$QT_MODULE_INCLUDE_BASE/QtDBus/$$QT_VERSION \ - \$\$QT_MODULE_INCLUDE_BASE/QtDBus/$$QT_VERSION/QtDBus +MODULE_INCNAME = QtDBus load(qt_module) diff --git a/src/tools/bootstrap/bootstrap.pro b/src/tools/bootstrap/bootstrap.pro index ca05f804a2..4f2456cf79 100644 --- a/src/tools/bootstrap/bootstrap.pro +++ b/src/tools/bootstrap/bootstrap.pro @@ -2,8 +2,9 @@ option(host_build) TARGET = QtBootstrap QT = -CONFIG += internal_module force_bootstrap +CONFIG += minimal_syncqt internal_module force_bootstrap +MODULE_INCNAME = QtCore QtXml MODULE_DEFINES = \ QT_BOOTSTRAPPED \ QT_LITE_UNICODE \ @@ -26,21 +27,6 @@ DEFINES += \ DEFINES -= QT_EVAL -MODULE_INCLUDES = \ - \$\$QT_MODULE_INCLUDE_BASE \ - \$\$QT_MODULE_INCLUDE_BASE/QtCore \ - \$\$QT_MODULE_INCLUDE_BASE/QtXml -MODULE_PRIVATE_INCLUDES = \ - \$\$QT_MODULE_INCLUDE_BASE/QtCore/$$QT_VERSION \ - \$\$QT_MODULE_INCLUDE_BASE/QtCore/$$QT_VERSION/QtCore \ - \$\$QT_MODULE_INCLUDE_BASE/QtXml/$$QT_VERSION \ - \$\$QT_MODULE_INCLUDE_BASE/QtXml/$$QT_VERSION/QtXml - -# We need the forwarding headers before their respective modules are built, -# so do a minimal syncqt run. -CONFIG += minimal_syncqt -QMAKE_SYNCQT_OPTIONS = -module QtCore -module QtDBus -module QtXml -version $$QT_VERSION - load(qt_module) # otherwise mingw headers do not declare common functions like putenv |