120 lines
3.5 KiB
Bash
Executable file
120 lines
3.5 KiB
Bash
Executable file
#!/bin/bash
|
|
set -e
|
|
|
|
############################################################################################
|
|
#
|
|
# Show how to build buildroot automatically -- Benn
|
|
#
|
|
###########################################################################################
|
|
|
|
CUR_DIR=`pwd`
|
|
|
|
#Uncomment here if you want
|
|
#LICHEE_KDIR=${CUR_DIR}/../linux-2.6.36/include
|
|
|
|
show_help()
|
|
{
|
|
printf "\nValid Options:\n"
|
|
printf "\tbuildroot - build buildroot\n"
|
|
printf "\thelp - print help\n"
|
|
printf "\texternal - build external\n\n"
|
|
}
|
|
|
|
# Build all for sun5i platform
|
|
build_buildroot()
|
|
{
|
|
if [ ! -e .config ]; then
|
|
printf "\nUsing default config... ...!\n"
|
|
make sun6i_defconfig
|
|
fi
|
|
|
|
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- LICHEE_GEN_ROOTFS=n
|
|
}
|
|
|
|
EXTERNAL_DIR=${CUR_DIR}/external-packages
|
|
|
|
#############################################################################################
|
|
#
|
|
# Build external packages with some 'famous' variables
|
|
# - DESTDIR : image files
|
|
# - CROSSS_COMPILE
|
|
# - STAGING_DIR : Libraries and header files
|
|
# - TARGET_DIR : Rootfs
|
|
#
|
|
############################################################################################
|
|
# if unset LICHEE_KDIR, give it a default
|
|
LICHEE_KDIR=${LICHEE_KDIR:-${CUR_DIR}/output/staging/usr/include}
|
|
|
|
DESTDIR=${CUR_DIR}/output/images
|
|
CROSS_COMPILE=arm-linux-gnueabi-
|
|
STAGING_DIR=${CUR_DIR}/output/staging
|
|
TARGET_DIR=${CUR_DIR}/output/target
|
|
TARGET_SYSROOT_OPT="--sysroot=${STAGING_DIR}"
|
|
|
|
TARGET_AR=${CROSS_COMPILE}ar
|
|
TARGET_AS=${CROSS_COMPILE}as
|
|
TARGET_CC="${CROSS_COMPILE}gcc ${TARGET_SYSROOT_OPT}"
|
|
TARGET_CPP="${CROSS_COMPILE}cpp ${TARGET_SYSROOT_OPT}"
|
|
TARGET_CXX="${CROSS_COMPILE}g++ ${TARGET_SYSROOT_OPT}"
|
|
TARGET_FC="${CROSS_COMPILE}gfortran ${TARGET_SYSROOT_OPT}"
|
|
TARGET_LD="${CROSS_COMPILE}ld ${TARGET_SYSROOT_OPT}"
|
|
TARGET_NM="${CROSS_COMPILE}nm"
|
|
TARGET_RANLIB="${CROSS_COMPILE}ranlib"
|
|
TARGET_OBJCOPY="${CROSS_COMPILE}objcopy"
|
|
TARGET_OBJDUMP="${CROSS_COMPILE}objdump"
|
|
TARGET_CFLAGS="-pipe -Os -mtune=cortex-a7 -march=armv7-a -mabi=aapcs-linux -msoft-float -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -I${LICHEE_KDIR} "
|
|
|
|
|
|
BUILD_OPTIONS="DESTDIR=${DESTDIR} CROSS_COMPILE=${CROSS_COMPILE} \
|
|
STAGING_DIR=${STAGING_DIR} TARGET_DIR=${TARGET_DIR} CC=\"${TARGET_CC}\" \
|
|
AR=${TARGET_AR} AS=${TARGET_AS} CPP=\"${TARGET_CPP}\" CXX=\"${TARGET_CXX}\" \
|
|
FC=\"${TARGET_FC}\" LD=\"${TARGET_LD}\" NM=${TARGET_NM} RANLIB=${TARGET_RANLIB} \
|
|
OBJCOPY=${TARGET_OBJCOPY} OBJDUMP=${TARGET_OBJDUMP} CFLAGS=\"${TARGET_CFLAGS}\" "
|
|
|
|
build_external()
|
|
{
|
|
for dir in $(ls ${EXTERNAL_DIR}); do
|
|
echo ${EXTERNAL_DIR}/$dir
|
|
if [ -f ${EXTERNAL_DIR}/$dir/Makefile ]; then
|
|
BUILD_COMMAND="make -C ${EXTERNAL_DIR}/$dir ${BUILD_OPTIONS} all"
|
|
eval $BUILD_COMMAND
|
|
BUILD_COMMAND="make -C ${EXTERNAL_DIR}/$dir ${BUILD_OPTIONS} install"
|
|
eval $BUILD_COMMAND
|
|
BUILD_COMMAND="pwd"
|
|
fi
|
|
done
|
|
}
|
|
|
|
case "$1" in
|
|
buildroot)
|
|
build_buildroot
|
|
;;
|
|
external)
|
|
export PATH=${CUR_DIR}/output/external-toolchain/bin:$PATH
|
|
which arm-linux-gnueabi-gcc
|
|
build_external
|
|
;;
|
|
help)
|
|
show_help
|
|
;;
|
|
all)
|
|
build_buildroot
|
|
export PATH=${CUR_DIR}/output/external-toolchain/bin:$PATH
|
|
build_external
|
|
# if [ ! -e ${CUR_DIR}/output/external-toolchain/arm-linux-gnueabi ]; then
|
|
# rm ${CUR_DIR}/output -fr
|
|
# mkdir ${CUR_DIR}/output
|
|
# cp ${CUR_DIR}/dl/gcc-linaro.tar ${CUR_DIR}/output
|
|
# cd ${CUR_DIR}/output
|
|
# tar -xf gcc-linaro.tar
|
|
# mv gcc-linaro/ external-toolchain
|
|
# rm gcc-linaro.tar
|
|
# fi
|
|
export PATH=${CUR_DIR}/output/external-toolchain/bin:$PATH
|
|
build_buildroot
|
|
build_external
|
|
;;
|
|
*)
|
|
build_buildroot
|
|
;;
|
|
esac
|