install.sh 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. set -ex
  2. . $(dirname $0)/env.sh
  3. install_deps() {
  4. if [[ ${DOCKER} == "i" ]]; then
  5. apt-get update
  6. apt-get install -y --no-install-recommends \
  7. ca-certificates curl
  8. fi
  9. }
  10. install_qemu() {
  11. case $TARGET in
  12. mips-unknown-linux-gnu | \
  13. mipsel-unknown-linux-gnu | \
  14. powerpc64-unknown-linux-gnu | \
  15. powerpc64le-unknown-linux-gnu)
  16. apt-get install -y --no-install-recommends \
  17. qemu-user
  18. ;;
  19. esac
  20. }
  21. install_binutils() {
  22. case $TRAVIS_OS_NAME in
  23. osx)
  24. brew install binutils
  25. ;;
  26. *)
  27. ;;
  28. esac
  29. }
  30. install_c_toolchain() {
  31. case $TARGET in
  32. aarch64-unknown-linux-gnu)
  33. sudo apt-get install -y --no-install-recommends \
  34. gcc-aarch64-linux-gnu libc6-dev-arm64-cross
  35. ;;
  36. i586-unknown-linux-gnu)
  37. apt-get install -y --no-install-recommends \
  38. gcc libc6-dev-i386
  39. ;;
  40. mips-unknown-linux-gnu)
  41. apt-get install -y --no-install-recommends \
  42. gcc-mips-linux-gnu libc6-dev-mips-cross
  43. ;;
  44. mipsel-unknown-linux-gnu)
  45. apt-get install -y --no-install-recommends \
  46. gcc-mipsel-linux-gnu libc6-dev-mipsel-cross
  47. ;;
  48. powerpc64-unknown-linux-gnu)
  49. apt-get install -y --no-install-recommends \
  50. gcc-powerpc64-linux-gnu libc6-dev-ppc64-cross
  51. ;;
  52. powerpc64le-unknown-linux-gnu)
  53. apt-get install -y --no-install-recommends \
  54. gcc-powerpc64le-linux-gnu libc6-dev-ppc64el-cross
  55. ;;
  56. *)
  57. ;;
  58. esac
  59. }
  60. install_rust() {
  61. curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain=nightly
  62. rustc -V
  63. cargo -V
  64. }
  65. add_rustup_target() {
  66. if [[ $TARGET != $HOST ]]; then
  67. rustup target add $TARGET
  68. fi
  69. }
  70. configure_cargo() {
  71. if [[ $PREFIX ]]; then
  72. ${PREFIX}gcc -v
  73. mkdir -p .cargo
  74. cat >>.cargo/config <<EOF
  75. [target.$TARGET]
  76. linker = "${PREFIX}gcc"
  77. EOF
  78. fi
  79. }
  80. main() {
  81. if [[ ${DOCKER:-n} != "y" ]]; then
  82. install_deps
  83. install_qemu
  84. install_binutils
  85. install_c_toolchain
  86. install_rust
  87. add_rustup_target
  88. configure_cargo
  89. fi
  90. }
  91. main