008-MakeTOOLCHAIN.patch 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. diff --git a/MakeTOOLCHAIN.sh b/MakeTOOLCHAIN.sh
  2. new file mode 100755
  3. index 0000000..1c964ea
  4. --- /dev/null
  5. +++ b/MakeTOOLCHAIN.sh
  6. @@ -0,0 +1,141 @@
  7. +#!/bin/bash
  8. +echo "====== Build Toolchain INSTALL Script ===="
  9. +SHWRKDIR=/tmp/XXXMakeTOOLCHAIN
  10. +##BUILD=`cat ../PSG/board/PSG/iot2000/BUILD`
  11. +BUILD=IOT2000
  12. +UPDATE_BINARY=$SHWRKDIR/dest/toolchain.tar.Z
  13. +UPDATE_FILENAME="../Install-TOOLCHAIN-$BUILD.sh"
  14. +TOOLCHAIN_DIR="/opt/PSG"
  15. +UPDATE_IN_SCRIPT="MakeTOOLCHAIN.sh.in"
  16. +
  17. +rm -rf $SHWRKDIR
  18. +mkdir -p $SHWRKDIR/dest
  19. +mkdir -p $SHWRKDIR/Kernel-$BUILD
  20. +#====================================
  21. +WRKDIR=`pwd`
  22. +CMDDIR=`pwd`
  23. +#=== Asssign GNU_TARGET_NAME from .config
  24. +_ARCH=`grep BR2_ARCH\= .config | awk -F\= -F\" '{print $2}'`
  25. +_TARGET_VENDOR=`grep BR2_TOOLCHAIN_BUILDROOT_VENDOR\= .config | awk -F\= -F\" '{print $2}'`
  26. +
  27. +# -- get target os
  28. +_BR2_BINFMT_FLAT=`grep BR2_BINFMT_FLAT\= .config | awk -F\= '{print $2}'`
  29. +if [ "$_BR2_BINFMT_FLAT" = "y" ]; then
  30. + _TARGET_OS="uclinux"
  31. + else
  32. + _TARGET_OS="linux"
  33. +fi
  34. +
  35. +# -- get libc
  36. +_BR2_TOOLCHAIN_USES_UCLIBC=`grep BR2_TOOLCHAIN_USES_UCLIBC\= .config | awk -F\= '{print $2}'`
  37. +_BR2_TOOLCHAIN_USES_MUSL=`grep BR2_TOOLCHAIN_USES_MUSL\= .config | awk -F\= '{print $2}'`
  38. +
  39. +if [ "$_BR2_TOOLCHAIN_USES_UCLIBC" = "y" ]; then
  40. + _LIBC="uclibc"
  41. + else
  42. + if [ "$_BR2_TOOLCHAIN_USES_MUSL" = "y" ]; then
  43. + _LIBC="musl"
  44. + else
  45. + _LIBC="gnu"
  46. + fi
  47. +fi
  48. +
  49. +# -- ABI
  50. +_BR2_arm=`grep BR2_arm\= .config | awk -F\= '{print $2}'`
  51. +_BR2_armeb=`grep BR2_armeb\= .config | awk -F\= '{print $2}'`
  52. +_BR2_ARM_EABIHF=`grep BR2_ARM_EABIHF\= .config | awk -F\= '{print $2}'`
  53. +if [ "$_BR2_arm" = "y" ] || [ "$_BR2_armeb" = "y" ]; then
  54. + if [ "$_LIBC" = "uclibc" ]; then
  55. + _ABI="gnueabi"
  56. + else
  57. + _ABI="eabi"
  58. + fi
  59. + if [ "$_BR2_ARM_EABIHF" = "y" ]; then
  60. + _ABI="${_ABI}hf"
  61. + fi
  62. +fi
  63. +
  64. +_GNU_TARGET_NAME="${_ARCH}-${_TARGET_VENDOR}-${_TARGET_OS}-${_LIBC}${_ABI}"
  65. +#===============================================================
  66. +TOOLCHAIN=`grep BR2_HOST_DIR .config | awk -F\= -F\" '{print $2}'`
  67. +if [[ $TOOLCHAIN = *\$\(BASE_DIR\)* ]]; then
  68. + SYSROOT=`readlink -f $CMDDIR`/output/host/usr/bin/
  69. +else
  70. + SYSROOT=$TOOLCHAIN/usr/bin
  71. +fi
  72. +CROSS_COMPILE="${_GNU_TARGET_NAME}-"
  73. +CROSS=${CROSS_COMPILE}
  74. +_KERNELDIR=`grep BR2_LINUX_KERNEL_VERSION\= .config | awk -F\= -F\" '{print $2}'`
  75. +KERNELDIR=${CMDDIR}/output/build/linux-${_KERNELDIR}
  76. +#====================================
  77. +echo $TOOLCHAIN
  78. +echo "packing Toolchain ... pls be patient"
  79. +rsync -a $TOOLCHAIN $SHWRKDIR/
  80. +echo "packing Kernel ... pls be patient"
  81. +rsync -a $KERNELDIR $SHWRKDIR/Kernel-$BUILD/
  82. +
  83. +(\
  84. +cat << EOF
  85. +#!/bin/sh
  86. +
  87. +export SYSROOT=$SYSROOT
  88. +export PATH=\$PATH:$SYSROOT
  89. +export KERNELDIR=$TOOLCHAIN_DIR/Kernel-$BUILD/linux-${_KERNELDIR}
  90. +export CROSS_COMPILE=${CROSS_COMPILE}
  91. +export CROSS=${CROSS_COMPILE}
  92. +
  93. +export ARCH=arm
  94. +export SYSROOTARM=`grep BR2_HOST_DIR .config | awk -F\= -F\" '{print $2}'`/usr/${_GNU_TARGET_NAME}/sysroot
  95. +export CC_FULLPATH="${SYSROOT}/${CROSS_COMPILE}"
  96. +export CC=${CROSS_COMPILE}gcc
  97. +export CXX=${CROSS_COMPILE}g++
  98. +
  99. +if [ \$# -eq "0" ]
  100. +then
  101. +PROMPT_COMMAND='PS1="\[\033[0;31m\]CROSS CC:\[\033[0;32m\]\$PS1";unset PROMPT_COMMAND' bash ; reset
  102. +else
  103. +\$1
  104. +fi
  105. +
  106. +EOF
  107. +) > $SHWRKDIR/CrossCompile-${BUILD}.sh
  108. +
  109. +chmod a+x $SHWRKDIR/CrossCompile-${BUILD}.sh
  110. +
  111. +echo "packing Binaries to Tarball ... pls be patient"
  112. +tar -C $SHWRKDIR --exclude=./dest -czf $SHWRKDIR/dest/toolchain.tar.Z ./
  113. +echo "--------------------- DONE -----------------------"
  114. +# update script
  115. +(\
  116. +cat << EOF
  117. +#!/bin/sh
  118. +
  119. +TOOLCHAIN_DIR=$TOOLCHAIN_DIR
  120. +TAR_PARAMETERS="-C \$TOOLCHAIN_DIR -xzvf -"
  121. +
  122. +untar_payload ()
  123. +{
  124. + match=\$(grep -a -n -m 1 '^PAYLOAD:$' \$0 | cut -d ':' -f 1)
  125. + payload_start=\$((match + 1))
  126. + tail -n +\$payload_start \$0 | tar \$TAR_PARAMETERS
  127. +}
  128. +
  129. +## --- Kommandos zum Installieren
  130. +
  131. +#--- Toolchain-Tarball entpacken
  132. +
  133. +if [ ! -d \${TOOLCHAIN_DIR} ]; then
  134. + sudo mkdir -p \${TOOLCHAIN_DIR}
  135. +fi
  136. +sudo chown -Rv \$USER:\$USER \${TOOLCHAIN_DIR}
  137. +
  138. +untar_payload
  139. +
  140. +exit 0
  141. +EOF
  142. +) > $UPDATE_FILENAME
  143. +
  144. +echo "PAYLOAD:" >> $UPDATE_FILENAME
  145. +cat $UPDATE_BINARY >> $UPDATE_FILENAME
  146. +
  147. +chmod a+x $UPDATE_FILENAME