summaryrefslogtreecommitdiffstats
path: root/mkspecs/features/ios/default_post.prf
blob: abd82b955a57ad42f64e12fbde6ca35a2148637a (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

CONFIG(qt):contains(QT, gui):equals(TEMPLATE, app): CONFIG += gui_app

isEmpty(MAKEFILE_GENERATOR) {
    gui_app:app_bundle: \
        # For applications we want Xcode project files
        MAKEFILE_GENERATOR = XCODE
    else: \
        # For libs, etc we still want regular Makefiles
        MAKEFILE_GENERATOR = UNIX
}

contains(MAKEFILE_GENERATOR, XCODE) {
    ios_device_family.name = TARGETED_DEVICE_FAMILY
    ios_device_family.value = $$QMAKE_IOS_TARGETED_DEVICE_FAMILY
    QMAKE_MAC_XCODE_SETTINGS += ios_device_family
}

isEmpty(QT_ARCH) {
    # The iPhoneOS and iPhoneSimulator targets share the same toolchain,
    # so when configure runs the arch tests it passes the correct sysroot,
    # but we fail to pick up the architecture since we're not passing -arch
    # yet. Xcode does not seem to have a way to run the shared toolchain
    # in a way that will automatically  do this (for example xcrun -sdk).
    contains(QMAKE_MAC_SDK, iphoneos.*): QT_ARCH = arm
    else: QT_ARCH = i386 # Simulator
}

# Be more specific about which architecture we're targeting
equals(QT_ARCH, arm): \
    actual_archs = armv7
else: \
    actual_archs = $$QT_ARCH

equals(MAKEFILE_GENERATOR, XCODE) {
    QMAKE_XCODE_ARCHS = $$actual_archs
} else {
    for(arch, actual_archs): \
        arch_flags += -arch $$arch

    QMAKE_CFLAGS           += $$arch_flags
    QMAKE_CXXFLAGS         += $$arch_flags
    QMAKE_OBJECTIVE_CFLAGS += $$arch_flags
    QMAKE_LFLAGS           += $$arch_flags
}
unset(actual_archs)

load(default_post)