# 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
	@find test/ \( -name *.c -o -name *.cc \) | xargs clang-check -p $(OUT_DIR) -analyze

.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
