cd2690dcbf
If Xcode wasn't configured with any simulators the build would fail since we had no device to build for. But we don't need to build for a specific device, we can build for the generic simulator device, just like we do for the non-simulator build. This likely didn't work properly at the time it was first implemented, but now seems to work fine, and is less fragile than the current solution. Running tests still enumerates the available simulators, as that needs a concrete device to run on. Fixes: COIN-777 Pick-to: 6.2 6.3 5.15 Change-Id: I50e31c1b350cf83ce348275b467051263dea88a9 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
78 lines
2.3 KiB
Plaintext
78 lines
2.3 KiB
Plaintext
|
|
# 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")
|
|
|
|
QMAKE_EXTRA_VARIABLES += PRE_TARGETDEPS
|
|
|
|
# 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"
|
|
}
|
|
GENERIC_SIMULATOR_DESTINATION = "$$GENERIC_DEVICE_DESTINATION Simulator"
|
|
|
|
QMAKE_EXTRA_VARIABLES += \
|
|
DEVICE_SDK SIMULATOR_SDK \
|
|
DEVICE_FILTER \
|
|
GENERIC_DEVICE_DESTINATION \
|
|
GENERIC_SIMULATOR_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 =
|