commit | 8b60db29a0be7f727d85f315e45c50b467bd0d35 | [log] [tgz] |
---|---|---|
author | Zi Wang <mrziwang@google.com> | Wed Apr 17 15:27:42 2024 -0700 |
committer | Cole Faust <colecfaust@gmail.com> | Tue Apr 30 09:58:52 2024 -0700 |
tree | c004a87a6ffda4fa32750fbbdc25a7678e1757d8 | |
parent | 2c503b6caf952882ea309ed056962769df0e6d3a [diff] |
Add func KATI_visibility_prefix syntax: $(KATI_visibility_prefix var, prefix) 1, Add a func KATI_visibility_prefix that takes a variable name and a list of strings, set this variable's visibility to these strings. Each string represents the relative path from the root, and is considered as prefix. e.g. $(KATI_visibility_prefix VAR, vendor/ device/b baz.mk) --> VAR is visible to "vendor/foo.mk", "device/bar.mk", "device/baz.mk", "baz.mk", but not visible to "bar.mk", "vendor.mk" or "vendor/baz.mk". If variable visibility is set more than once, and with a different list of strings, an error will occur. 2. When a variable is being referenced, if this variable has visibility prefix set, check if the current referencing file matches the visibility prefix. Throw an error if not. 3. In $(KATI_visibility_prefix FOO, prefix) If FOO is not defined, create a variable FOO with empty value. The prefix can also be reference to variable. If so, this function will expand the reference and set the visibility_prefix.
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 22.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.