SCRIPTS_PATH ?= ../Tools/Scripts

ifneq ($(MAKECMDGOALS),installsrc)

ifneq ($(USE_WORKSPACE),NO)
SCHEME ?= $(notdir $(CURDIR))
XCODE_TARGET = -scheme "$(SCHEME)"

ifneq (,$(WORKSPACE_PATH))
CONFIG_OPTIONS += --workspace=$(WORKSPACE_PATH)
endif

# FIXME: Move this setting to xcconfigs once all local Xcode builds of WebKit
# happen in the workspace. When this is only passed on the command line, it
# invalidates build results made in the IDE (rdar://88135402).
#XCODE_OPTIONS += WK_VALIDATE_DEPENDENCIES=YES_ERROR
BUILD_GOAL = $(SCHEME)
else
USE_WORKSPACE =
BUILD_WEBKIT_BASE += --no-use-workspace
BUILD_GOAL = $(notdir $(CURDIR))
endif

XCODE_OPTIONS = $(ARGS)
XCODE_OPTIONS += $(if $(GCC_PREPROCESSOR_ADDITIONS),GCC_PREPROCESSOR_DEFINITIONS='$(GCC_PREPROCESSOR_ADDITIONS) $$(inherited)')
ifeq (ON,$(ENABLE_LLVM_PROFILE_GENERATION))
	XCODE_OPTIONS += ENABLE_LLVM_PROFILE_GENERATION=ENABLE_LLVM_PROFILE_GENERATION
endif

ifneq (,$(SDKROOT))
	ifneq (,$(OVERRIDE_SDKROOT))
		ifneq (default,$(OVERRIDE_SDKROOT))
			CONFIG_OPTIONS += --sdk=$(OVERRIDE_SDKROOT)
			BUILD_WEBKIT_BASE := $(BUILD_WEBKIT_BASE) --sdk=$(OVERRIDE_SDKROOT)
		endif
		OVERRIDE_SDKROOT =
	else
		CONFIG_OPTIONS += --sdk=$(SDKROOT)
		BUILD_WEBKIT_BASE := $(BUILD_WEBKIT_BASE) --sdk=$(SDKROOT)
	endif
endif

ifneq (,$(ARCHS))
	ifneq (,$(OVERRIDE_ARCHS))
		ifneq (default,$(OVERRIDE_ARCHS))
			BUILD_WEBKIT_BASE := $(BUILD_WEBKIT_BASE) --architecture="$(OVERRIDE_ARCHS)"
		endif
		OVERRIDE_ARCHS =
	else
		BUILD_WEBKIT_BASE := $(BUILD_WEBKIT_BASE) --architecture="$(ARCHS)"
	endif
endif

ifeq (iosmac,$(SDK_VARIANT))
	BUILD_WEBKIT_BASE += --maccatalyst
endif

ifeq (, $(findstring WK_USE_CCACHE, $(ARGS)))
	ifneq (, $(shell which ccache))
		XCODE_OPTIONS += WK_USE_CCACHE=YES
	endif
endif

ifneq (,$(EXPORT_COMPILE_COMMANDS))
		XCODE_OPTIONS += OTHER_CFLAGS='$$(inherited) -gen-cdb-fragment-path $$(BUILT_PRODUCTS_DIR)/compile_commands'
		XCODE_OPTIONS += GCC_PRECOMPILE_PREFIX_HEADER=NO
		XCODE_OPTIONS += CLANG_ENABLE_MODULE_DEBUGGING=NO
		XCODE_OPTIONS += COMPILER_INDEX_STORE_ENABLE=NO
endif

endif # ifneq ($(MAKECMDGOALS),installsrc)

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 ifeq ($(VERBOSITY),oneline)
OUTPUT_FILTER = $(SCRIPTS_PATH)/filter-build-webkit -f oneline
else
OUTPUT_FILTER = $(SCRIPTS_PATH)/filter-build-webkit
endif

ifeq ($(ASAN),YES)
CONFIG_OPTIONS += --asan
else
ifeq ($(ASAN),NO)
CONFIG_OPTIONS += --no-asan
endif
endif

ifneq ($(CC),)
ifneq ($(CC),cc)  # Default value without -R flag
XCODE_OPTIONS += CC=$(CC)
endif
endif

ifeq ($(CODE_COVERAGE),YES)
CONFIG_OPTIONS += --coverage
else
ifeq ($(CODE_COVERAGE),NO)
CONFIG_OPTIONS += --no-coverage
endif
endif

ifneq ($(CPLUSPLUS),)
XCODE_OPTIONS += CPLUSPLUS=$(CPLUSPLUS)
endif

ifeq ($(LIBFUZZER),YES)
CONFIG_OPTIONS += --libfuzzer
else
ifeq ($(LIBFUZZER),NO)
CONFIG_OPTIONS += --no-libfuzzer
endif
endif

ifneq ($(WK_SANITIZER_COVERAGE),)
XCODE_OPTIONS += WK_SANITIZER_COVERAGE=$(WK_SANITIZER_COVERAGE)
endif

ifeq ($(TSAN),YES)
CONFIG_OPTIONS += --tsan
else
ifeq ($(TSAN),NO)
CONFIG_OPTIONS += --no-tsan
endif
endif

ifeq ($(UBSAN),YES)
CONFIG_OPTIONS += --ubsan
else
ifeq ($(UBSAN),NO)
CONFIG_OPTIONS += --no-ubsan
endif
endif

ifeq ($(WK_LTO_MODE),full)
CONFIG_OPTIONS += --lto-mode=full
else ifeq ($(WK_LTO_MODE),thin)
CONFIG_OPTIONS += --lto-mode=thin
else ifeq ($(WK_LTO_MODE),none)
CONFIG_OPTIONS += --lto-mode=none
endif

ANALYZER_XCODE_SETTINGS = RUN_CLANG_STATIC_ANALYZER=YES CLANG_STATIC_ANALYZER_MODE=deep CLANG_ANALYZER_OUTPUT=html
ifneq (,$(ANALYZER_EXEC))
	ANALYZER_XCODE_SETTINGS += CLANG_ANALYZER_EXEC="$(ANALYZER_EXEC)"
endif
ifneq (,$(ANALYZER_FLAGS))
	ANALYZER_XCODE_SETTINGS += CLANG_ANALYZER_OTHER_FLAGS="$(ANALYZER_FLAGS)"
endif
ifneq (,$(ANALYZER_OUTPUT))
	ANALYZER_XCODE_SETTINGS += CLANG_ANALYZER_OUTPUT_DIR="$(ANALYZER_OUTPUT)"
endif
ifeq (,$(PATH_TO_SCAN_BUILD))
	PATH_TO_SCAN_BUILD = scan-build
endif

export DSYMUTIL_NUM_THREADS = $(shell sysctl -n hw.activecpu)

define set_webkit_configuration
	$(SCRIPTS_PATH)/set-webkit-configuration $1 $(CONFIG_OPTIONS)
endef

define invoke_xcode
	( \
		echo; \
		echo "===== BUILDING $(BUILD_GOAL) ====="; \
		echo; \
		eval build_webkit_options=(`perl -I$(SCRIPTS_PATH) -Mwebkitdirs -e 'print XcodeOptionString()' -- $(BUILD_WEBKIT_BASE) $(BUILD_WEBKIT_OPTIONS)`); \
		xcodebuild $1 $(OTHER_OPTIONS) $(XCODE_TARGET) "$${build_webkit_options[@]}" $(XCODE_OPTIONS) $2 | $(OUTPUT_FILTER) && exit $${PIPESTATUS[0]} \
	)
endef

all:
	@$(call set_webkit_configuration,)
	@$(call invoke_xcode,,)

debug d: force
	@$(call set_webkit_configuration,--debug)
	@$(call invoke_xcode,,)

release r: force
	@$(call set_webkit_configuration,--release)
	@$(call invoke_xcode,,)

release+assert ra: force
	@$(call set_webkit_configuration,--release)
	@$(call invoke_xcode,,)
release+assert ra: override GCC_PREPROCESSOR_ADDITIONS += ASSERT_ENABLED=1

testing t: force
	@$(call set_webkit_configuration,--debug --force-optimization-level=O3)
	@$(call invoke_xcode,,)

analyze:
	@$(call set_webkit_configuration,--debug)
	@$(call invoke_xcode,analyze,$(ANALYZER_XCODE_SETTINGS)) || true
	@for dir in $$(ls -d $(ANALYZER_OUTPUT)/StaticAnalyzer/*); do \
		mkdir -p $$dir/StaticAnalyzerReports; \
		find $$dir -name 'report-*.html' -exec mv {} $$dir/StaticAnalyzerReports/ \;; \
		$(PATH_TO_SCAN_BUILD) --generate-index-only $$dir; \
	done

clean:
ifndef XCODE_TARGET
	@$(call invoke_xcode,,-alltargets clean)
else
	@$(call invoke_xcode,,clean)
endif

installsrc:
	xcodebuild installsrc SRCROOT="$(SRCROOT)$(PATH_FROM_ROOT)"

force: ;
