summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Harkin <ryan.harkin@linaro.org>2015-06-09 10:15:54 +0100
committerRyan Harkin <ryan.harkin@linaro.org>2015-06-09 14:15:24 +0100
commita28a63dc4fda2ff7e9ec598e83b9469197434795 (patch)
tree38b7f35f9dfaea36bed694af282c7862cd4820b8
parente73c6e7d8e7960ea3c7c1fe62e61faa486599c8a (diff)
Add busybox build
Added the files needed to create a busybox Juno variant. The user can now invoke the scripts thus: ./build-scripts/build-all.sh juno-busybox ./build-scripts/build-all.sh juno-busybox package The output directory will have a juno-busybox dir with both uboot and uefi variants inside. Signed-off-by: Ryan Harkin <ryan.harkin@linaro.org>
-rwxr-xr-xbuild-busybox.sh65
-rwxr-xr-xbuild-ramdisk.sh75
-rwxr-xr-xbuild-target-bins.sh17
-rw-r--r--variants/juno-busybox90
4 files changed, 246 insertions, 1 deletions
diff --git a/build-busybox.sh b/build-busybox.sh
new file mode 100755
index 0000000..470fdbd
--- /dev/null
+++ b/build-busybox.sh
@@ -0,0 +1,65 @@
+#!/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.
+
+do_build ()
+{
+ if [ "$BUSYBOX_BUILD_ENABLED" == "1" ]; then
+ export ARCH=$BUSYBOX_ARCH
+
+ pushd $TOP_DIR/$BUSYBOX_PATH
+ make defconfig
+ sed -i 's/# CONFIG_STATIC is not set/CONFIG_STATIC=y/g' .config
+ make -j $PARALLELISM install
+ # do some commands to build
+ popd
+ fi
+}
+
+do_clean ()
+{
+ if [ "$BUSYBOX_BUILD_ENABLED" == "1" ]; then
+ export ARCH=$BUSYBOX_ARCH
+
+ pushd $TOP_DIR/$BUSYBOX_PATH
+ make clean
+
+ popd
+ fi
+}
+
+do_package ()
+{
+ if [ "$BUSYBOX_BUILD_ENABLED" == "1" ]; then
+ echo "Packaging BUSYBOX... $VARIANT";
+ fi
+}
+
+DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+source $DIR/framework.sh $1 $2
diff --git a/build-ramdisk.sh b/build-ramdisk.sh
new file mode 100755
index 0000000..a4ffdbd
--- /dev/null
+++ b/build-ramdisk.sh
@@ -0,0 +1,75 @@
+#!/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
+# RAMDISK_BUILD_ENABLED - Flag to enable building ramdisk
+# RAMDISK_PATH - sub-directory containing ramdisk code
+# RAMDISK_LINUX_GEN_CPIO - path to gen_init_cpio tool
+# RAMDISK_BUSYBOX_PATH - path to built busybox image
+
+do_build ()
+{
+ if [ "$RAMDISK_BUILD_ENABLED" == "1" ]; then
+ echo "Building... $VARIANT";
+ fi
+}
+
+do_clean ()
+{
+ if [ "$RAMDISK_BUILD_ENABLED" == "1" ]; then
+ pushd $TOP_DIR/$RAMDISK_PATH
+ rm -f ramdisk.img busybox
+ popd
+ fi
+}
+
+do_package ()
+{
+ if [ "$RAMDISK_BUILD_ENABLED" == "1" ]; then
+ echo "Packaging ramdisk... $VARIANT";
+ # create the ramdisk
+ pushd $TOP_DIR/$RAMDISK_PATH
+ cp $TOP_DIR/$RAMDISK_BUSYBOX_PATH .
+ $TOP_DIR/$RAMDISK_LINUX_GEN_CPIO files.txt > ramdisk.img
+ popd
+ # Copy binary to output folder
+ pushd $TOP_DIR
+ mkdir -p ${OUTDIR}
+ cp $RAMDISK_PATH/ramdisk.img ${OUTDIR}/
+ popd
+ fi
+}
+
+DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+source $DIR/framework.sh $1 $2
diff --git a/build-target-bins.sh b/build-target-bins.sh
index 167f1ac..ee303c3 100755
--- a/build-target-bins.sh
+++ b/build-target-bins.sh
@@ -57,7 +57,13 @@ populate_variant()
# copy ramdisk to the variant
if [ "$TARGET_BINS_HAS_OE" = "1" ]; then
cp ${OUTDIR}/uInitrd-oe.$TARGET_BINS_UINITRD_ADDRS $outdir/ramdisk.img
- else
+ elif [ "$TARGET_BINS_HAS_BUSYBOX" = "1" ]; then
+ if [ "$boot_type" = "uboot" ]; then
+ cp ${OUTDIR}/uInitrd-busybox.$TARGET_BINS_UINITRD_ADDRS $outdir/ramdisk.img
+ else
+ cp ${OUTDIR}/ramdisk.img $outdir/ramdisk.img
+ fi
+ elif [ "$TARGET_BINS_HAS_ANDROID" = "1" ]; then
if [ "$boot_type" = "uboot" ]; then
cp ${OUTDIR}/uInitrd-android.$TARGET_BINS_UINITRD_ADDRS $outdir/ramdisk.img
else
@@ -144,6 +150,12 @@ do_package()
${uboot_mkimage} ${common_flags} -T ramdisk -n ramdisk -a $addr -e $addr -n "Dummy ramdisk" -d ramdisk-oe.img uInitrd-oe.$addr
done
fi
+ if [ "$TARGET_BINS_HAS_BUSYBOX" = "1" ]; then
+ mkdir -p busybox
+ for addr in $TARGET_BINS_UINITRD_ADDRS; do
+ ${uboot_mkimage} ${common_flags} -T ramdisk -n ramdisk -a $addr -e $addr -n "BusyBox ramdisk" -d ${OUTDIR}/ramdisk.img uInitrd-busybox.$addr
+ done
+ fi
popd
# Add chosen node for ramdisk to dtbs
@@ -157,6 +169,9 @@ do_package()
if [ "$TARGET_BINS_HAS_OE" = "1" ]; then
append_chosen_node ${item}-chosen-oe ramdisk-oe.img $item
fi
+ if [ "$TARGET_BINS_HAS_BUSYBOX" = "1" ]; then
+ append_chosen_node ${item}-chosen-busybox ramdisk.img $item
+ fi
done
popd
fi
diff --git a/variants/juno-busybox b/variants/juno-busybox
new file mode 100644
index 0000000..26173e4
--- /dev/null
+++ b/variants/juno-busybox
@@ -0,0 +1,90 @@
+# 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.
+
+VARIANT_DESC="Juno kernel for BusyBox Software Stack"
+
+# Absolute path to the aarch64 GCC compoiler binaries (plus prefix)
+# If you wish to specify a path relative to the workspace root, prefix it with "$TOP_DIR/"
+# If your compiler is on your path, you can simply add the prefix, as per the default example.
+export CROSS_COMPILE=${CROSS_COMPILE:-aarch64-linux-gnu-}
+BUILD_SCRIPTS=""
+
+LINUX_BUILD_ENABLED=1
+BUILD_SCRIPTS=$BUILD_SCRIPTS"build-linux.sh "
+LINUX_PATH=linux
+LINUX_CONFIGS_BASE="linaro-base vexpress64 big-LITTLE-MP"
+LINUX_CONFIGS="${LINUX_CONFIGS_BASE} distribution"
+LINUX_DEFCONFIG=defconfig
+LINUX_ARCH=arm64
+DEVTREE_TREES="juno juno-r1"
+
+UBOOT_BUILD_ENABLED=1
+BUILD_SCRIPTS=$BUILD_SCRIPTS"build-uboot.sh "
+UBOOT_PATH=u-boot
+UBOOT_ARCH=aarch64
+UBOOT_BOARDS="vexpress_aemv8a_juno"
+UBOOT_OUTPUT_DESTS[vexpress_aemv8a_juno]=juno
+
+UEFI_BUILD_ENABLED=1
+BUILD_SCRIPTS=$BUILD_SCRIPTS"build-uefi.sh "
+UEFI_PATH=uefi/edk2
+UEFI_TOOLS_PATH=uefi/uefi-tools
+UEFI_PLATFORMS="ArmPlatformPkg/ArmJunoPkg/Makefile"
+UEFI_BUILD_MODE=DEBUG
+UEFI_TOOLCHAIN=GCC49
+UEFI_OUTPUT_PLATFORMS="ArmJuno"
+UEFI_OUTPUT_DESTS[juno]=juno
+
+ARM_TF_BUILD_ENABLED=1
+BUILD_SCRIPTS=$BUILD_SCRIPTS"build-arm-tf.sh "
+ARM_TF_PATH=arm-tf
+ARM_TF_PLATS="juno"
+ARM_TF_ARCH=aarch64
+ARMTF_DEBUG_ENABLED=1
+
+BUSYBOX_BUILD_ENABLED=1
+BUILD_SCRIPTS=$BUILD_SCRIPTS"build-busybox.sh "
+BUSYBOX_PATH=busybox
+BUSYBOX_ARCH=arm
+
+RAMDISK_BUILD_ENABLED=1
+BUILD_SCRIPTS=$BUILD_SCRIPTS"build-ramdisk.sh "
+RAMDISK_PATH=ramdisk
+RAMDISK_LINUX_GEN_CPIO=$LINUX_PATH/usr/gen_init_cpio
+RAMDISK_BUSYBOX_PATH=$BUSYBOX_PATH/_install/bin/busybox
+# this must be the last step for low level code.
+TARGET_BINS_BUILD_ENABLED=1
+BUILD_SCRIPTS=$BUILD_SCRIPTS"build-target-bins.sh "
+TARGET_BINS_UINITRD_ADDRS="0x84000000"
+TARGET_BINS_PLATS="juno"
+TARGET_BINS_HAS_BUSYBOX=1
+
+TARGET_ARM_TF_juno="juno"
+TARGET_SCP_juno="recovery/SOFTWARE"
+TARGET_UBOOT_juno="juno"
+TARGET_UEFI_juno="juno"