install.sh 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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. powerpc64le-unknown-linux-gnu)
  14. apt-get install -y --no-install-recommends \
  15. qemu-user
  16. ;;
  17. esac
  18. }
  19. install_binutils() {
  20. case $TRAVIS_OS_NAME in
  21. osx)
  22. brew install binutils
  23. ;;
  24. *)
  25. ;;
  26. esac
  27. }
  28. install_c_toolchain() {
  29. case $TARGET in
  30. aarch64-unknown-linux-gnu)
  31. sudo apt-get install -y --no-install-recommends \
  32. gcc-aarch64-linux-gnu libc6-dev-arm64-cross
  33. ;;
  34. mips-unknown-linux-gnu)
  35. apt-get install -y --no-install-recommends \
  36. gcc-mips-linux-gnu libc6-dev-mips-cross
  37. ;;
  38. powerpc64le-unknown-linux-gnu)
  39. apt-get install -y --no-install-recommends \
  40. gcc-powerpc64le-linux-gnu libc6-dev-ppc64el-cross
  41. ;;
  42. *)
  43. ;;
  44. esac
  45. }
  46. install_rust() {
  47. curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain=nightly
  48. rustc -V
  49. cargo -V
  50. }
  51. add_rustup_target() {
  52. if [[ $TARGET != $HOST ]]; then
  53. rustup target add $TARGET
  54. fi
  55. }
  56. configure_cargo() {
  57. if [[ $PREFIX ]]; then
  58. ${PREFIX}gcc -v
  59. mkdir -p .cargo
  60. cat >>.cargo/config <<EOF
  61. [target.$TARGET]
  62. linker = "${PREFIX}gcc"
  63. EOF
  64. fi
  65. }
  66. main() {
  67. if [[ ${DOCKER:-n} != "y" ]]; then
  68. install_deps
  69. install_qemu
  70. install_binutils
  71. install_c_toolchain
  72. install_rust
  73. add_rustup_target
  74. configure_cargo
  75. fi
  76. }
  77. main