commit | 9a4a3fef9624d9b91139705c1726f39e4ac97c96 | [log] [tgz] |
---|---|---|
author | Cole Faust <[email protected]> | Mon Oct 25 15:45:53 2021 -0700 |
committer | Cole Faust <[email protected]> | Mon Oct 25 15:45:53 2021 -0700 |
tree | 63f332e8e425bc09bf36a10daa61c5828b580424 | |
parent | 01fbbfb4a192c0d80b62c8d859a4320f411d4455 [diff] | |
parent | 57e1bfcaded27f9badd430a8e66585b613f199e4 [diff] |
Merge remote-tracking branch 'aosp/upstream' into updatekati2 * aosp/upstream: func: Add support for .SHELLSTATUS Write top-level targets to the Ninja file in the alphabetical order fileutil: improve cache handling of file globs Ninja: use structured bindings for readability NinjaGenerator: constructor: make use of initializer list fileutil: simplify the interface of GetExecutablePath() Ninja: retire 'using namespace std' Ninja: clarify how DepNodes are passed and owned Exec: do not heap allocate the Executor CommandEvaluator: reduce needless allocations and clarify interface Ninja: reduce needless heap allocations Parser: drop manual initialization of directive maps symtab: remove unnecessary explicit initialization func: make FuncInfo lookup map a static constant dep: remove manual resource management from g_dep_node_pool dep: fix string::find invocations on single character strings regen_dump: avoid unnecessary copies symtab: JoinSymbols: reserve intermediate vector size ScopedFrame: remove problematic move constructor expr: JoinValues: reserve intermediate vector size Remove threadpool implementation MakefileCacheManager: Avoid global initialization race MakefileCacheManager: avoid heap allocations main: allocate the evaluator on the stack Change-Id: Ifd471df9802a334cce0185ed597bec0758520f56
kati is an experimental GNU make clone. The main goal of this tool is to speed-up incremental build of Android.
Currently, kati does not offer a faster build by itself. It instead converts your Makefile to a ninja file.
Building:
$ make ckati
The above command produces a ckati
binary in the project root.
Testing (best ran in a Ubuntu 20.04 environment):
$ make test $ go test --ckati $ go test --ckati --ninja $ go test --ckati --ninja --all
The above commands run all cKati and Ninja tests in the testcases/
directory.
Alternatively, you can also run the tests in a Docker container in a prepared test enviroment:
$ docker build -t kati-test . && docker run kati-test
If you are working on a machine that does not provide make
in the same version as kati is currently compatible with, you might want to download a prebuilt version instead. For example to use the prebuilt version of Ubuntu 20.04 LTS:
$ mkdir tmp/ && cd tmp/ $ wget http://mirrors.kernel.org/ubuntu/pool/main/m/make-dfsg/make_4.2.1-1.2_amd64.deb $ ar xv make_4.2.1-1.2_amd64.deb $ tar xf data.tar.xz $ cd .. $ PATH=$(pwd)/tmp/usr/bin/:$PATH make test
For Android-N+, ckati and ninja is used automatically. There is a prebuilt checked in under prebuilts/build-tools that is used.
All Android's build commands (m, mmm, mmma, etc.) should just work.