blob: 6db870f5aba402ff4edcf5159b155882c3671275 [file] [log] [blame]
Martin Stjernholm691503e2020-05-06 22:03:26 +01001#!/bin/bash -e
Nicolas Geoffray90bc3cd2020-02-28 09:04:25 +00002
3# Non exhaustive list of modules where we want prebuilts. More can be added as
4# needed.
5MAINLINE_MODULES=(
Martin Stjernholm7f511072020-10-12 15:10:36 +01006 com.android.art
Nicolas Geoffray90bc3cd2020-02-28 09:04:25 +00007 com.android.art.debug
Nicolas Geoffray90bc3cd2020-02-28 09:04:25 +00008 com.android.art.testing
9 com.android.conscrypt
Martin Stjernholm7f511072020-10-12 15:10:36 +010010 com.android.i18n
Nicolas Geoffray90bc3cd2020-02-28 09:04:25 +000011 com.android.runtime
12 com.android.tzdata
Nicolas Geoffray90bc3cd2020-02-28 09:04:25 +000013)
14
15# List of SDKs and module exports we know of.
16MODULES_SDK_AND_EXPORTS=(
17 art-module-sdk
18 art-module-test-exports
Martin Stjernholm4c13f582020-11-11 12:49:03 +000019 conscrypt-module-host-exports
Nicolas Geoffray90bc3cd2020-02-28 09:04:25 +000020 conscrypt-module-sdk
21 conscrypt-module-test-exports
Martin Stjernholm4c13f582020-11-11 12:49:03 +000022 i18n-module-host-exports
Nicolas Geoffray7505c502020-06-18 15:33:18 +010023 i18n-module-sdk
Martin Stjernholm4c13f582020-11-11 12:49:03 +000024 i18n-module-test-exports
Nicolas Geoffray792ea732020-06-26 14:44:32 +010025 platform-mainline-sdk
Nicolas Geoffrayb0df23f2020-08-05 15:56:09 +010026 platform-mainline-test-exports
Martin Stjernholm4c13f582020-11-11 12:49:03 +000027 runtime-module-host-exports
28 runtime-module-sdk
Nicolas Geoffray792ea732020-06-26 14:44:32 +010029)
30
31# List of libraries installed on the platform that are needed for ART chroot
32# testing.
33PLATFORM_LIBRARIES=(
34 liblog
35 libartpalette-system
Nicolas Geoffray90bc3cd2020-02-28 09:04:25 +000036)
37
38# We want to create apex modules for all supported architectures.
39PRODUCTS=(
Martin Stjernholm691503e2020-05-06 22:03:26 +010040 aosp_arm
41 aosp_arm64
42 aosp_x86
43 aosp_x86_64
Nicolas Geoffray90bc3cd2020-02-28 09:04:25 +000044)
45
46if [ ! -e "build/make/core/Makefile" ]; then
Martin Stjernholm691503e2020-05-06 22:03:26 +010047 echo "$0 must be run from the top of the tree"
48 exit 1
Nicolas Geoffray90bc3cd2020-02-28 09:04:25 +000049fi
50
Martin Stjernholm691503e2020-05-06 22:03:26 +010051echo_and_run() {
52 echo "$*"
53 "$@"
54}
55
Nicolas Geoffrayf23054f2020-07-31 15:36:39 +010056lib_dir() {
57 case $1 in
58 (aosp_arm|aosp_x86) echo "lib";;
59 (aosp_arm64|aosp_x86_64) echo "lib64";;
60 esac
61}
62
Nicolas Geoffray90bc3cd2020-02-28 09:04:25 +000063OUT_DIR=$(source build/envsetup.sh > /dev/null; TARGET_PRODUCT= get_build_var OUT_DIR)
64DIST_DIR=$(source build/envsetup.sh > /dev/null; TARGET_PRODUCT= get_build_var DIST_DIR)
65
66for product in "${PRODUCTS[@]}"; do
Martin Stjernholm691503e2020-05-06 22:03:26 +010067 echo_and_run build/soong/soong_ui.bash --make-mode $@ \
68 TARGET_PRODUCT=${product} \
Nicolas Geoffray792ea732020-06-26 14:44:32 +010069 ${MAINLINE_MODULES[@]} \
70 ${PLATFORM_LIBRARIES[@]}
Nicolas Geoffray90bc3cd2020-02-28 09:04:25 +000071
Martin Stjernholm691503e2020-05-06 22:03:26 +010072 PRODUCT_OUT=$(source build/envsetup.sh > /dev/null; TARGET_PRODUCT=${product} get_build_var PRODUCT_OUT)
73 TARGET_ARCH=$(source build/envsetup.sh > /dev/null; TARGET_PRODUCT=${product} get_build_var TARGET_ARCH)
74 rm -rf ${DIST_DIR}/${TARGET_ARCH}/
75 mkdir -p ${DIST_DIR}/${TARGET_ARCH}/
76 for module in "${MAINLINE_MODULES[@]}"; do
77 echo_and_run cp ${PWD}/${PRODUCT_OUT}/system/apex/${module}.apex ${DIST_DIR}/${TARGET_ARCH}/
78 done
Nicolas Geoffray792ea732020-06-26 14:44:32 +010079 for library in "${PLATFORM_LIBRARIES[@]}"; do
Nicolas Geoffrayf23054f2020-07-31 15:36:39 +010080 libdir=$(lib_dir $product)
81 echo_and_run cp ${PWD}/${PRODUCT_OUT}/system/${libdir}/${library}.so ${DIST_DIR}/${TARGET_ARCH}/
Nicolas Geoffray792ea732020-06-26 14:44:32 +010082 done
Nicolas Geoffray90bc3cd2020-02-28 09:04:25 +000083done
84
Nicolas Geoffray90bc3cd2020-02-28 09:04:25 +000085# Create multi-archs SDKs in a different out directory. The multi-arch script
Martin Stjernholm691503e2020-05-06 22:03:26 +010086# uses Soong in --skip-make mode which cannot use the same directory as normal
87# mode with make.
88export OUT_DIR=${OUT_DIR}/aml
89echo_and_run build/soong/scripts/build-aml-prebuilts.sh ${MODULES_SDK_AND_EXPORTS[@]}
Nicolas Geoffray90bc3cd2020-02-28 09:04:25 +000090
91rm -rf ${DIST_DIR}/mainline-sdks
Martin Stjernholm691503e2020-05-06 22:03:26 +010092echo_and_run cp -R ${OUT_DIR}/soong/mainline-sdks ${DIST_DIR}