Hong-Rong Hsu | a28d9b3 | 2020-12-14 14:13:08 +0800 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | |
Geoffrey Martin-Noble | 552d3f8 | 2021-05-25 17:56:09 -0700 | [diff] [blame] | 3 | # Copyright 2020 The IREE Authors |
Hong-Rong Hsu | a28d9b3 | 2020-12-14 14:13:08 +0800 | [diff] [blame] | 4 | # |
Geoffrey Martin-Noble | 552d3f8 | 2021-05-25 17:56:09 -0700 | [diff] [blame] | 5 | # Licensed under the Apache License v2.0 with LLVM Exceptions. |
| 6 | # See https://llvm.org/LICENSE.txt for license information. |
| 7 | # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
Hong-Rong Hsu | a28d9b3 | 2020-12-14 14:13:08 +0800 | [diff] [blame] | 8 | |
| 9 | # This script will download and setup the riscv-linux required toolchain and tool. |
| 10 | |
| 11 | set -e |
| 12 | set -o pipefail |
| 13 | |
CindyLiu | 7cb39b0 | 2022-09-27 19:49:35 +0000 | [diff] [blame] | 14 | PREBUILT_DIR="${HOME}/riscv" |
| 15 | IREE_ARTIFACT_URL="https://storage.googleapis.com/iree-shared-files" |
Hong-Rong Hsu | a28d9b3 | 2020-12-14 14:13:08 +0800 | [diff] [blame] | 16 | |
| 17 | read -p "Enter the riscv tools root path(press enter to use default path:${PREBUILT_DIR}): " INPUT_PATH |
| 18 | if [[ "${INPUT_PATH}" ]]; then |
| 19 | PREBUILT_DIR=${INPUT_PATH} |
| 20 | fi |
| 21 | echo "The riscv tool prefix path: ${PREBUILT_DIR}" |
| 22 | |
CindyLiu | 7cb39b0 | 2022-09-27 19:49:35 +0000 | [diff] [blame] | 23 | BOOTSTRAP_WORK_DIR="${PREBUILT_DIR}/.bootstrap" |
| 24 | |
Hong-Rong Hsu | a28d9b3 | 2020-12-14 14:13:08 +0800 | [diff] [blame] | 25 | if [[ "${OSTYPE}" == "linux-gnu" ]]; then |
CindyLiu | 1af382f | 2023-10-16 16:58:11 -0700 | [diff] [blame] | 26 | RISCV_CLANG_TOOLCHAIN_FILE_NAME="toolchain_iree_manylinux_2_28_20231012.tar.gz" |
| 27 | RISCV_CLANG_TOOLCHAIN_FILE_SHA="3af56a58551ed5ae7441214822461a5368fee9403d7c883762fa902489bfbff0" |
CindyLiu | 7cb39b0 | 2022-09-27 19:49:35 +0000 | [diff] [blame] | 28 | |
CindyLiu | 8223344 | 2023-10-30 09:32:48 -0700 | [diff] [blame] | 29 | QEMU_FILE_NAME="qemu-riscv_8.1.2_manylinux_2.28_20231026.tar.gz" |
| 30 | QEMU_FILE_SHA="dd77b39820d45b80bafab9155581578b4c625cb92fd6db9e9adbb9798fde3597" |
Hong-Rong Hsu | a28d9b3 | 2020-12-14 14:13:08 +0800 | [diff] [blame] | 31 | |
| 32 | TOOLCHAIN_PATH_PREFIX=${PREBUILT_DIR}/toolchain/clang/linux/RISCV |
| 33 | QEMU_PATH_PREFIX=${PREBUILT_DIR}/qemu/linux/RISCV |
Hong-Rong Hsu | a28d9b3 | 2020-12-14 14:13:08 +0800 | [diff] [blame] | 34 | else |
| 35 | echo "${OSTYPE} is not supported." |
| 36 | exit 1 |
| 37 | fi |
| 38 | |
| 39 | function cleanup { |
CindyLiu | 7cb39b0 | 2022-09-27 19:49:35 +0000 | [diff] [blame] | 40 | if [[ -d "${BOOTSTRAP_WORK_DIR}" ]]; then |
| 41 | rm -rf "${BOOTSTRAP_WORK_DIR}" |
Hong-Rong Hsu | a28d9b3 | 2020-12-14 14:13:08 +0800 | [diff] [blame] | 42 | fi |
| 43 | } |
| 44 | |
| 45 | # Call the cleanup function when this tool exits. |
| 46 | trap cleanup EXIT |
| 47 | |
CindyLiu | 7cb39b0 | 2022-09-27 19:49:35 +0000 | [diff] [blame] | 48 | # Download and install the toolchain from IREE-OSS GCS |
Hong-Rong Hsu | a28d9b3 | 2020-12-14 14:13:08 +0800 | [diff] [blame] | 49 | download_file() { |
CindyLiu | 7cb39b0 | 2022-09-27 19:49:35 +0000 | [diff] [blame] | 50 | local file_name="$1" |
| 51 | local install_path="$2" |
| 52 | local file_sha="$3" |
Hong-Rong Hsu | a28d9b3 | 2020-12-14 14:13:08 +0800 | [diff] [blame] | 53 | |
CindyLiu | 7cb39b0 | 2022-09-27 19:49:35 +0000 | [diff] [blame] | 54 | echo "Install $1 to $2" |
| 55 | if [[ "$(ls -A $2)" ]]; then |
Hong-Rong Hsu | a28d9b3 | 2020-12-14 14:13:08 +0800 | [diff] [blame] | 56 | read -p "The file already exists. Keep it (y/n)? " replaced |
| 57 | case ${replaced:0:1} in |
| 58 | y|Y ) |
CindyLiu | 7cb39b0 | 2022-09-27 19:49:35 +0000 | [diff] [blame] | 59 | echo "Skip download $1." |
Hong-Rong Hsu | a28d9b3 | 2020-12-14 14:13:08 +0800 | [diff] [blame] | 60 | return |
| 61 | ;; |
| 62 | * ) |
CindyLiu | 7cb39b0 | 2022-09-27 19:49:35 +0000 | [diff] [blame] | 63 | rm -rf "$2" |
Hong-Rong Hsu | a28d9b3 | 2020-12-14 14:13:08 +0800 | [diff] [blame] | 64 | ;; |
| 65 | esac |
| 66 | fi |
| 67 | |
CindyLiu | 7cb39b0 | 2022-09-27 19:49:35 +0000 | [diff] [blame] | 68 | echo "Download ${file_name} ..." |
Hong-Rong Hsu | a28d9b3 | 2020-12-14 14:13:08 +0800 | [diff] [blame] | 69 | mkdir -p $install_path |
CindyLiu | 7cb39b0 | 2022-09-27 19:49:35 +0000 | [diff] [blame] | 70 | wget --progress=bar:force:noscroll --directory-prefix="${BOOTSTRAP_WORK_DIR}" \ |
| 71 | "${IREE_ARTIFACT_URL}/${file_name}" && \ |
| 72 | echo "${file_sha} ${BOOTSTRAP_WORK_DIR}/${file_name}" | sha256sum -c - |
| 73 | echo "Extract ${file_name} ..." |
| 74 | tar -C "${install_path}" -xf "${BOOTSTRAP_WORK_DIR}/${file_name}" --no-same-owner \ |
| 75 | --strip-components=1 |
Hong-Rong Hsu | a28d9b3 | 2020-12-14 14:13:08 +0800 | [diff] [blame] | 76 | } |
| 77 | |
CindyLiu | 7cb39b0 | 2022-09-27 19:49:35 +0000 | [diff] [blame] | 78 | mkdir -p "${BOOTSTRAP_WORK_DIR}" |
Hong-Rong Hsu | a28d9b3 | 2020-12-14 14:13:08 +0800 | [diff] [blame] | 79 | |
| 80 | read -p "Install RISCV clang toolchain(y/n)? " answer |
| 81 | case ${answer:0:1} in |
| 82 | y|Y ) |
CindyLiu | 7cb39b0 | 2022-09-27 19:49:35 +0000 | [diff] [blame] | 83 | download_file "${RISCV_CLANG_TOOLCHAIN_FILE_NAME}" \ |
| 84 | "${TOOLCHAIN_PATH_PREFIX}" \ |
| 85 | "${RISCV_CLANG_TOOLCHAIN_FILE_SHA}" |
| 86 | |
CindyLiu | f02a32f | 2021-04-19 22:27:15 +0000 | [diff] [blame] | 87 | echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" |
| 88 | echo " PLEASE run 'export RISCV_TOOLCHAIN_ROOT=${TOOLCHAIN_PATH_PREFIX}' " |
| 89 | echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" |
Hong-Rong Hsu | a28d9b3 | 2020-12-14 14:13:08 +0800 | [diff] [blame] | 90 | ;; |
| 91 | * ) |
| 92 | echo "Skip RISCV clang toolchain." |
| 93 | ;; |
| 94 | esac |
| 95 | |
| 96 | read -p "Install RISCV qemu(y/n)? " answer |
| 97 | case ${answer:0:1} in |
| 98 | y|Y ) |
CindyLiu | 7cb39b0 | 2022-09-27 19:49:35 +0000 | [diff] [blame] | 99 | download_file "${QEMU_FILE_NAME}" \ |
| 100 | "${QEMU_PATH_PREFIX}" \ |
| 101 | "${QEMU_FILE_SHA}" |
Hong-Rong Hsu | a28d9b3 | 2020-12-14 14:13:08 +0800 | [diff] [blame] | 102 | ;; |
| 103 | * ) |
| 104 | echo "Skip RISCV qemu." |
| 105 | ;; |
| 106 | esac |
| 107 | |
| 108 | echo "Bootstrap finished." |