123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- diff --git a/MakeTOOLCHAIN.sh b/MakeTOOLCHAIN.sh
- new file mode 100755
- index 0000000..1c964ea
- --- /dev/null
- +++ b/MakeTOOLCHAIN.sh
- @@ -0,0 +1,141 @@
- +#!/bin/bash
- +echo "====== Build Toolchain INSTALL Script ===="
- +SHWRKDIR=/tmp/XXXMakeTOOLCHAIN
- +##BUILD=`cat ../PSG/board/PSG/iot2000/BUILD`
- +BUILD=IOT2000
- +UPDATE_BINARY=$SHWRKDIR/dest/toolchain.tar.Z
- +UPDATE_FILENAME="../Install-TOOLCHAIN-$BUILD.sh"
- +TOOLCHAIN_DIR="/opt/PSG"
- +UPDATE_IN_SCRIPT="MakeTOOLCHAIN.sh.in"
- +
- +rm -rf $SHWRKDIR
- +mkdir -p $SHWRKDIR/dest
- +mkdir -p $SHWRKDIR/Kernel-$BUILD
- +#====================================
- +WRKDIR=`pwd`
- +CMDDIR=`pwd`
- +#=== 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}'`
- +if [[ $TOOLCHAIN = *\$\(BASE_DIR\)* ]]; then
- + SYSROOT=`readlink -f $CMDDIR`/output/host/usr/bin/
- +else
- + SYSROOT=$TOOLCHAIN/usr/bin
- +fi
- +CROSS_COMPILE="${_GNU_TARGET_NAME}-"
- +CROSS=${CROSS_COMPILE}
- +_KERNELDIR=`grep BR2_LINUX_KERNEL_VERSION\= .config | awk -F\= -F\" '{print $2}'`
- +KERNELDIR=${CMDDIR}/output/build/linux-${_KERNELDIR}
- +#====================================
- +echo $TOOLCHAIN
- +echo "packing Toolchain ... pls be patient"
- +rsync -a $TOOLCHAIN $SHWRKDIR/
- +echo "packing Kernel ... pls be patient"
- +rsync -a $KERNELDIR $SHWRKDIR/Kernel-$BUILD/
- +
- +(\
- +cat << EOF
- +#!/bin/sh
- +
- +export SYSROOT=$SYSROOT
- +export PATH=\$PATH:$SYSROOT
- +export KERNELDIR=$TOOLCHAIN_DIR/Kernel-$BUILD/linux-${_KERNELDIR}
- +export CROSS_COMPILE=${CROSS_COMPILE}
- +export CROSS=${CROSS_COMPILE}
- +
- +export ARCH=arm
- +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++
- +
- +if [ \$# -eq "0" ]
- +then
- +PROMPT_COMMAND='PS1="\[\033[0;31m\]CROSS CC:\[\033[0;32m\]\$PS1";unset PROMPT_COMMAND' bash ; reset
- +else
- +\$1
- +fi
- +
- +EOF
- +) > $SHWRKDIR/CrossCompile-${BUILD}.sh
- +
- +chmod a+x $SHWRKDIR/CrossCompile-${BUILD}.sh
- +
- +echo "packing Binaries to Tarball ... pls be patient"
- +tar -C $SHWRKDIR --exclude=./dest -czf $SHWRKDIR/dest/toolchain.tar.Z ./
- +echo "--------------------- DONE -----------------------"
- +# update script
- +(\
- +cat << EOF
- +#!/bin/sh
- +
- +TOOLCHAIN_DIR=$TOOLCHAIN_DIR
- +TAR_PARAMETERS="-C \$TOOLCHAIN_DIR -xzvf -"
- +
- +untar_payload ()
- +{
- + match=\$(grep -a -n -m 1 '^PAYLOAD:$' \$0 | cut -d ':' -f 1)
- + payload_start=\$((match + 1))
- + tail -n +\$payload_start \$0 | tar \$TAR_PARAMETERS
- +}
- +
- +## --- Kommandos zum Installieren
- +
- +#--- Toolchain-Tarball entpacken
- +
- +if [ ! -d \${TOOLCHAIN_DIR} ]; then
- + sudo mkdir -p \${TOOLCHAIN_DIR}
- +fi
- +sudo chown -Rv \$USER:\$USER \${TOOLCHAIN_DIR}
- +
- +untar_payload
- +
- +exit 0
- +EOF
- +) > $UPDATE_FILENAME
- +
- +echo "PAYLOAD:" >> $UPDATE_FILENAME
- +cat $UPDATE_BINARY >> $UPDATE_FILENAME
- +
- +chmod a+x $UPDATE_FILENAME
|