aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorJingwen Chen <jingwen@google.com>2020-10-29 03:53:51 -0400
committerJingwen Chen <jingwen@google.com>2020-11-02 01:44:56 -0500
commitfdffb3bc883ffe829c7b2bb95249390a6f310366 (patch)
treeee05c5b0c0d32375a299aeaed0a15305b79e89f6 /docs
parent00d545a84d2d7e7fec1ba211a3090f9e7dc89d18 (diff)
downloadbazel-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.md17
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.|