blob: c7baca70dc4eb62bc5eef2f4baae8d6785fd5723 [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=(
6 com.android.art.debug
7 com.android.art.release
8 com.android.art.testing
9 com.android.conscrypt
10 com.android.runtime
11 com.android.tzdata
12 com.android.i18n
13)
14
15# List of SDKs and module exports we know of.
16MODULES_SDK_AND_EXPORTS=(
17 art-module-sdk
18 art-module-test-exports
19 conscrypt-module-sdk
20 conscrypt-module-test-exports
Nicolas Geoffray0a2e2972020-04-23 09:35:45 +010021 conscrypt-module-host-exports
Martin Stjernholm6ee5f752020-05-12 00:23:22 +010022 runtime-module-sdk
Martin Stjernholm68b0c7a2020-06-11 15:48:13 +010023 runtime-module-host-exports
Nicolas Geoffray7505c502020-06-18 15:33:18 +010024 i18n-module-test-exports
25 i18n-module-sdk
Nicolas Geoffray792ea732020-06-26 14:44:32 +010026 platform-mainline-sdk
27)
28
29# List of libraries installed on the platform that are needed for ART chroot
30# testing.
31PLATFORM_LIBRARIES=(
32 liblog
33 libartpalette-system
Nicolas Geoffray90bc3cd2020-02-28 09:04:25 +000034)
35
36# We want to create apex modules for all supported architectures.
37PRODUCTS=(
Martin Stjernholm691503e2020-05-06 22:03:26 +010038 aosp_arm
39 aosp_arm64
40 aosp_x86
41 aosp_x86_64
Nicolas Geoffray90bc3cd2020-02-28 09:04:25 +000042)
43
44if [ ! -e "build/make/core/Makefile" ]; then
Martin Stjernholm691503e2020-05-06 22:03:26 +010045 echo "$0 must be run from the top of the tree"
46 exit 1
Nicolas Geoffray90bc3cd2020-02-28 09:04:25 +000047fi
48
Martin Stjernholm691503e2020-05-06 22:03:26 +010049echo_and_run() {
50 echo "$*"
51 "$@"
52}
53
Nicolas Geoffrayf23054f2020-07-31 15:36:39 +010054lib_dir() {
55 case $1 in
56 (aosp_arm|aosp_x86) echo "lib";;
57 (aosp_arm64|aosp_x86_64) echo "lib64";;
58 esac
59}
60
Nicolas Geoffray90bc3cd2020-02-28 09:04:25 +000061OUT_DIR=$(source build/envsetup.sh > /dev/null; TARGET_PRODUCT= get_build_var OUT_DIR)
62DIST_DIR=$(source build/envsetup.sh > /dev/null; TARGET_PRODUCT= get_build_var DIST_DIR)
63
64for product in "${PRODUCTS[@]}"; do
Martin Stjernholm691503e2020-05-06 22:03:26 +010065 echo_and_run build/soong/soong_ui.bash --make-mode $@ \
66 TARGET_PRODUCT=${product} \
Nicolas Geoffray792ea732020-06-26 14:44:32 +010067 ${MAINLINE_MODULES[@]} \
68 ${PLATFORM_LIBRARIES[@]}
Nicolas Geoffray90bc3cd2020-02-28 09:04:25 +000069
Martin Stjernholm691503e2020-05-06 22:03:26 +010070 PRODUCT_OUT=$(source build/envsetup.sh > /dev/null; TARGET_PRODUCT=${product} get_build_var PRODUCT_OUT)
71 TARGET_ARCH=$(source build/envsetup.sh > /dev/null; TARGET_PRODUCT=${product} get_build_var TARGET_ARCH)
72 rm -rf ${DIST_DIR}/${TARGET_ARCH}/
73 mkdir -p ${DIST_DIR}/${TARGET_ARCH}/
74 for module in "${MAINLINE_MODULES[@]}"; do
75 echo_and_run cp ${PWD}/${PRODUCT_OUT}/system/apex/${module}.apex ${DIST_DIR}/${TARGET_ARCH}/
76 done
Nicolas Geoffray792ea732020-06-26 14:44:32 +010077 for library in "${PLATFORM_LIBRARIES[@]}"; do
Nicolas Geoffrayf23054f2020-07-31 15:36:39 +010078 libdir=$(lib_dir $product)
79 echo_and_run cp ${PWD}/${PRODUCT_OUT}/system/${libdir}/${library}.so ${DIST_DIR}/${TARGET_ARCH}/
Nicolas Geoffray792ea732020-06-26 14:44:32 +010080 done
Nicolas Geoffray90bc3cd2020-02-28 09:04:25 +000081done
82
Nicolas Geoffray90bc3cd2020-02-28 09:04:25 +000083# Create multi-archs SDKs in a different out directory. The multi-arch script
Martin Stjernholm691503e2020-05-06 22:03:26 +010084# uses Soong in --skip-make mode which cannot use the same directory as normal
85# mode with make.
86export OUT_DIR=${OUT_DIR}/aml
87echo_and_run build/soong/scripts/build-aml-prebuilts.sh ${MODULES_SDK_AND_EXPORTS[@]}
Nicolas Geoffray90bc3cd2020-02-28 09:04:25 +000088
89rm -rf ${DIST_DIR}/mainline-sdks
Martin Stjernholm691503e2020-05-06 22:03:26 +010090echo_and_run cp -R ${OUT_DIR}/soong/mainline-sdks ${DIST_DIR}