toolchain.sh 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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. *darwin*) TARGET_OS=Darwin ;;
  46. *) TARGET_OS=Linux ;;
  47. esac
  48. # TARGET_OS,TARGET_ARCH used by make
  49. export HV_HOST_OS=$HOST_OS
  50. export HV_HOST_ARCH=$HOST_ARCH
  51. export HV_TARGET_OS=$TARGET_OS
  52. export HV_TARGET_ARCH=$TARGET_ARCH
  53. export HOST=$TARGET_PLATFORM
  54. elif [ $COMMAND = "unset" ]; then
  55. unset CROSS_COMPILE
  56. unset CC
  57. unset CXX
  58. unset AR
  59. unset AS
  60. unset LD
  61. unset STRIP
  62. unset RANLIB
  63. unset NM
  64. unset HOST_OS
  65. unset HOST_ARCH
  66. unset TARGET_OS
  67. unset TARGET_ARCH
  68. unset HOST
  69. else
  70. print_help
  71. return
  72. fi
  73. }
  74. main $@
  75. echo "CC = $CC"
  76. echo "CXX = $CXX"
  77. if [ $CC ]; then
  78. CC_VERSION=`$CC --version 2>&1 | head -n 1`
  79. echo "$CC_VERSION"
  80. fi
  81. echo "AR = $AR"
  82. echo "AS = $AS"
  83. echo "LD = $LD"
  84. echo "STRIP = $STRIP"
  85. echo "RANLIB = $RANLIB"
  86. echo "NM = $NM"
  87. echo "HV_HOST_OS = $HOST_OS"
  88. echo "HV_HOST_ARCH = $HOST_ARCH"
  89. echo "HV_TARGET_OS = $TARGET_OS"
  90. echo "HV_TARGET_ARCH = $TARGET_ARCH"