blob: 15751a286b0b4d46b3a91440af445535bce657b2 [file] [log] [blame]
Andrew Sculla158e912018-07-16 11:32:13 +01001OUT ?= out
Wedson Almeida Filho987c0ff2018-06-20 16:34:38 +01002
Andrew Scull49a8e832018-08-03 13:02:09 +01003# Set path to prebuilts
4UNNAME_S := $(shell uname -s | tr '[:upper:]' '[:lower:]')
5PREBUILTS := prebuilts/$(UNNAME_S)-x64
6GN ?= $(PREBUILTS)/gn/gn
7NINJA ?= $(PREBUILTS)/ninja/ninja
Wedson Almeida Filho987c0ff2018-06-20 16:34:38 +01008
Andrew Scull114096b2018-07-31 14:42:16 +01009# Configure the build arguments
10GCC ?= false
11ARCH ?= aarch64
12PLATFORM ?= qemu
13
Andrew Scullbe199df2018-08-07 17:42:31 +010014.PHONY: all
Andrew Sculla158e912018-07-16 11:32:13 +010015all: $(OUT)/build.ninja
16 @$(NINJA) -C $(OUT)
Andrew Scull5e96ef72018-07-18 10:46:26 +010017
Andrew Scull49a8e832018-08-03 13:02:09 +010018$(OUT)/build.ninja: $(OUT)/args.gn
Andrew Scullbe199df2018-08-07 17:42:31 +010019 @$(GN) --export-compile-commands gen $(OUT)
Andrew Scull5e96ef72018-07-18 10:46:26 +010020
Andrew Scull114096b2018-07-31 14:42:16 +010021# Configure the build by loading the configuration arguments for the
22# architecture and platform
23$(OUT)/args.gn: build/arch/$(ARCH)/$(PLATFORM).args
24 @echo Copying config for $(ARCH) on $(PLATFORM)
25 @mkdir -p $(OUT)
26 @echo "arch = \"$(ARCH)\"" >> $@
27 @echo "use_gcc = $(GCC)" >> $@
28 @echo >> $@
29 @cat $< >> $@
30
Andrew Scullbe199df2018-08-07 17:42:31 +010031.PHONY: clean
Wedson Almeida Filho987c0ff2018-06-20 16:34:38 +010032clean:
Andrew Sculla158e912018-07-16 11:32:13 +010033 @$(NINJA) -C $(OUT) -t clean
Wedson Almeida Filho987c0ff2018-06-20 16:34:38 +010034
Andrew Scullbe199df2018-08-07 17:42:31 +010035.PHONY: clobber
Andrew Sculla158e912018-07-16 11:32:13 +010036clobber:
37 rm -rf $(OUT)
Andrew Scull7364a8e2018-07-19 15:39:29 +010038
39# see .clang-format
Andrew Scullbe199df2018-08-07 17:42:31 +010040.PHONY: format
Andrew Scull4f170f52018-07-19 12:58:20 +010041format:
Andrew Sculla158e912018-07-16 11:32:13 +010042 @find src/ -name *.c -o -name *.h | xargs clang-format -style file -i
43 @find inc/ -name *.c -o -name *.h | xargs clang-format -style file -i
Andrew Scullaf5e53e2018-07-23 19:19:46 +010044 @find test/ -name *.c -o -name *.h | xargs clang-format -style file -i
Andrew Sculla158e912018-07-16 11:32:13 +010045 @find . -name *.gn -o -name *.gni -exec $(GN) format {} \;
Andrew Scull4f170f52018-07-19 12:58:20 +010046
Andrew Scull7364a8e2018-07-19 15:39:29 +010047# see .clang-tidy
Andrew Scullbe199df2018-08-07 17:42:31 +010048.PHONY: tidy
49tidy: $(OUT)/build.ninja
50 @$(NINJA) -C $(OUT)
51 @echo "Tidying..."
52 @find src/ -name *.c -exec clang-tidy -p $(OUT) -fix {} \;
53 @find test/ -name *.c -exec clang-tidy -p $(OUT) -fix {} \;