qt5base-lts/mkspecs/features/uikit/xcodebuild.mk
Tor Arne Vestbø 16b11bb81e xcode: Allow automatic provisioning updates when calling xcodebuild
If automatic signing is enabled (which it is by default), then Xcode will
happily set up the required profile if you open and run the application
in Xcode. To get the same behavior for xcodebuild, and hence from Creator,
since it's calling our Makefile wrapper around xcodebuild, we need to
pass the -allowProvisioningUpdates flag to xcodebuild.

Fixes: QTBUG-95565
Pick-to: 6.2 6.2.0 5.15
Change-Id: I9325bb228bdfb4d07658eff8f41798f7b5a6955c
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-09-09 17:05:25 +00:00

113 lines
3.7 KiB
Makefile

# We don't want xcodebuild to run in parallel
.NOTPARALLEL:
# Functions
targets = $(foreach target, $(EXPORT_SUBTARGETS), $(target)-$(strip $(1)))
toupper = $(shell echo $1 | tr '[:lower:]' '[:upper:]')
tolower = $(shell echo $1 | tr '[:upper:]' '[:lower:]')
basesdk = $(shell echo $1 | sed 's/[0-9.]*$$//')
# Explicit comma variable
, := ,
# Default targets
first: build
all: build_all
.DEFAULT_GOAL = first
# Top level targets
build: build_first
clean: clean_first
install: install_first
check: check_first
distclean: clean_all
$(EXPORT_SUBTARGETS): % : %-build
# Generic targets
%_first: $(EXPORT_PRE_TARGETDEPS) $(firstword $(call targets, %)) ;
%_all: $(EXPORT_PRE_TARGETDEPS) $(call targets, %) ;
# Actions
%-build: ACTION = build
%-build: xcodebuild-% ;
%-clean: ACTION = clean
%-clean: xcodebuild-% ;
%-install: ACTION = install
%-install: xcodebuild-% ;
# Simulator doesn't support archiving
%-simulator-install: ACTION = build
simulator-install: ACTION = build
# Limit check to a single configuration
%-device-check: check-device ;
%-simulator-check: check-simulator ;
# SDK
%-device: SDK = $(DEVICE_SDK)
%-simulator: SDK = $(SIMULATOR_SDK)
# Configuration
release-%: CONFIGURATION = Release
debug-%: CONFIGURATION = Debug
MAKEFILE_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
# Test and build (device) destinations
ifneq ($(filter check%,$(MAKECMDGOALS)),)
ifeq ($(DEVICES),)
$(info Enumerating test destinations (you may override this by setting DEVICES explicitly), please wait...)
DESTINATIONS_INCLUDE = /tmp/device_destinations.mk
$(shell $(MAKEFILE_DIR)device_destinations.sh $(TARGET) $(EXPORT_DEVICE_FILTER) > $(DESTINATIONS_INCLUDE))
include $(DESTINATIONS_INCLUDE)
endif
endif
%-simulator: DEVICES = $(firstword $(SIMULATOR_DEVICES))
%-device: DEVICES = $(HARDWARE_DEVICES)
GENERIC_DEVICE_DESTINATION := $(EXPORT_GENERIC_DEVICE_DESTINATION)
GENERIC_SIMULATOR_DESTINATION := "id=$(shell $(MAKEFILE_DIR)devices.py $(EXPORT_DEVICE_FILTER) | tail -n 1)"
%-simulator: DESTINATION = $(if $(DESTINATION_ID),"id=$(DESTINATION_ID)",$(GENERIC_SIMULATOR_DESTINATION))
%-device: DESTINATION = $(if $(DESTINATION_ID),"id=$(DESTINATION_ID)",$(GENERIC_DEVICE_DESTINATION))
XCODE_VERSION_MAJOR := $(shell xcodebuild -version | grep Xcode | sed -e 's/Xcode //' | sed -e 's/\..*//')
ifeq ($(shell test $(XCODE_VERSION_MAJOR) -gt 7; echo $$?),0)
XCODEBUILD_FLAGS += $(shell echo "$(MAKEFLAGS)" | sed -e 's/\([^ ]*\).*/\1/' | grep -qv 's' || echo -quiet)
endif
ifeq ($(shell test $(XCODE_VERSION_MAJOR) -ge 9; echo $$?),0)
XCODEBUILD_FLAGS += -allowProvisioningUpdates
endif
# Xcodebuild
DESTINATION_MESSAGE = "Running $(call tolower,$(CONFIGURATION)) $(ACTION) \
on '$(DESTINATION_NAME)' ($(DESTINATION_ID))$(if $(DESTINATION_OS),$(,) $(DESTINATION_PLATFORM) $(DESTINATION_OS),)"
xcodebuild-%:
@$(if $(DESTINATION_NAME), echo $(DESTINATION_MESSAGE),)
xcodebuild $(ACTION) $(XCODEBUILD_FLAGS) -project $(TARGET).xcodeproj -scheme $(TARGET) $(if $(SDK), -sdk $(SDK),) $(if $(CONFIGURATION), -configuration $(CONFIGURATION),) $(if $(DESTINATION), -destination $(DESTINATION) -destination-timeout 1,) $(if $(DESTINATION_ID),, ENABLE_ONLY_ACTIVE_RESOURCES=NO) $(if $(INSTALL_ROOT), DSTROOT=$(INSTALL_ROOT),)
xcodebuild-check-device_%: DESTINATION_ID=$(lastword $(subst _, ,$@))
# Special check target (requires SECONDEXPANSION due to devices)
.SECONDEXPANSION:
check-%: ACTION = test
check-%: $$(foreach device, $$(DEVICES), xcodebuild-check-device_$$(device)) ;
@echo $(if $^, Ran $(call tolower,$(CONFIGURATION)) tests on $(words $^) $(SDK) destination\(s\): $(DEVICES), No compatible test devices found for \'$(SDK)\' SDK && false)
# Determined by device
check-%: SDK =
# Default to debug for testing
check-%: CONFIGURATION = Debug