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

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
}

gui_app {
    # We have to do the link and dependency resolution for the platform plugin
    # manually, since QTPLUGIN and the prl lookup logic does not support
    # the -force_load link style. The -force_load option ensures that all
    # symbols from the static library are included, not just the ones the
    # linker have seen a use for so far. We need this because we load the platform
    # plugin from the platform plugin itself, using Q_IMPORT_PLUGIN.
    lib_path_and_base = $$[QT_INSTALL_PLUGINS/get]/platforms/libqios$$qtPlatformTargetSuffix()
    LIBS += "-force_load $${lib_path_and_base}.$${QMAKE_EXTENSION_STATICLIB}"
    LIBS += $$fromfile($${lib_path_and_base}.prl, QMAKE_PRL_LIBS)

    # Which means we don't want the auto-generated import for the platform plugin
    CONFIG -= import_qpa_plugin

    !no_main_wrapper {
        # We link the iosmain library manually as well, since it's not really a plugin
        lib_name = qiosmain
        lib_path_and_base = $$[QT_INSTALL_PLUGINS/get]/platforms/lib$${lib_name}$$qtPlatformTargetSuffix()
        LIBS += -L$$[QT_INSTALL_PLUGINS/get]/platforms -l$${lib_name}$$qtPlatformTargetSuffix()
        LIBS += $$fromfile($${lib_path_and_base}.prl, QMAKE_PRL_LIBS)
        DEFINES += main=qt_main
    }
}

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 = armv7
    else: QT_ARCH = i386 # Simulator
} else {
    # Fix up the QT_ARCH to be more specific
    equals(QT_ARCH, arm) {
        # Samsung S5PC100, Apple A4, A5, A5X
        QT_ARCH = armv7

        # FIXME: How do we support armv7s when Qt can't do universal builds?
    }
}

!equals(MAKEFILE_GENERATOR, XCODE) {
    arch_flag = -arch $$QT_ARCH
    QMAKE_CFLAGS           += $$arch_flag
    QMAKE_CXXFLAGS         += $$arch_flag
    QMAKE_OBJECTIVE_CFLAGS += $$arch_flag
    QMAKE_LFLAGS           += $$arch_flag
}

load(default_post)