install.sh 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  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. mipsel-unknown-linux-gnu | \
  13. powerpc64le-unknown-linux-gnu)
  14. apt-get install -y --no-install-recommends \
  15. qemu-user
  16. ;;
  17. mips-unknown-linux-gnu | \
  18. powerpc64-unknown-linux-gnu)
  19. dpkg --add-architecture i386
  20. apt-get update
  21. apt-get install -y --no-install-recommends \
  22. qemu-user:i386
  23. ;;
  24. esac
  25. }
  26. install_binutils() {
  27. case $TRAVIS_OS_NAME in
  28. osx)
  29. brew install binutils
  30. ;;
  31. esac
  32. case $TARGET in
  33. thumbv*-none-eabi)
  34. sudo apt-get install -y --no-install-recommends \
  35. gcc-arm-none-eabi
  36. ;;
  37. esac
  38. }
  39. install_c_toolchain() {
  40. case $TARGET in
  41. aarch64-unknown-linux-gnu)
  42. sudo apt-get install -y --no-install-recommends \
  43. gcc-aarch64-linux-gnu libc6-dev-arm64-cross
  44. ;;
  45. i586-unknown-linux-gnu)
  46. apt-get install -y --no-install-recommends \
  47. gcc libc6-dev-i386 lib32gcc-5-dev
  48. ;;
  49. mips-unknown-linux-gnu)
  50. apt-get install -y --no-install-recommends \
  51. gcc gcc-mips-linux-gnu libc6-dev libc6-dev-mips-cross
  52. ;;
  53. mipsel-unknown-linux-gnu)
  54. apt-get install -y --no-install-recommends \
  55. gcc gcc-mipsel-linux-gnu libc6-dev libc6-dev-mipsel-cross
  56. ;;
  57. powerpc64-unknown-linux-gnu)
  58. apt-get install -y --no-install-recommends \
  59. gcc gcc-powerpc64-linux-gnu libc6-dev libc6-dev-ppc64-cross
  60. ;;
  61. powerpc64le-unknown-linux-gnu)
  62. apt-get install -y --no-install-recommends \
  63. gcc gcc-powerpc64le-linux-gnu libc6-dev libc6-dev-ppc64el-cross
  64. ;;
  65. esac
  66. }
  67. install_rust() {
  68. curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain=nightly
  69. rustc -V
  70. cargo -V
  71. }
  72. add_rustup_target() {
  73. if [[ $TARGET != $HOST && ${CARGO:-cargo} == "cargo" ]]; then
  74. rustup target add $TARGET
  75. fi
  76. }
  77. install_xargo() {
  78. if [[ $CARGO == "xargo" ]]; then
  79. curl -sf "https://raw.githubusercontent.com/japaric/rust-everywhere/master/install.sh" | \
  80. bash -s -- --from japaric/xargo --at $HOME/.cargo/bin
  81. fi
  82. }
  83. configure_cargo() {
  84. if [[ $PREFIX ]]; then
  85. ${PREFIX}gcc -v
  86. mkdir -p .cargo
  87. cat >>.cargo/config <<EOF
  88. [target.$TARGET]
  89. linker = "${PREFIX}gcc"
  90. EOF
  91. fi
  92. }
  93. main() {
  94. if [[ ${DOCKER:-n} != "y" ]]; then
  95. install_deps
  96. install_qemu
  97. install_binutils
  98. install_c_toolchain
  99. install_rust
  100. add_rustup_target
  101. install_xargo
  102. configure_cargo
  103. fi
  104. }
  105. main