| # We need to rebootstrap soong if SOONG_OUT_DIR or the reverse path from |
| # SOONG_OUT_DIR to TOP changes |
| SOONG_NEEDS_REBOOTSTRAP := |
| ifneq ($(wildcard $(SOONG_BOOTSTRAP)),) |
| ifneq ($(SOONG_OUT_DIR),$(strip $(shell source $(SOONG_BOOTSTRAP); echo $$BUILDDIR))) |
| SOONG_NEEDS_REBOOTSTRAP := FORCE |
| $(warning soong_out_dir changed) |
| endif |
| ifneq ($(strip $(shell build/soong/scripts/reverse_path.py $(SOONG_OUT_DIR))),$(strip $(shell source $(SOONG_BOOTSTRAP); echo $$SRCDIR_FROM_BUILDDIR))) |
| SOONG_NEEDS_REBOOTSTRAP := FORCE |
| $(warning reverse path changed) |
| endif |
| endif |
| |
| # Bootstrap soong. |
| $(SOONG_BOOTSTRAP): bootstrap.bash $(SOONG_NEEDS_REBOOTSTRAP) |
| $(hide) mkdir -p $(dir $@) |
| $(hide) BUILDDIR=$(SOONG_OUT_DIR) ./bootstrap.bash |
| |
| # Tell soong that it is embedded in make |
| $(SOONG_IN_MAKE): |
| $(hide) mkdir -p $(dir $@) |
| $(hide) touch $@ |
| |
| # Run Soong, this implicitly create an Android.mk listing all soong outputs as |
| # prebuilts. |
| .PHONY: run_soong |
| run_soong: $(SOONG_BOOTSTRAP) $(SOONG_VARIABLES) $(SOONG_IN_MAKE) FORCE |
| $(hide) SKIP_NINJA=true $(SOONG) |