commit | 0632049086037a1c3225c5e006e05339e5f0d2b4 | [log] [tgz] |
---|---|---|
author | Cole Faust <[email protected]> | Wed Oct 27 16:01:42 2021 -0700 |
committer | Joe Onorato <[email protected]> | Wed Oct 27 16:40:43 2021 -0700 |
tree | 2365474e84f45c8921166cc104fcd312cda4e3e7 | |
parent | 57e1bfcaded27f9badd430a8e66585b613f199e4 [diff] |
Fix crash when using --empty_ninja_file This bug was introduced in commit bca0a69ffd7045e33bd2e42e795cc0ade6f81c69. EmitNode() used to always be called, but after that commit, EmitNode() is no longer called when using --empty_ninja_file. EmitNode() has the side effect of setting default_target_, which was then needed later on. However it turns out that default_target_ is not actually needed when using --empty_ninja_file, so moving the code that uses it into the check that that flag is not provided fixes the issue.
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.