summaryrefslogtreecommitdiffstats
path: root/mkspecs
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>2015-06-05 19:01:50 +0200
committerOswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>2015-09-17 16:36:23 +0000
commitc326cc86925ac6cb2e9b119d225be266bdbe043c (patch)
tree890b8e8f2bb3127970cb48198a85e14a6acdd8a6 /mkspecs
parent83e933e76a82d4d8afa2f103e380a674a123cc51 (diff)
inline qtAddModules() and dependencies
there is no particular reason to have them in qt_functions.prf any more, while the separation made the code harder to follow. Change-Id: Ie44c9784358f382f7bc863b421ff5b440211d66f Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Diffstat (limited to 'mkspecs')
-rw-r--r--mkspecs/features/qt.prf109
-rw-r--r--mkspecs/features/qt_functions.prf120
2 files changed, 105 insertions, 124 deletions
diff --git a/mkspecs/features/qt.prf b/mkspecs/features/qt.prf
index 47f14c5017..2e466ec9be 100644
--- a/mkspecs/features/qt.prf
+++ b/mkspecs/features/qt.prf
@@ -45,17 +45,118 @@ qaxserver {
QT += axserver
}
+# target variable, flag source variable
+defineTest(qtProcessModuleFlags) {
+ for(flag, $$2) {
+ contains(flag, ^-.*): \
+ $$1 -= $$replace(flag, ^-, )
+ else: \
+ $$1 += $$flag
+ }
+ export($$1)
+}
+
unset(using_privates)
-qtAddModules(QT, LIBS)
-qtAddModules(QT_PRIVATE, LIBS_PRIVATE)
+var_sfx =
+for(ever) {
+ # qmake variables cannot contain dashes, so normalize the names first
+ CLEAN_QT$$var_sfx = $$replace(QT$$var_sfx, -private$, _private)
+ # Topological resolution of modules based on their QT.<module>.depends variable
+ FULL_QT$$var_sfx = $$resolve_depends(CLEAN_QT$$var_sfx, "QT.")
+ # Finally actually add the modules
+ unset(BAD_QT)
+ for(QTLIB, FULL_QT$$var_sfx) {
+ MODULE_NAME = $$eval(QT.$${QTLIB}.name)
+ MODULE_INCLUDES = $$eval(QT.$${QTLIB}.includes)
+ MODULE_LIBS = $$eval(QT.$${QTLIB}.libs)
+ MODULE_CONFIG = $$eval(QT.$${QTLIB}.module_config)
+
+ isEmpty(MODULE_NAME) {
+ BAD_QT += $$QTLIB
+ next()
+ }
+
+ target_qt:isEqual(TARGET, $$MODULE_NAME) {
+ warning("$$TARGET cannot have a QT$$var_sfx of $$QTLIB")
+ next()
+ }
+
+ contains(MODULE_CONFIG, internal_module): \
+ using_privates = true
+ contains(MODULE_CONFIG, ltcg): \
+ CONFIG += link_ltcg
+
+ qtProcessModuleFlags(CONFIG, QT.$${QTLIB}.CONFIG)
+ qtProcessModuleFlags(DEFINES, QT.$${QTLIB}.DEFINES)
+
+ MODULE_INCLUDES -= $$QMAKE_DEFAULT_INCDIRS
+ MODULE_LIBS_ADD = $$MODULE_LIBS
+ MODULE_LIBS_ADD -= $$QMAKE_DEFAULT_LIBDIRS
+
+ LINKAGE =
+ mac:contains(MODULE_CONFIG, lib_bundle) {
+ FRAMEWORK_INCLUDE = $${MODULE_LIBS}/$${MODULE_NAME}.framework/Headers
+ !qt_no_framework_direct_includes {
+ INCLUDEPATH *= $$FRAMEWORK_INCLUDE
+ }
+ contains(MODULE_CONFIG, internal_module): \
+ INCLUDEPATH += \
+ $$FRAMEWORK_INCLUDE/$$eval(QT.$${QTLIB}.VERSION) \
+ $$FRAMEWORK_INCLUDE/$$eval(QT.$${QTLIB}.VERSION)/$$MODULE_NAME
+ QMAKE_FRAMEWORKPATH *= $${MODULE_LIBS}
+ !contains(MODULE_CONFIG, no_link): \
+ LINKAGE += -framework $${MODULE_NAME}$${QT_LIBINFIX}
+ } else {
+ INCLUDEPATH *= $$MODULE_INCLUDES
+ }
+
+ # Only link to this module if a libs directory is set, else this is just a module
+ # to give access to sources or include files, and not for linking.
+ !isEmpty(MODULE_LIBS):!contains(MODULE_CONFIG, no_link) {
+
+ # Re-insert the major version in the library name (cf qt5LibraryTarget above)
+ # unless it's a framework build
+ !mac|!contains(MODULE_CONFIG, lib_bundle): \
+ MODULE_NAME ~= s,^Qt,Qt$$QT_MAJOR_VERSION,
+
+ win32 {
+ # Make sure the version number isn't appended again to the lib name
+ QMAKE_$${upper($$MODULE_NAME$$QT_LIBINFIX)}_VERSION_OVERRIDE = 0
+ QMAKE_$${upper($$MODULE_NAME$$QT_LIBINFIX)}D_VERSION_OVERRIDE = 0
+ }
+
+ isEmpty(LINKAGE) {
+ !isEmpty(MODULE_LIBS_ADD): \
+ LINKAGE = -L$$MODULE_LIBS_ADD
+ lib = $${MODULE_NAME}$${QT_LIBINFIX}$$qtPlatformTargetSuffix()
+ LINKAGE += -l$$lib
+
+ contains(MODULE_CONFIG, staticlib): \
+ PRE_TARGETDEPS *= $$MODULE_LIBS/$${QMAKE_PREFIX_STATICLIB}$${lib}.$${QMAKE_EXTENSION_STATICLIB}
+ }
+
+ LIBS$$var_sfx += $$LINKAGE
+
+ !isEmpty(QMAKE_LSB) {
+ !isEmpty(MODULE_LIBS_ADD): \
+ QMAKE_LFLAGS *= --lsb-libpath=$$MODULE_LIBS_ADD
+ QMAKE_LFLAGS *= --lsb-shared-libs=$${MODULE_NAME}$${QT_LIBINFIX}
+ QMAKE_LIBDIR *= /opt/lsb/lib
+ }
+ }
+ }
+ !isEmpty(BAD_QT):error("Unknown module(s) in QT$$var_sfx: $$replace(BAD_QT, _private$, -private)")
+
+ !isEmpty(var_sfx): break()
+ var_sfx = _PRIVATE
+}
!isEmpty(using_privates):!no_private_qt_headers_warning:if(!debug_and_release|!build_pass) {
message("This project is using private headers and will therefore be tied to this specific Qt module build version.")
message("Running this project against other versions of the Qt modules may crash at any arbitrary point.")
message("This is not a bug, but a result of using Qt internals. You have been warned!")
}
-qt_module_deps = $$QT $$QT_PRIVATE
-qt_module_deps = $$replace(qt_module_deps, -private$, _private)
+qt_module_deps = $$CLEAN_QT $$CLEAN_QT_PRIVATE
qt_module_deps = $$resolve_depends(qt_module_deps, "QT.")
!no_qt_rpath:!static:contains(QT_CONFIG, rpath):!contains(QT_CONFIG, static):\
diff --git a/mkspecs/features/qt_functions.prf b/mkspecs/features/qt_functions.prf
index f764746379..6616aa4230 100644
--- a/mkspecs/features/qt_functions.prf
+++ b/mkspecs/features/qt_functions.prf
@@ -46,17 +46,6 @@ defineTest(qtAddLibrary) {
error("No module matching library '$$1' found.")
}
-# target variable, flag source variable
-defineTest(qtProcessModuleFlags) {
- for(flag, $$2) {
- contains(flag, ^-.*): \
- $$1 -= $$replace(flag, ^-, )
- else: \
- $$1 += $$flag
- }
- export($$1)
-}
-
# qt module
defineTest(qtHaveModule) {
!isEmpty(QT.$$replace(1, -, _).name): \
@@ -64,115 +53,6 @@ defineTest(qtHaveModule) {
return(false)
}
-# qt module, libs variable
-defineTest(qtAddModule) {
- MODULE_NAME = $$eval(QT.$${1}.name)
- MODULE_INCLUDES = $$eval(QT.$${1}.includes)
- MODULE_LIBS = $$eval(QT.$${1}.libs)
- MODULE_CONFIG = $$eval(QT.$${1}.module_config)
-
- contains(MODULE_CONFIG, internal_module) {
- using_privates = true
- export(using_privates)
- }
- contains(MODULE_CONFIG, ltcg): CONFIG += link_ltcg
-
- qtProcessModuleFlags(CONFIG, QT.$${1}.CONFIG)
- qtProcessModuleFlags(DEFINES, QT.$${1}.DEFINES)
-
- MODULE_INCLUDES -= $$QMAKE_DEFAULT_INCDIRS
- MODULE_LIBS_ADD = $$MODULE_LIBS
- MODULE_LIBS_ADD -= $$QMAKE_DEFAULT_LIBDIRS
-
- unset(LINKAGE)
- mac:contains(MODULE_CONFIG, lib_bundle) {
- FRAMEWORK_INCLUDE = $${MODULE_LIBS}/$${MODULE_NAME}.framework/Headers
- !qt_no_framework_direct_includes {
- INCLUDEPATH *= $$FRAMEWORK_INCLUDE
- }
- contains(MODULE_CONFIG, internal_module): \
- INCLUDEPATH += \
- $$FRAMEWORK_INCLUDE/$$eval(QT.$${1}.VERSION) \
- $$FRAMEWORK_INCLUDE/$$eval(QT.$${1}.VERSION)/$$MODULE_NAME
- QMAKE_FRAMEWORKPATH *= $${MODULE_LIBS}
- export(QMAKE_FRAMEWORKPATH)
- !contains(MODULE_CONFIG, no_link): \
- LINKAGE += -framework $${MODULE_NAME}$${QT_LIBINFIX}
- } else {
- INCLUDEPATH *= $$MODULE_INCLUDES
- }
- export(INCLUDEPATH)
-
- # Only link to this module if a libs directory is set, else this is just a module
- # to give access to sources or include files, and not for linking.
- !isEmpty(MODULE_LIBS):!contains(MODULE_CONFIG, no_link) {
-
- # Re-insert the major version in the library name (cf qt5LibraryTarget above)
- # unless it's a framework build
- !mac|!contains(MODULE_CONFIG, lib_bundle): \
- MODULE_NAME ~= s,^Qt,Qt$$QT_MAJOR_VERSION,
-
- win32 {
- # Make sure the version number isn't appended again to the lib name
- ver_var = QMAKE_$${upper($$MODULE_NAME$$QT_LIBINFIX)}_VERSION_OVERRIDE
- dver_var = QMAKE_$${upper($$MODULE_NAME$$QT_LIBINFIX)}D_VERSION_OVERRIDE
- $$ver_var = 0
- $$dver_var = 0
- export($$ver_var)
- export($$dver_var)
- }
-
- isEmpty(LINKAGE) {
- !isEmpty(MODULE_LIBS_ADD): \
- LINKAGE = -L$$MODULE_LIBS_ADD
- lib = $${MODULE_NAME}$${QT_LIBINFIX}$$qtPlatformTargetSuffix()
- LINKAGE += -l$$lib
-
- contains(MODULE_CONFIG, staticlib) {
- PRE_TARGETDEPS *= $$MODULE_LIBS/$${QMAKE_PREFIX_STATICLIB}$${lib}.$${QMAKE_EXTENSION_STATICLIB}
- export(PRE_TARGETDEPS)
- }
- }
-
- $$2 += $$LINKAGE
- export($$2)
-
- !isEmpty(QMAKE_LSB) {
- !isEmpty(MODULE_LIBS_ADD): \
- QMAKE_LFLAGS *= --lsb-libpath=$$MODULE_LIBS_ADD
- QMAKE_LFLAGS *= --lsb-shared-libs=$${MODULE_NAME}$${QT_LIBINFIX}
- QMAKE_LIBDIR *= /opt/lsb/lib
- export(QMAKE_LFLAGS)
- export(QMAKE_LIBDIR)
- }
- }
-}
-
-# qt variable, libs variable
-defineTest(qtAddModules) {
- # qmake variables cannot contain dashes, so normalize the names first
- $$1 = $$replace($$1, -private$, _private)
- # Topological resolution of modules based on their QT.<module>.depends variable
- $$1 = $$resolve_depends($$1, "QT.")
- # Finally actually add the modules
- unset(BAD_QT)
- for(QTLIB, $$1) {
- QTLIBNAME = $$eval(QT.$${QTLIB}.name)
- isEmpty(QTLIBNAME) {
- BAD_QT += $$QTLIB
- next()
- }
-
- target_qt:isEqual(TARGET, $$QTLIBNAME) {
- warning("$$TARGET cannot have a $$1 of $$QTLIB")
- next()
- }
-
- qtAddModule($$QTLIB, $$2)
- }
- !isEmpty(BAD_QT):error("Unknown module(s) in $$1: $$replace(BAD_QT, _private$, -private)")
-}
-
# variable, default, [suffix for variable for system() use], [prepare primary variable for system() use]
defineTest(qtPrepareTool) {
cmd = $$eval(QT_TOOL.$${2}.binary)