diff options
author | Jingwen Chen <jingwen@google.com> | 2020-10-29 03:53:51 -0400 |
---|---|---|
committer | Jingwen Chen <jingwen@google.com> | 2020-11-02 01:44:56 -0500 |
commit | fdffb3bc883ffe829c7b2bb95249390a6f310366 (patch) | |
tree | ee05c5b0c0d32375a299aeaed0a15305b79e89f6 /docs | |
parent | 00d545a84d2d7e7fec1ba211a3090f9e7dc89d18 (diff) | |
download | bazel-fdffb3bc883ffe829c7b2bb95249390a6f310366.tar.gz |
Add concepts.md with a basic table mapping concepts between build systems.
Test: N/A
Signed-off-by: Jingwen Chen <jingwen@google.com>
Change-Id: If16164a5790d38a9b27b94db99e55a306b6ea263
Diffstat (limited to 'docs')
-rw-r--r-- | docs/concepts.md | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/docs/concepts.md b/docs/concepts.md new file mode 100644 index 00000000..851d0100 --- /dev/null +++ b/docs/concepts.md @@ -0,0 +1,17 @@ +# Android Build System Concepts + +This document provides high level explanations and mapping of the build system +concepts in the current Android build system and Bazel. + +## High level components + +|Android build system component|Description|Mapping to Bazel concepts| +|---|---|---| +|Blueprint|Build definition syntax. Build syntax parser. Internal data structures like Modules/Variations/Context/Scope. Ninja file generator.|Starlark.| +|Kati|Make-compatible front-end. Encodes build logic in `.mk` scripts. Declares buildable units in `Android.mk`. Generates Ninja file directly.|Loading and analysis phase. Conceptually similar to `bazel build --nobuild`.| +|Soong|Bazel-like front-end. Encodes build logic in Go. Declares build units in `Android.bp`, parsed by Blueprint. Uses Blueprint to generate Ninja file. Generates a `.mk` file with prebuilt module stubs to Kati.|Loading and analysis phase. Conceptually similar to `bazel build --nobuild command`.| +|Ninja|Serialized command line action graph executor. Executes Ninja graph generated from Kati and Soong.|Bazel's execution phase.| +|atest|Test executor and orchestrator.|Conceptually similar to `bazel test` command.| +|Blueprint + Kati + Soong + Ninja + atest|The entire build pipeline for Android.|Conceptually similar to `bazel build` or `bazel test` commands.| +|`<script>.sh`|Running arbitrary scripts in AOSP.|Conceptually similar to `bazel run` command.| +|Make (replaced in-place by Kati)|No longer in use. Entire build system, replaced by the tools above.|Loading, analysis, execution phases. Conceptually similar to `bazel build` command.| |