1- .PHONY : generate genversions test e2e e2e-bindercli vet build build-examples lint clean readme smoke \
2- bindercli genbindercli genservicemap genaccessors genparcelspec genparcelgo genconstants list-commands check-generated release
1+ .PHONY : specs generate cli readme test e2e e2e-bindercli vet build lint clean \
2+ bindercli list-commands check-generated release
33
44# Generated top-level directories.
55GENERATED_DIRS := android com fuzztest libgui_test_server parcelables src
66
77# All non-3rdparty Go packages.
88GO_PACKAGES = $(shell go list -e ./... | grep -v /3rdparty/)
99
10- # Regenerate version-aware transaction code tables from AOSP tags.
11- genversions :
12- go run ./tools/cmd/genaidl -3rdparty tools/pkg/3rdparty -output . -codes-output binder/versionaware/codes_gen.go -versions
10+ # --- Spec-first pipeline ---
1311
14- # Generate all Go code from AOSP AIDL definitions.
15- generate :
16- go run ./tools/cmd/genaidl -3rdparty tools/pkg/3rdparty -output . -smoke-tests
12+ # Extract specs from AIDL sources.
13+ specs :
14+ go run ./tools/cmd/aidl2spec -3rdparty tools/pkg/3rdparty -output specs/
15+ go run ./tools/cmd/java2spec -3rdparty tools/pkg/3rdparty -config tools/cmd/java2spec/constants.yaml -output specs/
1716
18- # Run unit tests (compiler + runtime packages).
17+ # Extract specs with multi-version AOSP transaction code tables.
18+ specs-versions :
19+ go run ./tools/cmd/aidl2spec -3rdparty tools/pkg/3rdparty -output specs/ -versions
20+ go run ./tools/cmd/java2spec -3rdparty tools/pkg/3rdparty -config tools/cmd/java2spec/constants.yaml -output specs/
21+
22+ # Generate all Go code from specs.
23+ generate : specs
24+ go run ./tools/cmd/spec2go -specs specs/ -output . -smoke-tests -codes-output binder/versionaware/codes_gen.go
25+
26+ # Generate bindercli commands from specs.
27+ cli : specs
28+ go run ./tools/cmd/spec2cli -specs specs/ -output cmd/bindercli/
29+
30+ # Generate README from specs.
31+ readme : specs
32+ go run ./tools/cmd/spec2readme -specs specs/ -output README.md
33+
34+ # --- Testing ---
35+
36+ # Run unit tests.
1937test :
2038 go test -v -race $(GO_PACKAGES )
2139
2240# Run E2E tests on a connected device via adb.
23- # Cross-compiles the test binary, pushes it, and runs on the device.
24- # bindercli tests are skipped (they require an emulator); on-device tests
25- # open /dev/binder directly.
2641e2e :
2742 GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go test -tags e2e -c -o build/e2e_test ./tests/e2e/
2843 adb push build/e2e_test /data/local/tmp/
2944 adb shell /data/local/tmp/e2e_test -test.v -test.timeout 300s
3045
31- # Run bindercli E2E tests via emulator (starts emulator if needed) .
46+ # Run bindercli E2E tests via emulator.
3247e2e-bindercli :
3348 go test -tags e2e ./tests/e2e/... -run TestBindercli -v -timeout 300s
3449
50+ # --- Build ---
51+
3552# Run go vet on all packages.
3653vet :
3754 go vet $(GO_PACKAGES )
@@ -43,62 +60,21 @@ build:
4360 @for d in cmd/* /; do echo " Building $$ d..." ; go build -o " build/$$ (basename $$ d)" " ./$$ d" ; done
4461 @for d in examples/* /; do echo " Building $$ d..." ; go build -o " build/$$ (basename $$ d)" " ./$$ d" ; done
4562
46- # Build bindercli release binaries for arm64 and amd64 .
63+ # Build bindercli release binaries.
4764release :
4865 @mkdir -p build
4966 CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -o build/bindercli-linux-arm64 ./cmd/bindercli/
5067 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o build/bindercli-linux-amd64 ./cmd/bindercli/
5168
52- # Run linter.
53- lint :
54- golangci-lint run ./...
55-
56- # Regenerate README package table.
57- readme :
58- go run ./tools/cmd/genreadme
59-
60- # Regenerate E2E smoke tests.
61- smoke :
62- go run ./tools/cmd/gen_e2e_smoke .
63-
64- # Generate service name constants and JSON service map from AOSP Java sources.
65- genservicemap :
66- go run ./tools/cmd/genservicemap \
67- -frameworks-base tools/pkg/3rdparty/frameworks-base \
68- -go-constants servicemanager/service_names_gen.go \
69- -output /tmp/servicemap.json
70-
71- # Generate typed service accessor functions from the service map.
72- genaccessors :
73- go run ./tools/cmd/genaccessors \
74- -service-map /tmp/servicemap.json \
75- -output .
76-
77- # Extract Java Parcelable wire formats into YAML specs.
78- genparcelspec :
79- go run ./tools/cmd/genparcelspec \
80- -frameworks-base tools/pkg/3rdparty/frameworks-base \
81- -output parcelspecs/
82-
83- # Generate Go marshal/unmarshal from Parcelable specs.
84- genparcelgo :
85- go run ./tools/cmd/genparcelgo \
86- -specs parcelspecs/ \
87- -output .
88-
89- # Generate typed Go constants from Java source files.
90- genconstants :
91- go run ./tools/cmd/genconstants
92-
93- # Regenerate bindercli registry and command dispatch code.
94- genbindercli :
95- go run ./tools/cmd/genbindercli
96-
9769# Build the bindercli tool.
9870bindercli :
9971 @mkdir -p build
10072 go build -o build/bindercli ./cmd/bindercli
10173
74+ # Run linter.
75+ lint :
76+ golangci-lint run ./...
77+
10278# List all available bindercli subcommands.
10379list-commands :
10480 go run ./cmd/bindercli --help 2>&1 | grep ' ^ ' | awk ' {print $$1}'
@@ -107,17 +83,12 @@ list-commands:
10783check-generated :
10884 make clean
10985 make generate
110- make genparcelspec
111- make genparcelgo
112- make genservicemap
113- make genaccessors
114- make genconstants
115- make smoke
86+ make cli
11687 make readme
11788 git diff --exit-code
11889
119- # Remove all generated code.
90+ # Remove all generated code and specs .
12091clean :
121- rm -rf $(GENERATED_DIRS ) parcelspecs
92+ rm -rf $(GENERATED_DIRS ) specs
12293 find . -maxdepth 1 -name ' *.go' -exec grep -l ' Code generated' {} \; | xargs -r rm -f
12394 rm -f servicemanager/service_names_gen.go
0 commit comments