Andrew Scull | bf570f2 | 2018-08-08 15:35:54 +0100 | [diff] [blame] | 1 | # Set path to prebuilts used in the build. |
Andrew Scull | 49a8e83 | 2018-08-03 13:02:09 +0100 | [diff] [blame] | 2 | UNNAME_S := $(shell uname -s | tr '[:upper:]' '[:lower:]') |
Andrew Scull | bf570f2 | 2018-08-08 15:35:54 +0100 | [diff] [blame] | 3 | PREBUILTS := $(PWD)/prebuilts/$(UNNAME_S)-x64 |
Andrew Scull | 49a8e83 | 2018-08-03 13:02:09 +0100 | [diff] [blame] | 4 | GN ?= $(PREBUILTS)/gn/gn |
| 5 | NINJA ?= $(PREBUILTS)/ninja/ninja |
Andrew Scull | bf570f2 | 2018-08-08 15:35:54 +0100 | [diff] [blame] | 6 | export PATH := $(PREBUILTS)/clang/bin:$(PATH) |
Wedson Almeida Filho | 987c0ff | 2018-06-20 16:34:38 +0100 | [diff] [blame] | 7 | |
Andrew Scull | 58de5c3 | 2018-08-15 17:20:02 +0100 | [diff] [blame] | 8 | # Place builds for different architectures and platforms in different |
| 9 | # directories. |
| 10 | OUT ?= out |
Andrew Scull | 23e93a8 | 2018-10-26 14:56:04 +0100 | [diff] [blame^] | 11 | OUT_DIR = out |
Andrew Scull | 114096b | 2018-07-31 14:42:16 +0100 | [diff] [blame] | 12 | |
Andrew Scull | be199df | 2018-08-07 17:42:31 +0100 | [diff] [blame] | 13 | .PHONY: all |
Andrew Scull | 58de5c3 | 2018-08-15 17:20:02 +0100 | [diff] [blame] | 14 | all: $(OUT_DIR)/build.ninja |
| 15 | @$(NINJA) -C $(OUT_DIR) |
Andrew Scull | 5e96ef7 | 2018-07-18 10:46:26 +0100 | [diff] [blame] | 16 | |
Andrew Scull | 23e93a8 | 2018-10-26 14:56:04 +0100 | [diff] [blame^] | 17 | $(OUT_DIR)/build.ninja: |
Andrew Scull | 58de5c3 | 2018-08-15 17:20:02 +0100 | [diff] [blame] | 18 | @$(GN) --export-compile-commands gen $(OUT_DIR) |
Andrew Scull | 5e96ef7 | 2018-07-18 10:46:26 +0100 | [diff] [blame] | 19 | |
Andrew Scull | be199df | 2018-08-07 17:42:31 +0100 | [diff] [blame] | 20 | .PHONY: clean |
Wedson Almeida Filho | 987c0ff | 2018-06-20 16:34:38 +0100 | [diff] [blame] | 21 | clean: |
Andrew Scull | 58de5c3 | 2018-08-15 17:20:02 +0100 | [diff] [blame] | 22 | @$(NINJA) -C $(OUT_DIR) -t clean |
Wedson Almeida Filho | 987c0ff | 2018-06-20 16:34:38 +0100 | [diff] [blame] | 23 | |
Andrew Scull | be199df | 2018-08-07 17:42:31 +0100 | [diff] [blame] | 24 | .PHONY: clobber |
Andrew Scull | a158e91 | 2018-07-16 11:32:13 +0100 | [diff] [blame] | 25 | clobber: |
| 26 | rm -rf $(OUT) |
Andrew Scull | 7364a8e | 2018-07-19 15:39:29 +0100 | [diff] [blame] | 27 | |
Andrew Scull | bf570f2 | 2018-08-08 15:35:54 +0100 | [diff] [blame] | 28 | # see .clang-format. |
Andrew Scull | be199df | 2018-08-07 17:42:31 +0100 | [diff] [blame] | 29 | .PHONY: format |
Andrew Scull | 4f170f5 | 2018-07-19 12:58:20 +0100 | [diff] [blame] | 30 | format: |
Andrew Scull | 8087132 | 2018-08-06 12:04:09 +0100 | [diff] [blame] | 31 | @echo "Formatting..." |
Andrew Scull | e982771 | 2018-10-19 14:54:20 +0100 | [diff] [blame] | 32 | @find src/ -name \*.c -o -name \*.cc -o -name \*.h | xargs clang-format -style file -i |
| 33 | @find inc/ -name \*.c -o -name \*.cc -o -name \*.h | xargs clang-format -style file -i |
| 34 | @find test/ -name \*.c -o -name \*.cc -o -name \*.h | xargs clang-format -style file -i |
| 35 | @find . \( -name \*.gn -o -name \*.gni \) | xargs -n1 $(GN) format |
Andrew Scull | 4f170f5 | 2018-07-19 12:58:20 +0100 | [diff] [blame] | 36 | |
Andrew Scull | bf570f2 | 2018-08-08 15:35:54 +0100 | [diff] [blame] | 37 | # see .clang-tidy. |
Andrew Scull | be199df | 2018-08-07 17:42:31 +0100 | [diff] [blame] | 38 | .PHONY: tidy |
Andrew Scull | 58de5c3 | 2018-08-15 17:20:02 +0100 | [diff] [blame] | 39 | tidy: $(OUT_DIR)/build.ninja |
| 40 | @$(NINJA) -C $(OUT_DIR) |
Andrew Scull | be199df | 2018-08-07 17:42:31 +0100 | [diff] [blame] | 41 | @echo "Tidying..." |
Andrew Scull | e982771 | 2018-10-19 14:54:20 +0100 | [diff] [blame] | 42 | @find src/ \( -name \\*.c -o -name \*.cc \) | xargs clang-tidy -p $(OUT_DIR) -fix |
| 43 | @find test/ \( -name \*.c -o -name \*.cc \) | xargs clang-tidy -p $(OUT_DIR) -fix |
Andrew Scull | 2a495c2 | 2018-08-12 23:07:30 +0100 | [diff] [blame] | 44 | |
| 45 | .PHONY: check |
Andrew Scull | 58de5c3 | 2018-08-15 17:20:02 +0100 | [diff] [blame] | 46 | check: $(OUT_DIR)/build.ninja |
| 47 | @$(NINJA) -C $(OUT_DIR) |
Andrew Scull | 2a495c2 | 2018-08-12 23:07:30 +0100 | [diff] [blame] | 48 | @echo "Checking..." |
Andrew Scull | e982771 | 2018-10-19 14:54:20 +0100 | [diff] [blame] | 49 | @find src/ \( -name \*.c -o -name \*.cc \) | xargs clang-check -p $(OUT_DIR) -analyze -fix-what-you-can |
| 50 | @find test/ \( -name \*.c -o -name \*.cc \) | xargs clang-check -p $(OUT_DIR) -analyze -fix-what-you-can |
Andrew Scull | 1883487 | 2018-10-12 11:48:09 +0100 | [diff] [blame] | 51 | |
| 52 | .PHONY: license |
| 53 | license: |
Andrew Scull | 4c86ff5 | 2018-10-29 11:22:28 +0000 | [diff] [blame] | 54 | @find src/ -name \*.S -o -name \*.c -o -name \*.cc -o -name \*.h | xargs -n1 python build/license.py --style c |
| 55 | @find inc/ -name \*.S -o -name \*.c -o -name \*.cc -o -name \*.h | xargs -n1 python build/license.py --style c |
| 56 | @find test/ -name \*.S -o -name \*.c -o -name \*.cc -o -name \*.h | xargs -n1 python build/license.py --style c |
Andrew Scull | e982771 | 2018-10-19 14:54:20 +0100 | [diff] [blame] | 57 | @find build/ -name \*.py| xargs -n1 python build/license.py --style hash |
| 58 | @find test/ -name \*.py| xargs -n1 python build/license.py --style hash |
| 59 | @find . \( -name \*.gn -o -name \*.gni \) | xargs -n1 python build/license.py --style hash |