# Set path to prebuilts used in the build.
UNNAME_S := $(shell uname -s | tr '[:upper:]' '[:lower:]')
PREBUILTS := $(PWD)/prebuilts/$(UNNAME_S)-x64
GN ?= $(PREBUILTS)/gn/gn
NINJA ?= $(PREBUILTS)/ninja/ninja
export PATH := $(PREBUILTS)/clang/bin:$(PATH)

# Configure the build arguments.
ARCH ?= aarch64
PLATFORM ?= qemu
GCC ?= false

# Place builds for different architectures and platforms in different
# directories.
OUT ?= out
OUT_DIR = out/$(ARCH)/$(PLATFORM)

.PHONY: all
all: $(OUT_DIR)/build.ninja
	@$(NINJA) -C $(OUT_DIR)

$(OUT_DIR)/build.ninja: $(OUT_DIR)/args.gn
	@$(GN) --export-compile-commands gen $(OUT_DIR)

# Configure the build by loading the configuration arguments for the
# architecture and platform.
$(OUT_DIR)/args.gn: build/arch/$(ARCH)/$(PLATFORM).args
	@echo Copying config for $(ARCH) on $(PLATFORM)
	@mkdir -p $(OUT_DIR)
	@echo "arch = \"$(ARCH)\"" >> $@
	@echo "use_gcc = $(GCC)" >> $@
	@echo >> $@
	@cat $< >> $@

.PHONY: clean
clean:
	@$(NINJA) -C $(OUT_DIR) -t clean
	rm -f $(OUT_DIR)/args.gn

.PHONY: clobber
clobber:
	rm -rf $(OUT)

# see .clang-format.
.PHONY: format
format:
	@echo "Formatting..."
	@find src/ -name \*.c -o -name \*.cc -o -name \*.h | xargs clang-format -style file -i
	@find inc/ -name \*.c -o -name \*.cc -o -name \*.h | xargs clang-format -style file -i
	@find test/ -name \*.c -o -name \*.cc -o -name \*.h | xargs clang-format -style file -i
	@find . \( -name \*.gn -o -name \*.gni \) | xargs -n1 $(GN) format

# see .clang-tidy.
.PHONY: tidy
tidy: $(OUT_DIR)/build.ninja
	@$(NINJA) -C $(OUT_DIR)
	@echo "Tidying..."
	@find src/ \( -name \\*.c -o -name \*.cc \) | xargs clang-tidy -p $(OUT_DIR) -fix
	@find test/ \( -name \*.c -o -name \*.cc \) | xargs clang-tidy -p $(OUT_DIR) -fix

.PHONY: check
check: $(OUT_DIR)/build.ninja
	@$(NINJA) -C $(OUT_DIR)
	@echo "Checking..."
	@find src/ \( -name \*.c -o -name \*.cc \) | xargs clang-check -p $(OUT_DIR) -analyze -fix-what-you-can
	@find test/ \( -name \*.c -o -name \*.cc \) | xargs clang-check -p $(OUT_DIR) -analyze -fix-what-you-can

.PHONY: license
license:
	@find src/ -name \*.c -o -name \*.cc -o -name \*.h | xargs -n1 python build/license.py --style c
	@find inc/ -name \*.c -o -name \*.cc -o -name \*.h | xargs -n1 python build/license.py --style c
	@find test/ -name \*.c -o -name \*.cc -o -name \*.h | xargs -n1 python build/license.py --style c
	@find build/ -name \*.py| xargs -n1 python build/license.py --style hash
	@find test/ -name \*.py| xargs -n1 python build/license.py --style hash
	@find . \( -name \*.gn -o -name \*.gni \) | xargs -n1 python build/license.py --style hash
