make module .pri files more flexible
save the actual library/framework name and framework paths in the .pri file instead of computing them again at use time in qt.prf. qt_no_framework_direct_includes inherently requires a use-time decision, so this ugliness remains. Change-Id: I09b2775e7d8e1d52e3af0d663e1babde10ae4814 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>bb10
parent
cd9625fc3c
commit
dc1f65d4cf
|
|
@ -67,8 +67,10 @@ for(ever) {
|
|||
unset(BAD_QT)
|
||||
for(QTLIB, FULL_QT$$var_sfx) {
|
||||
MODULE_NAME = $$eval(QT.$${QTLIB}.name)
|
||||
MODULE_MODULE = $$eval(QT.$${QTLIB}.module)
|
||||
MODULE_INCLUDES = $$eval(QT.$${QTLIB}.includes)
|
||||
MODULE_LIBS = $$eval(QT.$${QTLIB}.libs)
|
||||
MODULE_FRAMEWORKS = $$eval(QT.$${QTLIB}.frameworks)
|
||||
MODULE_CONFIG = $$eval(QT.$${QTLIB}.module_config)
|
||||
|
||||
isEmpty(MODULE_NAME) {
|
||||
|
|
@ -88,49 +90,55 @@ for(ever) {
|
|||
MODULE_LIBS_ADD = $$MODULE_LIBS
|
||||
MODULE_LIBS_ADD -= $$QMAKE_DEFAULT_LIBDIRS
|
||||
|
||||
LINKAGE =
|
||||
contains(MODULE_CONFIG, lib_bundle) {
|
||||
FRAMEWORK_INCLUDE = $${MODULE_LIBS}/$${MODULE_NAME}.framework/Headers
|
||||
!qt_no_framework_direct_includes {
|
||||
INCLUDEPATH *= $$FRAMEWORK_INCLUDE
|
||||
!contains(MODULE_CONFIG, v2) {
|
||||
# Backwards compatibility with pre-5.6 module .pri files
|
||||
|
||||
contains(MODULE_CONFIG, lib_bundle) {
|
||||
MODULE_FRAMEWORKS = $$MODULE_LIBS
|
||||
inc = $$MODULE_LIBS/$${MODULE_NAME}.framework/Headers
|
||||
MODULE_INCLUDES = $$inc
|
||||
contains(MODULE_CONFIG, internal_module): \
|
||||
MODULE_INCLUDES += \
|
||||
$$inc/$$eval(QT.$${QTLIB}.VERSION) \
|
||||
$$inc/$$eval(QT.$${QTLIB}.VERSION)/$$MODULE_NAME
|
||||
} else {
|
||||
# Re-insert the major version in the library name (cf qt5LibraryTarget above)
|
||||
MODULE_NAME ~= s,^Qt,Qt$$QT_MAJOR_VERSION,
|
||||
}
|
||||
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): \
|
||||
MODULE_MODULE = $${MODULE_NAME}$${QT_LIBINFIX}
|
||||
}
|
||||
|
||||
# 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
|
||||
!contains(MODULE_CONFIG, lib_bundle): \
|
||||
MODULE_NAME ~= s,^Qt,Qt$$QT_MAJOR_VERSION,
|
||||
|
||||
isEmpty(LINKAGE) {
|
||||
# Frameworks shouldn't need include paths, but much code does not use
|
||||
# module-qualified #includes, so by default we add paths which point
|
||||
# directly into the frameworks. Private modules have somewhat convoluted
|
||||
# header paths, so adding them is necessary in every case.
|
||||
!if(contains(MODULE_CONFIG, lib_bundle):qt_no_framework_direct_includes) \
|
||||
|contains(MODULE_CONFIG, internal_module): \
|
||||
INCLUDEPATH *= $$MODULE_INCLUDES
|
||||
QMAKE_FRAMEWORKPATH *= $$MODULE_FRAMEWORKS
|
||||
!isEmpty(MODULE_MODULE) {
|
||||
contains(MODULE_CONFIG, lib_bundle) {
|
||||
LIBS$$var_sfx += -framework $$MODULE_MODULE
|
||||
} else {
|
||||
!isEmpty(MODULE_LIBS_ADD): \
|
||||
LINKAGE = -L$$MODULE_LIBS_ADD
|
||||
lib = $${MODULE_NAME}$${QT_LIBINFIX}$$qtPlatformTargetSuffix()
|
||||
LINKAGE += -l$$lib
|
||||
LIBS$$var_sfx += -L$$MODULE_LIBS_ADD
|
||||
|
||||
lib = $$MODULE_MODULE$$qtPlatformTargetSuffix()
|
||||
LIBS$$var_sfx += -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(QMAKE_LSB) {
|
||||
!isEmpty(MODULE_LIBS_ADD): \
|
||||
QMAKE_LFLAGS *= --lsb-libpath=$$MODULE_LIBS_ADD
|
||||
QMAKE_LFLAGS *= --lsb-shared-libs=$$lib
|
||||
QMAKE_LIBDIR *= /opt/lsb/lib
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -46,18 +46,22 @@ MODULE_FWD_PRI = $$mod_work_pfx/qt_lib_$${MODULE_ID}.pri
|
|||
module_rundep = "QT.$${MODULE_ID}.run_depends = $$replace(QT_PRIVATE, -private$, _private)"
|
||||
else: \
|
||||
module_rundep =
|
||||
module_build_type = v2
|
||||
static: \
|
||||
module_build_type = staticlib
|
||||
else: lib_bundle: \
|
||||
module_build_type = lib_bundle
|
||||
else: \
|
||||
module_build_type =
|
||||
equals(TEMPLATE, aux): \
|
||||
module_build_type += no_link
|
||||
module_build_type += staticlib
|
||||
lib_bundle {
|
||||
module_build_type += lib_bundle
|
||||
MODULE_FRAMEWORKS = " \$\$QT_MODULE_LIB_BASE"
|
||||
}
|
||||
internal_module: \
|
||||
module_build_type += internal_module
|
||||
ltcg: \
|
||||
module_build_type += ltcg
|
||||
module_module =
|
||||
!equals(TEMPLATE, aux) {
|
||||
module_module = $$TARGET$$QT_LIBINFIX
|
||||
!lib_bundle: module_module ~= s,^Qt,Qt$$QT_MAJOR_VERSION,
|
||||
}
|
||||
!isEmpty(MODULE_CONFIG): \
|
||||
module_config = "QT.$${MODULE_ID}.CONFIG = $$MODULE_CONFIG"
|
||||
else: \
|
||||
|
|
@ -77,9 +81,11 @@ MODULE_FWD_PRI = $$mod_work_pfx/qt_lib_$${MODULE_ID}.pri
|
|||
"QT.$${MODULE_ID}.PATCH_VERSION = $$section(VERSION, ., 2, 2)" \
|
||||
"" \
|
||||
"QT.$${MODULE_ID}.name = $$TARGET" \
|
||||
"QT.$${MODULE_ID}.module = $$module_module" \
|
||||
"QT.$${MODULE_ID}.libs = $$module_libs" \
|
||||
$$module_master \
|
||||
"QT.$${MODULE_ID}.includes = $$MODULE_INCLUDES"
|
||||
"QT.$${MODULE_ID}.includes = $$MODULE_INCLUDES" \
|
||||
"QT.$${MODULE_ID}.frameworks =$$MODULE_FRAMEWORKS"
|
||||
!host_build: MODULE_PRI_CONT += \
|
||||
"QT.$${MODULE_ID}.bins = \$\$QT_MODULE_BIN_BASE" \
|
||||
"QT.$${MODULE_ID}.libexecs = \$\$QT_MODULE_LIBEXEC_BASE" \
|
||||
|
|
@ -97,7 +103,7 @@ MODULE_FWD_PRI = $$mod_work_pfx/qt_lib_$${MODULE_ID}.pri
|
|||
"QT_MODULES += $$MODULE"
|
||||
write_file($$MODULE_PRI, MODULE_PRI_CONT)|error("Aborting.")
|
||||
!internal_module:!no_private_module {
|
||||
module_build_type += internal_module no_link
|
||||
module_build_type += internal_module
|
||||
MODULE_PRIVATE_PRI_CONT = \
|
||||
"QT.$${MODULE}_private.VERSION = $${VERSION}" \
|
||||
"QT.$${MODULE}_private.MAJOR_VERSION = $$section(VERSION, ., 0, 0)" \
|
||||
|
|
@ -105,8 +111,10 @@ MODULE_FWD_PRI = $$mod_work_pfx/qt_lib_$${MODULE_ID}.pri
|
|||
"QT.$${MODULE}_private.PATCH_VERSION = $$section(VERSION, ., 2, 2)" \
|
||||
"" \
|
||||
"QT.$${MODULE}_private.name = $${TARGET}" \ # Same name as base module
|
||||
"QT.$${MODULE}_private.module =" \
|
||||
"QT.$${MODULE}_private.libs = $$module_libs" \
|
||||
"QT.$${MODULE}_private.includes = $$MODULE_PRIVATE_INCLUDES" \
|
||||
"QT.$${MODULE}_private.frameworks =" \
|
||||
"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.")
|
||||
|
|
@ -169,8 +177,8 @@ MODULE_FWD_PRI = $$mod_work_pfx/qt_lib_$${MODULE_ID}.pri
|
|||
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 run_depends plugin_types module_config CONFIG DEFINES \
|
||||
priority includes bins libs libexecs plugins imports qml \
|
||||
name module depends run_depends plugin_types module_config CONFIG DEFINES \
|
||||
priority includes bins libs frameworks libexecs plugins imports qml \
|
||||
)):defined(QT.$${mod}.$$var, var):cache(QT.$${mod}.$$var, transient)
|
||||
}
|
||||
cache(QT_MODULES, transient)
|
||||
|
|
|
|||
Loading…
Reference in New Issue