install.sh 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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-dev-arm64-cross
  25. ;;
  26. powerpc64-unknown-linux-gnu)
  27. sudo apt-get install -y --no-install-recommends \
  28. gcc-powerpc64le-linux-gnu libc6-dev-ppc64le-cross
  29. ;;
  30. *)
  31. ;;
  32. esac
  33. }
  34. install_rust() {
  35. curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain=nightly
  36. rustc -V
  37. cargo -V
  38. }
  39. add_rustup_target() {
  40. if [[ $TARGET != $HOST ]]; then
  41. rustup target add $TARGET
  42. fi
  43. }
  44. configure_cargo() {
  45. if [[ $PREFIX ]]; then
  46. ${PREFIX}gcc -v
  47. mkdir -p .cargo
  48. cat >>.cargo/config <<EOF
  49. [target.$TARGET]
  50. linker = "${PREFIX}gcc"
  51. EOF
  52. fi
  53. }
  54. main() {
  55. if [[ -z $DOCKER ]]; then
  56. install_qemu
  57. install_binutils
  58. install_c_toolchain
  59. install_rust
  60. add_rustup_target
  61. configure_cargo
  62. fi
  63. }
  64. main