SCRIPTS_PATH ?= ../Tools/Scripts XCODE_OPTIONS = `perl -I$(SCRIPTS_PATH) -Mwebkitdirs -e 'print XcodeOptionString()' -- $(BUILD_WEBKIT_OPTIONS)` $${COLOR_DIAGNOSTICS_ARG} $(ARGS) ifneq (,$(SDKROOT)) ifneq (,$(OVERRIDE_SDKROOT)) ifneq (default,$(OVERRIDE_SDKROOT)) XCODE_OPTIONS := $(XCODE_OPTIONS) SDKROOT=$(OVERRIDE_SDKROOT) endif OVERRIDE_SDKROOT = else XCODE_OPTIONS := $(XCODE_OPTIONS) SDKROOT=$(SDKROOT) endif endif ifneq (,$(ARCHS)) ifneq (,$(OVERRIDE_ARCHS)) ifneq (default,$(OVERRIDE_ARCHS)) XCODE_OPTIONS := $(XCODE_OPTIONS) ARCHS="$(OVERRIDE_ARCHS)" XCODE_OPTIONS += ONLY_ACTIVE_ARCH=NO endif OVERRIDE_ARCHS = else XCODE_OPTIONS := $(XCODE_OPTIONS) ARCHS="$(ARCHS)" XCODE_OPTIONS += ONLY_ACTIVE_ARCH=NO endif endif ifneq (,$(SDK_VARIANT)) XCODE_OPTIONS += SDK_VARIANT="$(SDK_VARIANT)" endif ifeq (, $(findstring WK_USE_CCACHE, $(ARGS))) ifneq (, $(shell which ccache)) XCODE_OPTIONS += WK_USE_CCACHE=YES endif endif ifeq ($(findstring UseNewBuildSystem,$(ARGS)),) CAN_USE_XCBUILD = $(shell perl -I$(SCRIPTS_PATH) -Mwebkitdirs -e 'print canUseXCBuild()') ifeq ($(CAN_USE_XCBUILD),1) # Temporarily disable default use of XCBuild until issues with it are ironed out. #XCODE_OPTIONS += -UseNewBuildSystem=YES XCODE_OPTIONS += -UseNewBuildSystem=NO else XCODE_OPTIONS += -UseNewBuildSystem=NO endif endif DEFAULT_VERBOSITY := $(shell defaults read org.webkit.BuildConfiguration BuildTranscriptVerbosity 2>/dev/null || echo "default") VERBOSITY ?= $(DEFAULT_VERBOSITY) ifeq ($(VERBOSITY),default) OUTPUT_FILTER = cat XCODE_OPTIONS += -hideShellScriptEnvironment else ifeq ($(VERBOSITY),noisy) OUTPUT_FILTER = cat else OUTPUT_FILTER = $(SCRIPTS_PATH)/filter-build-webkit endif endif ifeq ($(ASAN),YES) ASAN_OPTION=--asan else ifeq ($(ASAN),NO) ASAN_OPTION=--no-asan endif endif ifeq ($(TSAN),YES) TSAN_OPTION=--tsan else ifeq ($(TSAN),NO) TSAN_OPTION=--no-tsan endif endif ifeq ($(UBSAN),YES) UBSAN_OPTION=--ubsan else ifeq ($(UBSAN),NO) UBSAN_OPTION=--no-ubsan endif endif ifeq ($(WK_LTO_MODE),full) WK_LTO_OPTION=--lto-mode=full else ifeq ($(WK_LTO_MODE),thin) WK_LTO_OPTION=--lto-mode=thin else ifeq ($(WK_LTO_MODE),none) WK_LTO_OPTION=--lto-mode=none endif export DSYMUTIL_NUM_THREADS = $(shell sysctl -n hw.activecpu) # Run xcodebuild with the same PATH with which the Xcode IDE runs, to mitigate unnecessary rebuilds due to PATH differences. # See . export PATH = $(shell getconf PATH) define set_webkit_configuration $(SCRIPTS_PATH)/set-webkit-configuration $1 $(ASAN_OPTION) $(TSAN_OPTION) $(UBSAN_OPTION) $(WK_LTO_OPTION) endef define invoke_xcode ( \ [[ -t 1 ]] && COLOR_DIAGNOSTICS_ARG="COLOR_DIAGNOSTICS=YES"; \ echo; \ echo "===== BUILDING $$(basename "$$(pwd)") ====="; \ echo; \ $1 xcodebuild $2 $(OTHER_OPTIONS) $(XCODE_TARGET) $(XCODE_OPTIONS) $3 | $(OUTPUT_FILTER) && exit $${PIPESTATUS[0]} \ ) endef all: ifneq (,$(strip $(ASAN_OPTION) $(TSAN_OPTION) $(UBSAN_OPTION) $(WK_LTO_OPTION))) @$(call set_webkit_configuration,) endif @$(call invoke_xcode,,,GCC_PREPROCESSOR_DEFINITIONS='$(GCC_PREPROCESSOR_ADDITIONS) $$(inherited)') debug d: force @$(call set_webkit_configuration,--debug) @$(call invoke_xcode,,,GCC_PREPROCESSOR_DEFINITIONS='$(GCC_PREPROCESSOR_ADDITIONS) $$(inherited)') release r: force @$(call set_webkit_configuration,--release) @$(call invoke_xcode,,,GCC_PREPROCESSOR_DEFINITIONS='$(GCC_PREPROCESSOR_ADDITIONS) $$(inherited)') release+assert ra: force @$(call set_webkit_configuration,--release) @$(call invoke_xcode,,,GCC_PREPROCESSOR_DEFINITIONS='$(GCC_PREPROCESSOR_ADDITIONS) ASSERT_ENABLED=1 $$(inherited)') testing t: force @$(call set_webkit_configuration,--debug --force-optimization-level=O3) @$(call invoke_xcode,,,GCC_PREPROCESSOR_DEFINITIONS='$(GCC_PREPROCESSOR_ADDITIONS) $$(inherited)') analyze: @$(call set_webkit_configuration,--debug) @$(call invoke_xcode,$(PATH_TO_SCAN_BUILD),analyze,GCC_PREPROCESSOR_DEFINITIONS='$(GCC_PREPROCESSOR_ADDITIONS) $$(inherited)') clean: ifndef XCODE_TARGET @$(call invoke_xcode,,,-alltargets clean) else @$(call invoke_xcode,,,clean) endif installsrc: ifndef XCODE_TARGET @$(call invoke_xcode,,,-alltargets installsrc SRCROOT="$(SRCROOT)$(PATH_FROM_ROOT)") else @$(call invoke_xcode,,,installsrc SRCROOT="$(SRCROOT)$(PATH_FROM_ROOT)") endif force: ;