preparation.sh 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. #!/bin/bash
  2. readonly BUILD_CONTENT="/tmp/build_content"
  3. readonly WASI_SDK_VER=11.0
  4. readonly WASI_SDK_FILE="wasi-sdk-${WASI_SDK_VER}-linux.tar.gz"
  5. readonly WABT_VER=1.0.19
  6. readonly WABT_FILE="wabt-${WABT_VER}-ubuntu.tar.gz"
  7. readonly CMAKE_VER=3.16.2
  8. readonly CMAKE_FILE="cmake-${CMAKE_VER}-Linux-x86_64.sh"
  9. readonly BINARYEN_VER=version_97
  10. readonly BINARYEN_FILE="binaryen-${BINARYEN_VER}-x86_64-linux.tar.gz"
  11. readonly BAZEL_VER=3.7.0
  12. readonly BAZEL_FILE=bazel-${BAZEL_VER}-installer-linux-x86_64.sh
  13. function DEBUG() {
  14. [[ -n $(env | grep "\<DEBUG\>") ]]
  15. }
  16. #
  17. # install dependency
  18. function install_deps() {
  19. apt update
  20. apt install -y lsb-release wget software-properties-common \
  21. build-essential git tree zip unzip
  22. }
  23. #
  24. # install clang
  25. function install_clang() {
  26. if [[ ! -f llvm.sh ]]; then
  27. wget https://apt.llvm.org/llvm.sh
  28. fi
  29. chmod a+x llvm.sh
  30. ./llvm.sh 11
  31. }
  32. #
  33. # install wasi-sdk
  34. function install_wasi-sdk() {
  35. if [[ ! -f ${WASI_SDK_FILE} ]]; then
  36. wget https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-11/${WASI_SDK_FILE}
  37. fi
  38. tar zxf ${WASI_SDK_FILE} -C /opt
  39. ln -sf /opt/wasi-sdk-${WASI_SDK_VER} /opt/wasi-sdk
  40. ln -sf /opt/wasi-sdk/lib/clang/10.0.0/lib/wasi/ /usr/lib/llvm-11/lib/clang/11.0.1/lib/
  41. }
  42. #
  43. # install wabt
  44. function install_wabt() {
  45. if [[ ! -f ${WABT_FILE} ]]; then
  46. wget https://github.com/WebAssembly/wabt/releases/download/${WABT_VER}/${WABT_FILE}
  47. fi
  48. tar zxf ${WABT_FILE} -C /opt
  49. ln -sf /opt/wabt-${WABT_VER} /opt/wabt
  50. }
  51. #
  52. # install cmake
  53. function install_cmake() {
  54. if [[ ! -f cmake-${CMAKE_VER}-Linux-x86_64.sh ]]; then
  55. wget https://github.com/Kitware/CMake/releases/download/v${CMAKE_VER}/${CMAKE_FILE}
  56. fi
  57. chmod a+x ${CMAKE_FILE}
  58. mkdir /opt/cmake
  59. ./${CMAKE_FILE} --prefix=/opt/cmake --skip-license
  60. ln -sf /opt/cmake/bin/cmake /usr/local/bin/cmake
  61. }
  62. #
  63. # install emsdk
  64. function install_emsdk() {
  65. cd /opt
  66. git clone https://github.com/emscripten-core/emsdk.git
  67. cd emsdk
  68. git pull
  69. ./emsdk install latest
  70. ./emsdk activate latest
  71. echo "source /opt/emsdk/emsdk_env.sh" >> ${HOME}/.bashrc
  72. }
  73. #
  74. # install binaryen
  75. function install_binaryen() {
  76. if [[ ! -f ${BINARYEN_FILE} ]]; then
  77. wget https://github.com/WebAssembly/binaryen/releases/download/${BINARYEN_VER}/${BINARYEN_FILE}
  78. fi
  79. tar zxf ${BINARYEN_FILE} -C /opt
  80. ln -sf /opt/binaryen-${BINARYEN_VER} /opt/binaryen
  81. }
  82. #
  83. # install bazel
  84. function install_bazel() {
  85. if [[ ! -f ${BAZEL_FILE} ]]; then
  86. wget https://github.com/bazelbuild/bazel/releases/download/${BAZEL_VER}/${BAZEL_FILE}
  87. fi
  88. chmod a+x ${BAZEL_FILE}
  89. ./${BAZEL_FILE}
  90. }
  91. #
  92. # MAIN
  93. DEBUG && set -xevu
  94. if [[ ! -d ${BUILD_CONTENT} ]]; then
  95. mkdir ${BUILD_CONTENT}
  96. fi
  97. cd ${BUILD_CONTENT}
  98. if DEBUG; then
  99. $@
  100. else
  101. install_deps \
  102. && install_clang \
  103. && install_wasi \
  104. && install_wabt \
  105. && install_cmake \
  106. && install_emsdk \
  107. && install_binaryen \
  108. && install_bazel
  109. fi
  110. cd - > /dev/null
  111. DEBUG && set +xevu