install.sh 1.6 KB

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