install.sh 2.0 KB

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