summaryrefslogtreecommitdiffstats
path: root/mkspecs/features/uikit/resolve_config.prf
blob: c3ab90f45e18d367b90a273bba75ee32d4b56a4c (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

xcodebuild {
    # Xcode project files always support both Debug and Release configurations
    # and iOS device and simulator targets, so we make sure the wrapper-makefile
    # also does.
    CONFIG += debug_and_release simulator_and_device
}

load(resolve_config)

# Legacy exclusive build configurations for backwards compatibility
CONFIG($${device.CONFIG}, $${device.CONFIG}|$${simulator.CONFIG}): \
    CONFIG += device
else: CONFIG($${simulator.CONFIG}, $${device.CONFIG}|$${simulator.CONFIG}): \
    CONFIG += simulator

CONFIG(simulator, simulator|device): \
    CONFIG -= device $${device.CONFIG}
else: \
    CONFIG -= simulator $${simulator.CONFIG}

macx-xcode {
    # There is no way to genereate Xcode projects that are limited to either
    # simulator or device builds, so simulator_and_device is always
    # effectivly active, even if the user disabled it explicitly.
    # The Xcode generator doesn't support multiple BUILDS though (exclusive
    # builds), so we have to manually set up the simulator suffix.
    library_suffix_simulator.name = "$${QMAKE_XCODE_LIBRARY_SUFFIX_SETTING}[sdk=$${simulator.sdk}*]"
    library_suffix_simulator.value = "_$${simulator.sdk}$($${QMAKE_XCODE_LIBRARY_SUFFIX_SETTING})"
    QMAKE_MAC_XCODE_SETTINGS += library_suffix_simulator
    CONFIG *= xcode_dynamic_library_suffix
} else {
    addExclusiveBuilds(simulator, device)
}

equals(TEMPLATE, subdirs) {
    # Prevent recursion into host_builds
    for(subdir, SUBDIRS) {
        contains($${subdir}.CONFIG, host_build) {
            $${subdir}.CONFIG += no_$${simulator.target}_target no_$${device.target}_target

            # Other targets which we do want to recurse into may depend on this target,
            # for example corelib depends on moc, rcc, bootstrap, etc, and other libs
            # may depend on host-tools that are needed to build the lib, so we resolve
            # the final target name and redirect it to the base target, so that the
            # dependency chain is not broken for the other targets.

            !isEmpty($${subdir}.target) {
                target = $$eval($${subdir}.target)
            } else {
                !isEmpty($${subdir}.file): \
                    file = $$eval($${subdir}.file)
                else: !isEmpty($${subdir}.subdir): \
                    file = $$eval($${subdir}.subdir)
                else: \
                    file = $$subdir

                target = sub-$$file
            }

            target ~= s,[^a-zA-Z0-9_],-,

            $${target}-$${simulator.target}.depends = $$target
            $${target}-$${device.target}.depends = $$target
            QMAKE_EXTRA_TARGETS += $${target}-$${simulator.target} $${target}-$${device.target}
        }
    }
}