install.sh 1.6 KB

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