summaryrefslogtreecommitdiffstats
path: root/mkspecs/features/mac/default_post.prf
blob: 1b2e5d5db4ae3c3ce08be50303a929f397b8f20e (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
86
87
88
89
90
91
92
93
94
load(default_post)

# Ensure that we process sdk.prf first, as it will update QMAKE_CXX
# and friends that other features/extra compilers may depend on.
sdk: load(sdk)

!no_objective_c:CONFIG += objective_c

qt {
    qtConfig(static) {
        # C++11 support means using libc++ instead of libstd++. As the
        # two libraries are incompatible we need to ensure the end user
        # project is built using the same C++11 support/no support as Qt.
        qtConfig(c++11) {
            CONFIG += c++11
        } else: c++11 {
            warning("Qt was not built with C++11 enabled, disabling feature")
            CONFIG -= c++11
        }

        !c++11 {
            # Explicitly use libstdc++ if C++11 support is not enabled,
            # as otherwise the compiler will choose the standard library
            # based on the deployment target, which for iOS 7 and OS X 10.9
            # is libc++, and we can't mix and match the two.
            QMAKE_CXXFLAGS += -stdlib=libstdc++
            QMAKE_LFLAGS   += -stdlib=libstdc++
        }
    }
}

# Add the same default rpaths as Xcode does for new projects.
# This is especially important for iOS/tvOS/watchOS where no other option is possible.
!no_default_rpath {
    QMAKE_RPATHDIR += @executable_path/Frameworks
    equals(TEMPLATE, lib):!plugin:lib_bundle: QMAKE_RPATHDIR += @loader_path/Frameworks
}

!bitcode: QMAKE_LFLAGS += $$QMAKE_LFLAGS_HEADERPAD

macx-xcode {
    !isEmpty(QMAKE_XCODE_DEBUG_INFORMATION_FORMAT) {
        debug_information_format.name = DEBUG_INFORMATION_FORMAT
        debug_information_format.value = $$QMAKE_XCODE_DEBUG_INFORMATION_FORMAT
        debug_information_format.build = debug
        QMAKE_MAC_XCODE_SETTINGS += debug_information_format
    }

    QMAKE_XCODE_ARCHS =

    arch_device.name = "ARCHS[sdk=$${device.sdk}*]"
    arch_device.value = $$QMAKE_APPLE_DEVICE_ARCHS
    QMAKE_XCODE_ARCHS += $$QMAKE_APPLE_DEVICE_ARCHS
    QMAKE_MAC_XCODE_SETTINGS += arch_device

    simulator {
        arch_simulator.name = "ARCHS[sdk=$${simulator.sdk}*]"
        arch_simulator.value = $$QMAKE_APPLE_SIMULATOR_ARCHS
        QMAKE_XCODE_ARCHS += $$QMAKE_APPLE_SIMULATOR_ARCHS
        QMAKE_MAC_XCODE_SETTINGS += arch_simulator
    }

    only_active_arch.name = ONLY_ACTIVE_ARCH
    only_active_arch.value = YES
    only_active_arch.build = debug
    QMAKE_MAC_XCODE_SETTINGS += only_active_arch
} else {
    VALID_ARCHS =
    device|!simulator: VALID_ARCHS += $$QMAKE_APPLE_DEVICE_ARCHS
    simulator: VALID_ARCHS += $$QMAKE_APPLE_SIMULATOR_ARCHS

    isEmpty(VALID_ARCHS): \
        error("QMAKE_APPLE_DEVICE_ARCHS or QMAKE_APPLE_SIMULATOR_ARCHS must contain at least one architecture")

    single_arch: VALID_ARCHS = $$first(VALID_ARCHS)

    ACTIVE_ARCHS = $(filter $(EXPORT_VALID_ARCHS), $(ARCHS))
    ARCH_ARGS = $(foreach arch, $(if $(EXPORT_ACTIVE_ARCHS), $(EXPORT_ACTIVE_ARCHS), $(EXPORT_VALID_ARCHS)), -arch $(arch))

    QMAKE_EXTRA_VARIABLES += VALID_ARCHS ACTIVE_ARCHS ARCH_ARGS

    arch_flags = $(EXPORT_ARCH_ARGS)

    QMAKE_CFLAGS += $$arch_flags
    QMAKE_CXXFLAGS += $$arch_flags
    QMAKE_LFLAGS += $$arch_flags

    QMAKE_PCH_ARCHS = $$VALID_ARCHS
}

cache(QMAKE_XCODE_DEVELOPER_PATH, stash)
cache(QMAKE_XCODE_VERSION, stash)

QMAKE_XCODE_LIBRARY_SUFFIX = $$qtPlatformTargetSuffix()