summaryrefslogtreecommitdiffstats
path: root/mkspecs/features/qt_helper_lib.prf
blob: 2cb54fc5470646dabd283da7a409be01972974bf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#
#  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 ~= s,-,_,
    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($$replace(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)