blob: b5c469567b14638015458a25c4c6c09f9c4ef76b [file] [log] [blame]
Andrew Scullbf570f22018-08-08 15:35:54 +01001# Set path to prebuilts used in the build.
Andrew Scull49a8e832018-08-03 13:02:09 +01002UNNAME_S := $(shell uname -s | tr '[:upper:]' '[:lower:]')
Andrew Scullbf570f22018-08-08 15:35:54 +01003PREBUILTS := $(PWD)/prebuilts/$(UNNAME_S)-x64
Andrew Scull49a8e832018-08-03 13:02:09 +01004GN ?= $(PREBUILTS)/gn/gn
5NINJA ?= $(PREBUILTS)/ninja/ninja
Andrew Scullbf570f22018-08-08 15:35:54 +01006export PATH := $(PREBUILTS)/clang/bin:$(PATH)
Wedson Almeida Filho987c0ff2018-06-20 16:34:38 +01007
Andrew Scull58de5c32018-08-15 17:20:02 +01008# Place builds for different architectures and platforms in different
9# directories.
10OUT ?= out
Andrew Scull23e93a82018-10-26 14:56:04 +010011OUT_DIR = out
Andrew Scull114096b2018-07-31 14:42:16 +010012
Andrew Scullbe199df2018-08-07 17:42:31 +010013.PHONY: all
Andrew Scull58de5c32018-08-15 17:20:02 +010014all: $(OUT_DIR)/build.ninja
15 @$(NINJA) -C $(OUT_DIR)
Andrew Scull5e96ef72018-07-18 10:46:26 +010016
Andrew Scull23e93a82018-10-26 14:56:04 +010017$(OUT_DIR)/build.ninja:
Andrew Scull58de5c32018-08-15 17:20:02 +010018 @$(GN) --export-compile-commands gen $(OUT_DIR)
Andrew Scull5e96ef72018-07-18 10:46:26 +010019
Andrew Scullbe199df2018-08-07 17:42:31 +010020.PHONY: clean
Wedson Almeida Filho987c0ff2018-06-20 16:34:38 +010021clean:
Andrew Scull58de5c32018-08-15 17:20:02 +010022 @$(NINJA) -C $(OUT_DIR) -t clean
Wedson Almeida Filho987c0ff2018-06-20 16:34:38 +010023
Andrew Scullbe199df2018-08-07 17:42:31 +010024.PHONY: clobber
Andrew Sculla158e912018-07-16 11:32:13 +010025clobber:
26 rm -rf $(OUT)
Andrew Scull7364a8e2018-07-19 15:39:29 +010027
Andrew Scullbf570f22018-08-08 15:35:54 +010028# see .clang-format.
Andrew Scullbe199df2018-08-07 17:42:31 +010029.PHONY: format
Andrew Scull4f170f52018-07-19 12:58:20 +010030format:
Andrew Scull80871322018-08-06 12:04:09 +010031 @echo "Formatting..."
Andrew Sculle9827712018-10-19 14:54:20 +010032 @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 Scull4f170f52018-07-19 12:58:20 +010036
Andrew Scullbf570f22018-08-08 15:35:54 +010037# see .clang-tidy.
Andrew Scullbe199df2018-08-07 17:42:31 +010038.PHONY: tidy
Andrew Scull58de5c32018-08-15 17:20:02 +010039tidy: $(OUT_DIR)/build.ninja
40 @$(NINJA) -C $(OUT_DIR)
Andrew Scullbe199df2018-08-07 17:42:31 +010041 @echo "Tidying..."
Andrew Sculle9827712018-10-19 14:54:20 +010042 @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 Scull2a495c22018-08-12 23:07:30 +010044
45.PHONY: check
Andrew Scull58de5c32018-08-15 17:20:02 +010046check: $(OUT_DIR)/build.ninja
47 @$(NINJA) -C $(OUT_DIR)
Andrew Scull2a495c22018-08-12 23:07:30 +010048 @echo "Checking..."
Andrew Sculle9827712018-10-19 14:54:20 +010049 @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 Scull18834872018-10-12 11:48:09 +010051
52.PHONY: license
53license:
Andrew Scull4c86ff52018-10-29 11:22:28 +000054 @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 Sculle9827712018-10-19 14:54:20 +010057 @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