aboutsummaryrefslogtreecommitdiff
path: root/build-android.sh
diff options
context:
space:
mode:
Diffstat (limited to 'build-android.sh')
-rwxr-xr-xbuild-android.sh156
1 files changed, 156 insertions, 0 deletions
diff --git a/build-android.sh b/build-android.sh
new file mode 100755
index 0000000..adc9685
--- /dev/null
+++ b/build-android.sh
@@ -0,0 +1,156 @@
+#!/usr/bin/env bash
+
+# Copyright (c) 2015, ARM Limited and Contributors. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# Redistributions of source code must retain the above copyright notice, this
+# list of conditions and the following disclaimer.
+#
+# Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+#
+# Neither the name of ARM nor the names of its contributors may be used
+# to endorse or promote products derived from this software without specific
+# prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+
+#
+# This script uses the following environment variables from the variant
+#
+# VARIANT - build variant name
+# TOP_DIR - workspace root directory
+# ANDROID_BUILD_ENABLED - Flag to enable building Android
+# ANDROID_SOURCE_PATH - sub-directory containing Android
+# ANDROID_BINARIES_PATH - sub-directory containing Android prebuilt bins
+# ANDROID_LUNCH_TARGET - Lunch target to build
+# ANDROID_IMAGE_SIZE - Size of the image to generate
+# UBOOT_MKIMAGE - path to uboot mkimage
+# LINUX_ARCH - the arch
+# UBOOT_BUILD_ENABLED - flag to indicate the need for uimages.
+# ANDROID_BINS_VARIANTS - list of binary distros
+# ANDROID_SOURCE_VARIANT - the output name for the build
+# TARGET_{plat} - array of platform parameters, indexed by
+# ramdisk - the address of the ramdisk per platform
+
+
+do_build ()
+{
+ if [ "$ANDROID_BUILD_ENABLED" == "1" ]; then
+ if [ -d "$TOP_DIR/$ANDROID_SOURCE_PATH" ]; then
+ pushd $TOP_DIR/$ANDROID_SOURCE_PATH
+
+ echo "Android source build starting."
+ source build/envsetup.sh
+ lunch ${ANDROID_LUNCH_TARGET}
+ make -j $PARALLELISM TARGET_NO_KERNEL=true \
+ BUILD_KERNEL_MODULES=false \
+ TARGET_PREBUILT_KERNEL=yes \
+ systemimage userdataimage ramdisk
+
+ popd
+ else
+ echo "Android binary build. Skipping."
+ fi
+ fi
+}
+
+do_clean ()
+{
+ if [ "$ANDROID_BUILD_ENABLED" == "1" ]; then
+ if [ -d "$TOP_DIR/$ANDROID_SOURCE_PATH" ]; then
+ pushd $TOP_DIR/$ANDROID_SOURCE_PATH
+ echo "Cleaning Android source build..."
+ rm -rf out
+ popd
+ else
+ echo "Android binary build. Skipping."
+ fi
+ fi
+}
+
+do_package ()
+{
+ if [ "$ANDROID_BUILD_ENABLED" == "1" ]; then
+ echo "Packaging Android... $VARIANT";
+
+ mkdir -p ${PLATDIR}
+
+ if [ -d "$TOP_DIR/$ANDROID_SOURCE_PATH" ]; then
+ pushd $TOP_DIR/$ANDROID_SOURCE_PATH
+ echo "Packaging Android source build..."
+
+ # Setup lunch option to have access to env variables
+ source build/envsetup.sh
+ lunch ${ANDROID_LUNCH_TARGET}
+
+ # ANDROID_PRODUCT_OUT env variable is exported by android build system,
+ # when 'lunch <target>' is run.
+ local product_out=${ANDROID_PRODUCT_OUT}
+ local make_ext4fs=${TOP_DIR}/${ANDROID_SOURCE_PATH}/out/host/linux-x86/bin/make_ext4fs
+
+ pushd ${product_out}
+ # Create an image file
+ MAKE_EXT4FS=${make_ext4fs} \
+ IMG=${PLATDIR}/${ANDROID_SOURCE_VARIANT}-android.img \
+ $TOP_DIR/build-scripts/android-image.sh
+
+ # Copy the ramdisk
+ cp ${product_out}/ramdisk.img \
+ ${PLATDIR}/${ANDROID_SOURCE_VARIANT}-ramdisk-android.img
+ ANDROID_BINS_VARIANTS=${ANDROID_SOURCE_VARIANT}
+ popd
+ else
+ pushd ${TOP_DIR}/${ANDROID_BINARIES_PATH}
+ echo "Packaging Android binary build..."
+
+ for item in $ANDROID_BINS_VARIANTS; do
+ pushd $item
+ # Create an image file
+ if [ -e "system.img" ]; then
+ IMG=${PLATDIR}/${item}-android.img \
+ ${TOP_DIR}/build-scripts/android-image.sh
+ elif [ -e "${item}.img" ]; then
+ # platform image already created
+ cp ${item}.img ${PLATDIR}/${item}-android.img
+ else
+ echo "Error: no system image available for ${item}"
+ fi
+ # Copy the ramdisk
+ cp ramdisk.img ${PLATDIR}/${item}-ramdisk-android.img
+ popd
+ done
+ popd
+ fi
+ if [ "$UBOOT_BUILD_ENABLED" == "1" ]; then
+ # Android ramdisks for uboot
+ pushd ${PLATDIR}
+ for var in $ANDROID_BINS_VARIANTS; do
+ local addr=TARGET_$var[ramdisk]
+ ${UBOOT_MKIMG} -A $LINUX_ARCH -O linux -C none \
+ -T ramdisk -n ramdisk \
+ -a ${!addr} -e ${!addr} \
+ -n "Android ramdisk" \
+ -d ${var}-ramdisk-android.img \
+ ${var}-uInitrd-android.${!addr}
+ done
+ popd
+ fi
+ fi
+}
+
+DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+source $DIR/framework.sh $1 $2