toolchain.sh 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #!/bin/bash
  2. print_help() {
  3. cat <<EOF
  4. Usage: command
  5. command:
  6. export CROSS_COMPILE
  7. unset
  8. example:
  9. source ./toolchain.sh export arm-linux-androideabi
  10. source ./toolchain.sh unset
  11. EOF
  12. }
  13. main() {
  14. if [ $# -lt 1 ]; then
  15. print_help
  16. return
  17. fi
  18. COMMAND=$1
  19. if [ $COMMAND = "export" ]; then
  20. if [ $# -lt 2 ]; then
  21. print_help
  22. return
  23. fi
  24. CROSS_COMPILE=$2
  25. if [ ${CROSS_COMPILE:${#CROSS_COMPILE}-1:1} != "-" ]; then
  26. CROSS_COMPILE=${CROSS_COMPILE}-
  27. fi
  28. echo "CROSS_COMPILE=$CROSS_COMPILE"
  29. export CROSS_COMPILE=${CROSS_COMPILE}
  30. export CC=${CROSS_COMPILE}gcc
  31. export CXX=${CROSS_COMPILE}g++
  32. export AR=${CROSS_COMPILE}ar
  33. export AS=${CROSS_COMPILE}as
  34. export LD=${CROSS_COMPILE}ld
  35. export STRIP=${CROSS_COMPILE}strip
  36. export RANLIB=${CROSS_COMPILE}ranlib
  37. export NM=${CROSS_COMPILE}nm
  38. HOST_OS=`uname -s`
  39. HOST_ARCH=`uname -m`
  40. TARGET_PLATFORM=`$CC -v 2>&1 | grep Target | sed 's/Target: //'`
  41. TARGET_ARCH=`echo $TARGET_PLATFORM | awk -F'-' '{print $1}'`
  42. case $TARGET_PLATFORM in
  43. *mingw*) TARGET_OS=Windows ;;
  44. *android*) TARGET_OS=Android ;;
  45. *) TARGET_OS=Linux ;;
  46. esac
  47. # TARGET_OS,TARGET_ARCH used by make
  48. export H_HOST_OS=$HOST_OS
  49. export H_HOST_ARCH=$HOST_ARCH
  50. export H_TARGET_OS=$TARGET_OS
  51. export H_TARGET_ARCH=$TARGET_ARCH
  52. export HOST=$TARGET_PLATFORM
  53. elif [ $COMMAND = "unset" ]; then
  54. unset CROSS_COMPILE
  55. unset CC
  56. unset CXX
  57. unset AR
  58. unset AS
  59. unset LD
  60. unset STRIP
  61. unset RANLIB
  62. unset NM
  63. unset HOST_OS
  64. unset HOST_ARCH
  65. unset TARGET_OS
  66. unset TARGET_ARCH
  67. unset HOST
  68. else
  69. print_help
  70. return
  71. fi
  72. }
  73. main $@
  74. echo "CC = $CC"
  75. echo "CXX = $CXX"
  76. if [ $CC ]; then
  77. CC_VERSION=`$CC --version 2>&1 | head -n 1`
  78. echo "$CC_VERSION"
  79. fi
  80. echo "AR = $AR"
  81. echo "AS = $AS"
  82. echo "LD = $LD"
  83. echo "STRIP = $STRIP"
  84. echo "RANLIB = $RANLIB"
  85. echo "NM = $NM"
  86. echo "H_HOST_OS = $HOST_OS"
  87. echo "H_HOST_ARCH = $HOST_ARCH"
  88. echo "H_TARGET_OS = $TARGET_OS"
  89. echo "H_TARGET_ARCH = $TARGET_ARCH"