diff --git a/CrossCompile.sh b/CrossCompile.sh new file mode 100755 index 0000000..f18e4d5 --- /dev/null +++ b/CrossCompile.sh @@ -0,0 +1,89 @@ +#! /bin/bash +# +# + +WRKDIR=`pwd` +CMDDIR=`dirname \`readlink -f $0\`` +cd $CMDDIR + +#=== Asssign GNU_TARGET_NAME from .config +_ARCH=`grep BR2_ARCH\= .config | awk -F\= -F\" '{print $2}'` +_TARGET_VENDOR=`grep BR2_TOOLCHAIN_BUILDROOT_VENDOR\= .config | awk -F\= -F\" '{print $2}'` + +# -- get target os +_BR2_BINFMT_FLAT=`grep BR2_BINFMT_FLAT\= .config | awk -F\= '{print $2}'` +if [ "$_BR2_BINFMT_FLAT" = "y" ]; then + _TARGET_OS="uclinux" + else + _TARGET_OS="linux" +fi + +# -- get libc +_BR2_TOOLCHAIN_USES_UCLIBC=`grep BR2_TOOLCHAIN_USES_UCLIBC\= .config | awk -F\= '{print $2}'` +_BR2_TOOLCHAIN_USES_MUSL=`grep BR2_TOOLCHAIN_USES_MUSL\= .config | awk -F\= '{print $2}'` + +if [ "$_BR2_TOOLCHAIN_USES_UCLIBC" = "y" ]; then + _LIBC="uclibc" + else + if [ "$_BR2_TOOLCHAIN_USES_MUSL" = "y" ]; then + _LIBC="musl" + else + _LIBC="gnu" + fi +fi + +# -- ABI +_BR2_arm=`grep BR2_arm\= .config | awk -F\= '{print $2}'` +_BR2_armeb=`grep BR2_armeb\= .config | awk -F\= '{print $2}'` +_BR2_ARM_EABIHF=`grep BR2_ARM_EABIHF\= .config | awk -F\= '{print $2}'` +if [ "$_BR2_arm" = "y" ] || [ "$_BR2_armeb" = "y" ]; then + if [ "$_LIBC" = "uclibc" ]; then + _ABI="gnueabi" + else + _ABI="eabi" + fi + if [ "$_BR2_ARM_EABIHF" = "y" ]; then + _ABI="${_ABI}hf" + fi +fi + +_GNU_TARGET_NAME="${_ARCH}-${_TARGET_VENDOR}-${_TARGET_OS}-${_LIBC}${_ABI}" +#=============================================================== + +TOOLCHAIN=`grep BR2_HOST_DIR .config | awk -F\= -F\" '{print $2}'` +echo $TOOLCHAIN + +if [[ $TOOLCHAIN = *\$\(BASE_DIR\)* ]]; then + export SYSROOT=`readlink -f $CMDDIR`/output/host/usr/bin/ +else + export SYSROOT=$TOOLCHAIN/usr/bin +fi + +export PATH=$PATH:$SYSROOT + +export CROSS_COMPILE="${_GNU_TARGET_NAME}-" +export CROSS=${CROSS_COMPILE} + +export ARCH=arm64 +_KERNELDIR=`grep BR2_LINUX_KERNEL_VERSION\= .config | awk -F\= -F\" '{print $2}'` +export KERNELDIR=${CMDDIR}/output/build/linux-${_KERNELDIR} +export BB_KERNEL_SOURCES=$KERNELDIR +export SYSROOTARM=`grep BR2_HOST_DIR .config | awk -F\= -F\" '{print $2}'`/usr/${_GNU_TARGET_NAME}/sysroot +export CC_FULLPATH="${SYSROOT}/${CROSS_COMPILE}" +export CC=${CROSS_COMPILE}gcc +export CXX=${CROSS_COMPILE}g++ + +export AS=arm-buildroot-linux-gnueabihf-as +export NM=arm-buildroot-linux-gnueabihf-nm +export OBJCOPY=arm-buildroot-linux-gnueabihf-objcopy +export STRIP=arm-buildroot-linux-gnueabihf-strip +#for contiki-ng +export LD_OVERRIDE=$CC + +cd $WRKDIR +if [ $# -eq "0" ] +then +PROMPT_COMMAND='PS1="\[\033[0;31m\]CROSS CC:\[\033[0;32m\]$PS1";unset PROMPT_COMMAND' bash ; reset +else +$1 +fi