diff options
author | Andrei Homescu <ahomescu@google.com> | 2023-08-29 00:31:52 +0000 |
---|---|---|
committer | Andrei Homescu <ahomescu@google.com> | 2023-09-08 22:05:27 +0000 |
commit | 6efa80d19c3d9b6c2ccfc5d1a48a5ad68c0e5388 (patch) | |
tree | ab0d4eed8646bfcd4b49dc5cacadc60b62c00006 | |
parent | 29a7aa9ce6af66b947da4423f4f28ad97fbb4037 (diff) | |
download | generic-arm64-6efa80d19c3d9b6c2ccfc5d1a48a5ad68c0e5388.tar.gz |
project/qemu: Use ANDROID_BUILD_TOP for the Android path
The AOSP prebuilts are excluded from the unified manifest.
If building from the same tree as Android, use the build output
from ANDROID_BUILD_TOP instead of the prebuilts.
Bug: 285203365
Test: Build Trusty
Change-Id: I5f3455867d0c9c2078b9f44dbd7370860485dc9b
-rw-r--r-- | project/qemu-inc.mk | 47 |
1 files changed, 37 insertions, 10 deletions
diff --git a/project/qemu-inc.mk b/project/qemu-inc.mk index 1009e19..7141551 100644 --- a/project/qemu-inc.mk +++ b/project/qemu-inc.mk @@ -185,6 +185,14 @@ $(PY3_CMD): $(BUILDTOOLS_BINDIR)/py3-cmd EXTRA_BUILDDEPS += $(PY3_CMD) +# List of files we need from Android +ANDROID_OUT_FILES := \ + out/host/linux-x86/bin/adb \ + out/target/product/trusty/system.img \ + out/target/product/trusty/vendor.img \ + out/target/product/trusty/userdata.img \ + out/target/product/trusty/data/nativetest64 \ + # Copy Android prebuilts into the build directory so that the build does not # depend on any files in the source tree. We want to package the build artifacts # without any dependencies on the sources. @@ -192,14 +200,30 @@ EXTRA_BUILDDEPS += $(PY3_CMD) # be cleared before copying in the fresh content. `rm -rf` is used to accomplish # this because it bypasses writing un-writeable files in addition to bringing # the target directory to the same state as with a clean build. -ANDROID_PREBUILT := $(BUILDDIR)/aosp/android -$(ANDROID_PREBUILT): trusty/prebuilts/aosp/android - @echo copying Android prebuilts +ANDROID_OUT_BUILD_DIR := $(BUILDDIR)/aosp/android + +ifneq (,$(ANDROID_BUILD_TOP)) +# We are building Trusty inside an Android environment, +# which means we can use a fresh Android build instead of prebuilts +ANDROID_OUT_SRC_DIR := $(ANDROID_BUILD_TOP) +else +ANDROID_OUT_SRC_DIR := trusty/prebuilts/aosp/android +endif + +ANDROID_OUT_SRC_FILES := $(addprefix $(ANDROID_OUT_SRC_DIR)/,$(ANDROID_OUT_FILES)) + +# Copy the files listed in ANDROID_OUT_FILES from ANDROID_OUT_SRC_DIR into +# ANDROID_OUT_BUILD_DIR preserving the directory structure relative to the +# top-level ANDROID_OUT_SRC_DIR directory +$(ANDROID_OUT_BUILD_DIR): ANDROID_OUT_SRC_DIR := $(ANDROID_OUT_SRC_DIR) +$(ANDROID_OUT_BUILD_DIR): ANDROID_OUT_FILES := $(ANDROID_OUT_FILES) +$(ANDROID_OUT_BUILD_DIR): $(ANDROID_OUT_SRC_FILES) + @echo creating Android output directory @rm -rf $@ - @$(MKDIR) - @cp -r $< $@ + @mkdir -p $@ + @cd $(ANDROID_OUT_SRC_DIR) && cp -r --parents -t $@ $(ANDROID_OUT_FILES) -EXTRA_BUILDDEPS += $(ANDROID_PREBUILT) +EXTRA_BUILDDEPS += $(ANDROID_OUT_BUILD_DIR) # Save variables to a json file to export paths known to the build system to # the test system @@ -208,7 +232,7 @@ $(QEMU_CONFIG): EXTRA_QEMU_FLAGS := ["-machine", "gic-version=$(GIC_VERSION)"] $(QEMU_CONFIG): ATF_OUT_DIR := $(subst $(BUILDDIR)/,,$(ATF_OUT_DIR)) $(QEMU_CONFIG): LINUX_BUILD_DIR := $(subst $(BUILDDIR)/,,$(LINUX_BUILD_DIR)) $(QEMU_CONFIG): LINUX_ARCH := $(LINUX_ARCH) -$(QEMU_CONFIG): ANDROID_PREBUILT := $(subst $(BUILDDIR)/,,$(ANDROID_PREBUILT)) +$(QEMU_CONFIG): ANDROID_OUT_BUILD_DIR := $(subst $(BUILDDIR)/,,$(ANDROID_OUT_BUILD_DIR)) $(QEMU_CONFIG): RPMB_DEV := $(subst $(BUILDDIR)/,,$(RPMB_DEV)) $(QEMU_CONFIG): $(ATF_OUT_COPIED_FILES) $(ATF_SYMLINKS) $(ATF_OUT_DIR)/RPMB_DATA @echo generating $@ @@ -217,7 +241,7 @@ $(QEMU_CONFIG): $(ATF_OUT_COPIED_FILES) $(ATF_SYMLINKS) $(ATF_OUT_DIR)/RPMB_DATA @echo ' "atf": "$(ATF_OUT_DIR)", ' >> $@ @echo ' "qemu": "$(QEMU_BIN)", ' >> $@ @echo ' "extra_qemu_flags": $(EXTRA_QEMU_FLAGS), ' >> $@ - @echo ' "android": "$(ANDROID_PREBUILT)", ' >> $@ + @echo ' "android": "$(ANDROID_OUT_BUILD_DIR)", ' >> $@ @echo ' "rpmbd": "$(RPMB_DEV)", ' >> $@ @echo ' "arch": "$(ARCH)" }' >> $@ @@ -260,7 +284,7 @@ ifeq (true,$(call TOBOOL,$(PACKAGE_QEMU_TRUSTY))) # Files & directories to copy into QEMU package archive QEMU_PACKAGE_FILES := \ $(OUTBIN) $(QEMU_SCRIPTS) $(PY3_CMD) $(QEMU_CONFIG) $(RPMB_DEV) \ - $(RUN_SCRIPT) $(RUN_QEMU_SCRIPT) $(STOP_SCRIPT) $(ANDROID_PREBUILT) \ + $(RUN_SCRIPT) $(RUN_QEMU_SCRIPT) $(STOP_SCRIPT) $(ANDROID_OUT_BUILD_DIR) \ $(QEMU_BIN) $(ATF_SYMLINKS) $(ATF_OUT_DIR)/bl31.bin \ $(ATF_OUT_DIR)/RPMB_DATA $(ATF_OUT_COPIED_FILES) $(LINUX_IMAGE) \ @@ -274,7 +298,10 @@ QEMU_PACKAGE_EXTRA_FILES := \ include project/qemu-package-inc.mk endif -ANDROID_PREBUILT := +ANDROID_OUT_FILES := +ANDROID_OUT_BUILD_DIR := +ANDROID_OUT_SRC_DIR := +ANDROID_OUT_SRC_FILES := ATF_BUILD_BASE := ATF_OUT_COPIED_FILES := ATF_OUT_DIR := |