Metadata-Version: 2.1
Name: kati
Version: 0.0.20250520
Summary: An experimental GNU make clone
Keywords: xmake
Author-Email: Delilah Hoare <delilah@dhoare.me>, Koichi Shiraishi <zchee.io@gmail.com>, Kouhei Sutou <kou@cozmixng.org>, Po Hu <hupo1985@gmail.com>
License: Apache-2.0
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Build Tools
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX
Classifier: Operating System :: Unix
Classifier: Operating System :: MacOS
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Project-URL: Homepage, https://github.com/google/kati/
Project-URL: Download, https://github.com/google/kati/releases
Project-URL: Bug Report, https://github.com/google/kati/issues
Project-URL: Source, https://github.com/google/kati
Description-Content-Type: text/markdown

# kati

[![Build and Test](https://github.com/google/kati/workflows/Build%20and%20Test/badge.svg)](https://github.com/google/kati/actions)

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.

## Development

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
```

## How to use for Android

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.
