diff options
author | Oswald Buddenhagen <oswald.buddenhagen@nokia.com> | 2012-04-16 14:13:12 +0200 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@nokia.com> | 2012-06-19 16:40:03 +0200 |
commit | a8ad1e77bad81572d84a03785c885e402242fc41 (patch) | |
tree | 3b12aa69aca9d0d65b59d552e8d646eee6b4fa35 | |
parent | d31f4a560d4c910732234681b936a7f93026d3eb (diff) |
generate fwd-pris in qt_module_config, not in syncqt
the forwarding pri is loaded even if it was still created by syncqt, so a
top-level qmake -r will still catch it even in the future.
Change-Id: I2e4b556cd06eb88be9ee378662a2e6e1bff67ad7
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
-rwxr-xr-x | bin/syncqt | 2 | ||||
-rw-r--r-- | mkspecs/features/qt_module_config.prf | 17 | ||||
-rw-r--r-- | mkspecs/features/qt_module_fwdpri.prf | 52 |
3 files changed, 69 insertions, 2 deletions
diff --git a/bin/syncqt b/bin/syncqt index 713f8da9f6..490d01722f 100755 --- a/bin/syncqt +++ b/bin/syncqt @@ -1232,7 +1232,7 @@ foreach my $lib (@modules_to_sync) { # create forwarding module pri in qtbase/mkspecs/modules if ($module_fwd) { my $modulepri = $modulepris{$lib}; - if (-e $modulepri) { + if (defined $modulepri and -e $modulepri) { my $modulepriname = basename($modulepri); make_path($module_fwd, $lib, $verbose_level); my $moduleprifwd = "$module_fwd/$modulepriname"; diff --git a/mkspecs/features/qt_module_config.prf b/mkspecs/features/qt_module_config.prf index c640f88037..eeef9cd691 100644 --- a/mkspecs/features/qt_module_config.prf +++ b/mkspecs/features/qt_module_config.prf @@ -12,6 +12,22 @@ isEmpty(MODULE):MODULE = $$section($$list($$basename(_PRO_FILE_)), ., 0, 0) isEmpty(TARGET):error("You must set TARGET before include()'ing $${_FILE_}") isEmpty(VERSION):VERSION = $$QT_VERSION +# Find the module's source root dir. +MODULE_PROFILE_DIR = $$_PRO_FILE_PWD_ +for(ever) { + exists($$MODULE_PROFILE_DIR/sync.profile):break() + nmpri = $$dirname(MODULE_PROFILE_DIR) + equals(nmpri, $$MODULE_PROFILE_DIR):error("No sync.profile found. This does not look like a Qt module source tree.") + MODULE_PROFILE_DIR = $$nmpri + unset(nmpri) +} + +isEmpty(MODULE_BASE_DIR): MODULE_BASE_DIR = $$MODULE_PROFILE_DIR +MODULE_BASE_OUTDIR = $$shadowed($$MODULE_BASE_DIR) +isEmpty(MODULE_QMAKE_OUTDIR): MODULE_QMAKE_OUTDIR = $$MODULE_BASE_OUTDIR + +load(qt_module_fwdpri) + MODULE_INCLUDES = $$eval(QT.$${MODULE}.includes) MODULE_PRIVATE_INCLUDES = $$eval(QT.$${MODULE}.private_includes) INCLUDEPATH *= $$MODULE_PRIVATE_INCLUDES @@ -103,7 +119,6 @@ aix-g++* { !static:PRL_EXPORT_DEFINES += QT_SHARED #install directives -CONFIG += qt_install_module CONFIG += qt_install_headers load(qt_installs) diff --git a/mkspecs/features/qt_module_fwdpri.prf b/mkspecs/features/qt_module_fwdpri.prf new file mode 100644 index 0000000000..b6b97b17f4 --- /dev/null +++ b/mkspecs/features/qt_module_fwdpri.prf @@ -0,0 +1,52 @@ +!build_pass { + + QTDIR = $$[QT_HOST_PREFIX] + exists($$QTDIR/.qmake.cache) { + mod_component_base = $$QTDIR + mod_qmake_base = $$QTDIR + } else { + mod_component_base = $$MODULE_BASE_OUTDIR + mod_qmake_base = $$MODULE_QMAKE_OUTDIR + } + # Permit modules to enforce being built outside QTDIR. + force_independent: mod_component_base = $$MODULE_BASE_OUTDIR + + # This check will be removed soon. Weird indentation to avoid reindenting the code later. + syncprofile = $$cat($$MODULE_PROFILE_DIR/sync.profile, lines) + contains(syncprofile, "^%modulepris.*") { + MODULE_FWD_PRI = $$mod_qmake_base/mkspecs/modules/$$replace(MODULE_PRI, ^.*/,) + } else { + + MODULE_FWD_PRI = $$mod_qmake_base/mkspecs/modules/qt_$${MODULE}.pri + + # Create a forwarding module .pri file + MODULE_FWD_PRI_CONT = \ + "QT_MODULE_BASE = $$MODULE_BASE_DIR" \ + "QT_MODULE_BIN_BASE = $$mod_component_base/bin" \ + "QT_MODULE_INCLUDE_BASE = $$MODULE_BASE_OUTDIR/include" \ + "QT_MODULE_IMPORT_BASE = $$mod_component_base/imports" \ + "QT_MODULE_LIB_BASE = $$mod_component_base/lib" \ + "QT_MODULE_PLUGIN_BASE = $$mod_component_base/plugins" \ + "include($$MODULE_PRI)" + write_file($$MODULE_FWD_PRI, MODULE_FWD_PRI_CONT)|error("Aborting.") + touch($$MODULE_FWD_PRI, $$MODULE_PRI) + + } # create forwarding module pris + + # Then, inject the new module into the current cache state + !contains(QMAKE_INTERNAL_INCLUDED_FILES, $$MODULE_PRI) { # before the actual include()! + added = $$MODULE_PRI $$MODULE_FWD_PRI + cache(QMAKE_INTERNAL_INCLUDED_FILES, add transient, added) + unset(added) + } + include($$MODULE_FWD_PRI) + for(var, $$list(VERSION MAJOR_VERSION MINOR_VERSION PATCH_VERSION \ + name depends module_config CONFIG DEFINES sources \ + includes private_includes bins libs plugins imports \ + )):defined(QT.$${MODULE}.$$var, var):cache(QT.$${MODULE}.$$var, transient) + cache(QT_CONFIG, transient) + +} # !build_pass + +# Schedule the regular .pri file for installation +CONFIG += qt_install_module |