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

# For Qt applications we want Xcode project files as the generated output,
# but since qmake doesn't handle the transition between makefiles and Xcode
# project files (which happens when using subdirs), we can't just override
# MAKEFILE_GENERATOR. Instead, we generate the Xcode project by spawing a
# child qmake process with -spec macx-xcode and let the top level qmake
# process generate a wrapper makefile that forwards everything to xcodebuild.

TEMPLATE = aux

SOURCES =
OBJECTIVE_SOURCES =
RESOURCES =
INSTALLS =
QMAKE_EXTRA_COMPILERS =

!mkpath($$OUT_PWD): \
    error("Failed to create $$OUT_PWD")

args =
prev_arg =
for(arg, QMAKE_ARGS) {
    !equals(arg, "-spec"):!equals(prev_arg, "-spec"): \
        args += $$system_quote($$arg)
    prev_arg = $$arg
}

cmd = "$$QMAKE_QMAKE $$system_quote($$_PRO_FILE_) -spec macx-xcode $$args"
debug(1, "Generating Xcode project in $$OUT_PWD using '$$cmd'")
system("$$QMAKE_CD $$system_quote($$OUT_PWD) && $$cmd")

# Subtargets

for(build, BUILDS): \
    SUBTARGETS += $$eval($${build}.target)
QMAKE_EXTRA_VARIABLES += SUBTARGETS

CONFIG += no_default_goal_deps

DEVICE_SDK = $${device.sdk}
SIMULATOR_SDK = $${simulator.sdk}
ios {
    DEVICE_FILTER = --platform iOS --minimum-deployment-target $$QMAKE_IOS_DEPLOYMENT_TARGET
    GENERIC_DEVICE_DESTINATION = "generic/platform=iOS"
}
tvos {
    DEVICE_FILTER = --platform tvOS --minimum-deployment-target $$QMAKE_TVOS_DEPLOYMENT_TARGET
    GENERIC_DEVICE_DESTINATION = "generic/platform=tvOS"
}
watchos {
    DEVICE_FILTER = --platform watchOS --minimum-deployment-target $$QMAKE_WATCHOS_DEPLOYMENT_TARGET
    GENERIC_DEVICE_DESTINATION = "generic/platform=watchOS"
}
QMAKE_EXTRA_VARIABLES += DEVICE_SDK SIMULATOR_SDK DEVICE_FILTER GENERIC_DEVICE_DESTINATION

QMAKE_EXTRA_INCLUDES += $$shell_quote($$PWD/xcodebuild.mk)

# Distclean

distfiles = $${TARGET}.xcodeproj
for(build, BUILDS): \
    distfiles += $$title($$eval($${build}.target))
distclean_xcodebuild.commands = -$(DEL_FILE) -R $$distfiles

distclean.depends += clean_all distclean_xcodebuild
QMAKE_EXTRA_TARGETS += distclean distclean_xcodebuild

# Empty exclusive builds, we've set them up manually
BUILDS =