Reduce the number of Soong invocations, and various other minor script fixes.
- We can pass all targets at once to build-aml-prebuilts.sh.
- Less noise from build-mainline-modules.sh.
- Default to the same out directory in both build scripts.
- Addressed post-submit comments on https://r.android.com/1170907.
- Various minor cleanups.
// Added for rvc-dev. Used this bug as it is the bug that needs all the build changes.
Bug: 155164730
Test: build/soong/scripts/build-mainline-modules.sh
Merged-In: Id21ef80c2334462836e217032fc5bf63b7cd04e1
Change-Id: Id21ef80c2334462836e217032fc5bf63b7cd04e1
(cherry picked from commit 691503ea0b
)
This commit is contained in:
parent
168ea3d4e1
commit
f39ef8aa10
2 changed files with 58 additions and 33 deletions
|
@ -1,5 +1,15 @@
|
|||
#!/bin/bash -e
|
||||
|
||||
# This is a wrapper around "m" that builds the given modules in multi-arch mode
|
||||
# for all architectures supported by Mainline modules. The make (kati) stage is
|
||||
# skipped, so the build targets in the arguments can only be Soong modules or
|
||||
# intermediate output files - make targets and normal installed paths are not
|
||||
# supported.
|
||||
#
|
||||
# This script is typically used with "sdk" or "module_export" modules, which
|
||||
# Soong will install in $OUT_DIR/soong/mainline-sdks (cf
|
||||
# PathForMainlineSdksInstall in android/paths.go).
|
||||
|
||||
export OUT_DIR=${OUT_DIR:-out}
|
||||
|
||||
if [ -e ${OUT_DIR}/soong/.soong.in_make ]; then
|
||||
|
@ -8,11 +18,16 @@ if [ -e ${OUT_DIR}/soong/.soong.in_make ]; then
|
|||
# expected to be supplied by the .mk files, and that might cause errors in
|
||||
# "m --skip-make" below. We therefore default to a different out dir
|
||||
# location in that case.
|
||||
AML_OUT_DIR=out-aml
|
||||
AML_OUT_DIR=out/aml
|
||||
echo "Avoiding in-make OUT_DIR '${OUT_DIR}' - building in '${AML_OUT_DIR}' instead"
|
||||
OUT_DIR=${AML_OUT_DIR}
|
||||
fi
|
||||
|
||||
if [ ! -e "build/envsetup.sh" ]; then
|
||||
echo "$0 must be run from the top of the tree"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
source build/envsetup.sh
|
||||
|
||||
my_get_build_var() {
|
||||
|
@ -22,13 +37,13 @@ my_get_build_var() {
|
|||
OUT_DIR=${OUT_DIR}/get_build_var get_build_var "$@"
|
||||
}
|
||||
|
||||
PLATFORM_SDK_VERSION=$(my_get_build_var PLATFORM_SDK_VERSION)
|
||||
PLATFORM_VERSION=$(my_get_build_var PLATFORM_VERSION)
|
||||
PLATFORM_VERSION_ALL_CODENAMES=$(my_get_build_var PLATFORM_VERSION_ALL_CODENAMES)
|
||||
readonly PLATFORM_SDK_VERSION="$(my_get_build_var PLATFORM_SDK_VERSION)"
|
||||
readonly PLATFORM_VERSION="$(my_get_build_var PLATFORM_VERSION)"
|
||||
PLATFORM_VERSION_ALL_CODENAMES="$(my_get_build_var PLATFORM_VERSION_ALL_CODENAMES)"
|
||||
|
||||
# PLATFORM_VERSION_ALL_CODENAMES is a comma separated list like O,P. We need to
|
||||
# turn this into ["O","P"].
|
||||
PLATFORM_VERSION_ALL_CODENAMES=${PLATFORM_VERSION_ALL_CODENAMES/,/'","'}
|
||||
PLATFORM_VERSION_ALL_CODENAMES="${PLATFORM_VERSION_ALL_CODENAMES/,/'","'}"
|
||||
PLATFORM_VERSION_ALL_CODENAMES="[\"${PLATFORM_VERSION_ALL_CODENAMES}\"]"
|
||||
|
||||
# Logic from build/make/core/goma.mk
|
||||
|
@ -46,11 +61,16 @@ else
|
|||
USE_GOMA=false
|
||||
fi
|
||||
|
||||
SOONG_OUT=${OUT_DIR}/soong
|
||||
readonly SOONG_OUT=${OUT_DIR}/soong
|
||||
mkdir -p ${SOONG_OUT}
|
||||
SOONG_VARS=${SOONG_OUT}/soong.variables
|
||||
readonly SOONG_VARS=${SOONG_OUT}/soong.variables
|
||||
|
||||
# We enable bionic linux builds as ART also needs prebuilts for it.
|
||||
# Aml_abis: true
|
||||
# - This flag configures Soong to compile for all architectures required for
|
||||
# Mainline modules.
|
||||
# CrossHost: linux_bionic
|
||||
# CrossHostArch: x86_64
|
||||
# - Enable Bionic on host as ART needs prebuilts for it.
|
||||
cat > ${SOONG_VARS}.new << EOF
|
||||
{
|
||||
"Platform_sdk_version": ${PLATFORM_SDK_VERSION},
|
||||
|
@ -79,4 +99,6 @@ fi
|
|||
# We use force building LLVM components flag (even though we actually don't
|
||||
# compile them) because we don't have bionic host prebuilts
|
||||
# for them.
|
||||
FORCE_BUILD_LLVM_COMPONENTS=true m --skip-make "$@"
|
||||
export FORCE_BUILD_LLVM_COMPONENTS=true
|
||||
|
||||
m --skip-make "$@"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#!/bin/bash -ex
|
||||
#!/bin/bash -e
|
||||
|
||||
# Non exhaustive list of modules where we want prebuilts. More can be added as
|
||||
# needed.
|
||||
|
@ -22,42 +22,45 @@ MODULES_SDK_AND_EXPORTS=(
|
|||
|
||||
# We want to create apex modules for all supported architectures.
|
||||
PRODUCTS=(
|
||||
aosp_arm
|
||||
aosp_arm64
|
||||
aosp_x86
|
||||
aosp_x86_64
|
||||
aosp_arm
|
||||
aosp_arm64
|
||||
aosp_x86
|
||||
aosp_x86_64
|
||||
)
|
||||
|
||||
if [ ! -e "build/make/core/Makefile" ]; then
|
||||
echo "$0 must be run from the top of the tree"
|
||||
exit 1
|
||||
echo "$0 must be run from the top of the tree"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo_and_run() {
|
||||
echo "$*"
|
||||
"$@"
|
||||
}
|
||||
|
||||
OUT_DIR=$(source build/envsetup.sh > /dev/null; TARGET_PRODUCT= get_build_var OUT_DIR)
|
||||
DIST_DIR=$(source build/envsetup.sh > /dev/null; TARGET_PRODUCT= get_build_var DIST_DIR)
|
||||
|
||||
for product in "${PRODUCTS[@]}"; do
|
||||
build/soong/soong_ui.bash --make-mode $@ \
|
||||
TARGET_PRODUCT=${product} \
|
||||
${MAINLINE_MODULES[@]}
|
||||
echo_and_run build/soong/soong_ui.bash --make-mode $@ \
|
||||
TARGET_PRODUCT=${product} \
|
||||
${MAINLINE_MODULES[@]}
|
||||
|
||||
PRODUCT_OUT=$(source build/envsetup.sh > /dev/null; TARGET_PRODUCT=${product} get_build_var PRODUCT_OUT)
|
||||
TARGET_ARCH=$(source build/envsetup.sh > /dev/null; TARGET_PRODUCT=${product} get_build_var TARGET_ARCH)
|
||||
rm -rf ${DIST_DIR}/${TARGET_ARCH}/
|
||||
mkdir -p ${DIST_DIR}/${TARGET_ARCH}/
|
||||
for module in "${MAINLINE_MODULES[@]}"; do
|
||||
cp ${PWD}/${PRODUCT_OUT}/system/apex/${module}.apex ${DIST_DIR}/${TARGET_ARCH}/
|
||||
done
|
||||
PRODUCT_OUT=$(source build/envsetup.sh > /dev/null; TARGET_PRODUCT=${product} get_build_var PRODUCT_OUT)
|
||||
TARGET_ARCH=$(source build/envsetup.sh > /dev/null; TARGET_PRODUCT=${product} get_build_var TARGET_ARCH)
|
||||
rm -rf ${DIST_DIR}/${TARGET_ARCH}/
|
||||
mkdir -p ${DIST_DIR}/${TARGET_ARCH}/
|
||||
for module in "${MAINLINE_MODULES[@]}"; do
|
||||
echo_and_run cp ${PWD}/${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 directly and therefore needs its own directory that doesn't clash
|
||||
# with make.
|
||||
export OUT_DIR=${OUT_DIR}/aml/
|
||||
for sdk in "${MODULES_SDK_AND_EXPORTS[@]}"; do
|
||||
build/soong/scripts/build-aml-prebuilts.sh ${sdk}
|
||||
done
|
||||
# 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 ${MODULES_SDK_AND_EXPORTS[@]}
|
||||
|
||||
rm -rf ${DIST_DIR}/mainline-sdks
|
||||
cp -R ${OUT_DIR}/soong/mainline-sdks ${DIST_DIR}
|
||||
echo_and_run cp -R ${OUT_DIR}/soong/mainline-sdks ${DIST_DIR}
|
||||
|
|
Loading…
Reference in a new issue