Invoke soong_docs from the bootstrap Ninja file.
This makes soong_ui the only place where soong_build is invoked, thus
greatly simplifying the conceptual model of the build.
It comes with the slight limitation that now soong_docs (and queryview
and the JSON module graph) are not Make targets anymore, but I suppose
that's an acceptable loss.
The only place where someone depended on soong_docs from a Makefile is
removed in a separate change.
Test: Presubmits.
Change-Id: I3f9ac327725c15d84de725d05e3cdde1da3dcbe2
diff --git a/tests/bootstrap_test.sh b/tests/bootstrap_test.sh
index 95a193a..a22adc5 100755
--- a/tests/bootstrap_test.sh
+++ b/tests/bootstrap_test.sh
@@ -472,17 +472,35 @@
fi
}
-function test_null_build_after_docs {
+function test_soong_docs_smoke() {
setup
- run_soong
- local mtime1=$(stat -c "%y" out/soong/build.ninja)
- prebuilts/build-tools/linux-x86/bin/ninja -f out/combined.ninja soong_docs
+ run_soong soong_docs
+
+ [[ -e "out/soong/docs/soong_build.html" ]] || fail "Documentation for main page not created"
+ [[ -e "out/soong/docs/cc.html" ]] || fail "Documentation for C++ modules not created"
+}
+
+function test_null_build_after_soong_docs() {
+ setup
run_soong
- local mtime2=$(stat -c "%y" out/soong/build.ninja)
+ local ninja_mtime1=$(stat -c "%y" out/soong/build.ninja)
- if [[ "$mtime1" != "$mtime2" ]]; then
+ run_soong soong_docs
+ local docs_mtime1=$(stat -c "%y" out/soong/docs/soong_build.html)
+
+ run_soong soong_docs
+ local docs_mtime2=$(stat -c "%y" out/soong/docs/soong_build.html)
+
+ if [[ "$docs_mtime1" != "$docs_mtime2" ]]; then
+ fail "Output Ninja file changed on null build"
+ fi
+
+ run_soong
+ local ninja_mtime2=$(stat -c "%y" out/soong/build.ninja)
+
+ if [[ "$ninja_mtime1" != "$ninja_mtime2" ]]; then
fail "Output Ninja file changed on null build"
fi
}
@@ -809,7 +827,8 @@
test_smoke
test_null_build
-test_null_build_after_docs
+test_soong_docs_smoke
+test_null_build_after_soong_docs
test_soong_build_rebuilt_if_blueprint_changes
test_glob_noop_incremental
test_add_file_to_glob