Add script to build the ART Module prebuilts.
Test: art/build/build-art-module.sh on master and master-art
Bug: 172480615
Change-Id: I3632e54adec2db851bd8280221cc1ae60df6c8e8
diff --git a/build/build-art-module.sh b/build/build-art-module.sh
new file mode 100755
index 0000000..2f546ec
--- /dev/null
+++ b/build/build-art-module.sh
@@ -0,0 +1,73 @@
+#!/bin/bash -e
+
+# This script builds the APEX modules, SDKs and module exports that the ART
+# Module provides.
+
+MAINLINE_MODULES=(
+ com.android.art
+ com.android.art.debug
+)
+
+# The products to build MAINLINE_MODULES for, same as in
+# build/soong/scripts/build-mainline-modules.sh.
+PRODUCTS=(
+ aosp_arm
+ aosp_arm64
+ aosp_x86
+ aosp_x86_64
+)
+
+MODULES_SDK_AND_EXPORTS=(
+ art-module-sdk
+ art-module-host-exports
+ art-module-test-exports
+)
+
+# MAINLINE_MODULE_PRODUCTS can be used to override the list of products.
+if [ -n "${MAINLINE_MODULE_PRODUCTS}" ]; then
+ read -r -a PRODUCTS <<< "${MAINLINE_MODULE_PRODUCTS}"
+fi
+
+if [ ! -e build/make/core/Makefile ]; then
+ echo "$0 must be run from the top of the tree"
+ exit 1
+fi
+
+echo_and_run() {
+ echo "$*"
+ "$@"
+}
+
+export OUT_DIR=${OUT_DIR:-out}
+export DIST_DIR=${DIST_DIR:-${OUT_DIR}/dist}
+
+if [ ! -d frameworks/base ]; then
+ # Configure the build system for the reduced manifest branch.
+ build_args="SOONG_ALLOW_MISSING_DEPENDENCIES=true"
+ build_args="$build_args TARGET_BUILD_UNBUNDLED=true"
+fi
+
+for product in ${PRODUCTS[*]}; do
+ echo_and_run build/soong/soong_ui.bash --make-mode $build_args \
+ TARGET_PRODUCT=${product} ${MAINLINE_MODULES[*]}
+
+ eval $(TARGET_PRODUCT=${product} build/soong/soong_ui.bash --dumpvars-mode \
+ --vars="PRODUCT_OUT TARGET_ARCH")
+
+ mkdir -p ${DIST_DIR}/${TARGET_ARCH}
+ for module in ${MAINLINE_MODULES[*]}; do
+ echo_and_run cp ${PRODUCT_OUT}/system/apex/${module}.apex \
+ ${DIST_DIR}/${TARGET_ARCH}/
+ done
+done
+
+# Create multi-archs SDKs in a different out directory. The multi-arch script
+# uses Soong in --skip-make mode which cannot use the same directory as normal
+# mode with make.
+export OUT_DIR=${OUT_DIR}/aml
+
+echo_and_run build/soong/scripts/build-aml-prebuilts.sh $build_args \
+ ${MODULES_SDK_AND_EXPORTS[*]}
+
+rm -rf ${DIST_DIR}/mainline-sdks
+echo_and_run cp -r ${OUT_DIR}/soong/mainline-sdks ${DIST_DIR}