Browse Source

MakeTOOLCHAIN

Reinhard Russinger 5 years ago
parent
commit
7b8821c0cb
1 changed files with 147 additions and 0 deletions
  1. 147 0
      patches/008-MakeTOOLCHAIN.patch

+ 147 - 0
patches/008-MakeTOOLCHAIN.patch

@@ -0,0 +1,147 @@
+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