blob: 7e3a82c17fdbf3a022182a37e20fc24b7e676d0a [file] [log] [blame]
#!/bin/bash -e
export OUT_DIR=${OUT_DIR:-out}
if [ -e ${OUT_DIR}/soong/.soong.in_make ]; then
# If ${OUT_DIR} has been created without --skip-make, Soong will create an
# ${OUT_DIR}/soong/build.ninja that leaves out many targets which are
# 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
echo "Avoiding in-make OUT_DIR '${OUT_DIR}' - building in '${AML_OUT_DIR}' instead"
OUT_DIR=${AML_OUT_DIR}
fi
source build/envsetup.sh
my_get_build_var() {
# get_build_var will run Soong in normal in-make mode where it creates
# .soong.in_make. That would clobber our real out directory, so we need to
# run it in a different one.
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)
# 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}\"]"
# Logic from build/make/core/goma.mk
if [ "${USE_GOMA}" = true ]; then
if [ -n "${GOMA_DIR}" ]; then
goma_dir="${GOMA_DIR}"
else
goma_dir="${HOME}/goma"
fi
GOMA_CC="${goma_dir}/gomacc"
export CC_WRAPPER="${CC_WRAPPER}${CC_WRAPPER:+ }${GOMA_CC}"
export CXX_WRAPPER="${CXX_WRAPPER}${CXX_WRAPPER:+ }${GOMA_CC}"
export JAVAC_WRAPPER="${JAVAC_WRAPPER}${JAVAC_WRAPPER:+ }${GOMA_CC}"
else
USE_GOMA=false
fi
SOONG_OUT=${OUT_DIR}/soong
mkdir -p ${SOONG_OUT}
SOONG_VARS=${SOONG_OUT}/soong.variables
cat > ${SOONG_VARS}.new << EOF
{
"Platform_sdk_version": ${PLATFORM_SDK_VERSION},
"Platform_sdk_codename": "${PLATFORM_VERSION}",
"Platform_version_active_codenames": ${PLATFORM_VERSION_ALL_CODENAMES},
"DeviceName": "generic_arm64",
"HostArch": "x86_64",
"Aml_abis": true,
"UseGoma": ${USE_GOMA}
}
EOF
if [ -f ${SOONG_VARS} ] && cmp -s ${SOONG_VARS} ${SOONG_VARS}.new; then
# Don't touch soong.variables if we don't have to, to avoid Soong rebuilding
# the ninja file when it isn't necessary.
rm ${SOONG_VARS}.new
else
mv ${SOONG_VARS}.new ${SOONG_VARS}
fi
m --skip-make "$@"