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>bb10
parent
83e933e76a
commit
c326cc8692
|
|
@ -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):\
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue