install.sh 1.2 KB

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