33276e1cf1
we already knew the dependencies (as they are declared in the json files), but failed to export them in any way, which made linking against statically built external deps which have deps in turn fail (unless the project happened to pull in the dep anyway, as is the case with qtcore + zlib). the previous assumption was that the USE-able library objects would be self-contained, but that is conceptually unclean. instead, properly export the raw dependencies and resolve them only in qmake_use.prf. note that pkg-config produces self-contained output, so we need to actively subtract the dependencies we know. Change-Id: I4b41a7efc05bbd309a6d66275d7557a80efd5af4 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
85 lines
2.7 KiB
Plaintext
85 lines
2.7 KiB
Plaintext
#
|
|
# W A R N I N G
|
|
# -------------
|
|
#
|
|
# This file is not part of the Qt API. It exists purely as an
|
|
# implementation detail. It may change from version to version
|
|
# without notice, or even be removed.
|
|
#
|
|
# We mean it.
|
|
#
|
|
|
|
load(qt_build_paths)
|
|
|
|
TEMPLATE = lib
|
|
CONFIG -= qt
|
|
QT = # In case qt is re-added.
|
|
|
|
INCLUDEPATH += $$MODULE_INCLUDEPATH
|
|
DEFINES += $$MODULE_DEFINES
|
|
|
|
CONFIG -= warning_clean # Don't presume 3rd party code to be clean
|
|
load(qt_common)
|
|
|
|
qtConfig(debug_and_release): CONFIG += debug_and_release
|
|
qtConfig(build_all): CONFIG += build_all
|
|
|
|
DESTDIR = $$MODULE_BASE_OUTDIR/lib
|
|
DLLDESTDIR = $$MODULE_BASE_OUTDIR/bin
|
|
|
|
THE_TARGET = $$qt5LibraryTarget($$TARGET)
|
|
|
|
!build_pass {
|
|
MODULE = $$replace(TARGET, ^qt, )
|
|
MODULE_PRI = $$MODULE_QMAKE_OUTDIR/mkspecs/modules/qt_ext_$${MODULE}.pri
|
|
ucmodule = $$upper($$MODULE)
|
|
|
|
win32|CONFIG(static, static|shared) {
|
|
prefix = $$QMAKE_PREFIX_STATICLIB
|
|
suffix = $$QMAKE_EXTENSION_STATICLIB
|
|
} else {
|
|
prefix = $$QMAKE_PREFIX_SHLIB
|
|
suffix = $$QMAKE_EXTENSION_SHLIB
|
|
}
|
|
CC_USES =
|
|
LD_USES =
|
|
for (use, QMAKE_USE) {
|
|
use = $$split(use, /)
|
|
name = $$take_first(use)
|
|
nu = $$upper($$name)
|
|
!contains(use, linkonly): CC_USES += $$nu
|
|
!contains(use, nolink): LD_USES += $$nu
|
|
}
|
|
CC_USES = $$unique(CC_USES)
|
|
LD_USES = $$unique(LD_USES)
|
|
MODULE_PRI_CONT = \
|
|
"QMAKE_DEPENDS_$${ucmodule}_CC =$$join(CC_USES, " ", " ")" \
|
|
"QMAKE_DEPENDS_$${ucmodule}_LD =$$join(LD_USES, " ", " ")" \
|
|
"QMAKE_INCDIR_$${ucmodule} = $$val_escape(MODULE_INCLUDEPATH)" \
|
|
"QMAKE_DEFINES_$${ucmodule} = $$val_escape(MODULE_DEFINES)"
|
|
debug_and_release {
|
|
win32: \
|
|
MODULE_DEBUG_LIBS = $$DESTDIR/$$prefix$${TARGET}d.$$suffix
|
|
else: darwin: \
|
|
MODULE_DEBUG_LIBS = $$DESTDIR/$$prefix$${TARGET}_debug.$$suffix
|
|
else: \
|
|
error("'$$QMAKE_PLATFORM' does not do debug_and_release.")
|
|
MODULE_RELEASE_LIBS = $$DESTDIR/$$prefix$${TARGET}.$$suffix
|
|
MODULE_PRI_CONT += \
|
|
"QMAKE_LIBS_$${ucmodule} =" \ # Needed for the module to be recognized.
|
|
"QMAKE_LIBS_$${ucmodule}_DEBUG = $$val_escape(MODULE_DEBUG_LIBS)" \
|
|
"QMAKE_LIBS_$${ucmodule}_RELEASE = $$val_escape(MODULE_RELEASE_LIBS)"
|
|
} else {
|
|
MODULE_LIBS = $$DESTDIR/$$prefix$${THE_TARGET}.$$suffix
|
|
MODULE_PRI_CONT += \
|
|
"QMAKE_LIBS_$${ucmodule} = $$val_escape(MODULE_LIBS)"
|
|
}
|
|
write_file($$MODULE_PRI, MODULE_PRI_CONT)|error()
|
|
}
|
|
|
|
TARGET = $$THE_TARGET
|
|
|
|
# In static builds of Qt, convenience libraries must be installed,
|
|
# as in this case they are not linked to the final library/plugin.
|
|
installed|if(!not_installed:qtConfig(static)): load(qt_installs)
|