0026-MakeTOOLCHAIN.patch 4.2 KB

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