blob: fe7ca0fbcc9a4a94612a328093ea3b8b8a3dfb20 [file] [log] [blame]
Hong-Rong Hsua28d9b32020-12-14 14:13:08 +08001#!/bin/bash
2
Geoffrey Martin-Noble552d3f82021-05-25 17:56:09 -07003# Copyright 2020 The IREE Authors
Hong-Rong Hsua28d9b32020-12-14 14:13:08 +08004#
Geoffrey Martin-Noble552d3f82021-05-25 17:56:09 -07005# 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 Hsua28d9b32020-12-14 14:13:08 +08008
9# This script will download and setup the riscv-linux required toolchain and tool.
10
11set -e
12set -o pipefail
13
CindyLiu7cb39b02022-09-27 19:49:35 +000014PREBUILT_DIR="${HOME}/riscv"
15IREE_ARTIFACT_URL="https://storage.googleapis.com/iree-shared-files"
Hong-Rong Hsua28d9b32020-12-14 14:13:08 +080016
17read -p "Enter the riscv tools root path(press enter to use default path:${PREBUILT_DIR}): " INPUT_PATH
18if [[ "${INPUT_PATH}" ]]; then
19 PREBUILT_DIR=${INPUT_PATH}
20fi
21echo "The riscv tool prefix path: ${PREBUILT_DIR}"
22
CindyLiu7cb39b02022-09-27 19:49:35 +000023BOOTSTRAP_WORK_DIR="${PREBUILT_DIR}/.bootstrap"
24
Hong-Rong Hsua28d9b32020-12-14 14:13:08 +080025if [[ "${OSTYPE}" == "linux-gnu" ]]; then
CindyLiu1af382f2023-10-16 16:58:11 -070026 RISCV_CLANG_TOOLCHAIN_FILE_NAME="toolchain_iree_manylinux_2_28_20231012.tar.gz"
27 RISCV_CLANG_TOOLCHAIN_FILE_SHA="3af56a58551ed5ae7441214822461a5368fee9403d7c883762fa902489bfbff0"
CindyLiu7cb39b02022-09-27 19:49:35 +000028
CindyLiu82233442023-10-30 09:32:48 -070029 QEMU_FILE_NAME="qemu-riscv_8.1.2_manylinux_2.28_20231026.tar.gz"
30 QEMU_FILE_SHA="dd77b39820d45b80bafab9155581578b4c625cb92fd6db9e9adbb9798fde3597"
Hong-Rong Hsua28d9b32020-12-14 14:13:08 +080031
32 TOOLCHAIN_PATH_PREFIX=${PREBUILT_DIR}/toolchain/clang/linux/RISCV
33 QEMU_PATH_PREFIX=${PREBUILT_DIR}/qemu/linux/RISCV
Hong-Rong Hsua28d9b32020-12-14 14:13:08 +080034else
35 echo "${OSTYPE} is not supported."
36 exit 1
37fi
38
39function cleanup {
CindyLiu7cb39b02022-09-27 19:49:35 +000040 if [[ -d "${BOOTSTRAP_WORK_DIR}" ]]; then
41 rm -rf "${BOOTSTRAP_WORK_DIR}"
Hong-Rong Hsua28d9b32020-12-14 14:13:08 +080042 fi
43}
44
45# Call the cleanup function when this tool exits.
46trap cleanup EXIT
47
CindyLiu7cb39b02022-09-27 19:49:35 +000048# Download and install the toolchain from IREE-OSS GCS
Hong-Rong Hsua28d9b32020-12-14 14:13:08 +080049download_file() {
CindyLiu7cb39b02022-09-27 19:49:35 +000050 local file_name="$1"
51 local install_path="$2"
52 local file_sha="$3"
Hong-Rong Hsua28d9b32020-12-14 14:13:08 +080053
CindyLiu7cb39b02022-09-27 19:49:35 +000054 echo "Install $1 to $2"
55 if [[ "$(ls -A $2)" ]]; then
Hong-Rong Hsua28d9b32020-12-14 14:13:08 +080056 read -p "The file already exists. Keep it (y/n)? " replaced
57 case ${replaced:0:1} in
58 y|Y )
CindyLiu7cb39b02022-09-27 19:49:35 +000059 echo "Skip download $1."
Hong-Rong Hsua28d9b32020-12-14 14:13:08 +080060 return
61 ;;
62 * )
CindyLiu7cb39b02022-09-27 19:49:35 +000063 rm -rf "$2"
Hong-Rong Hsua28d9b32020-12-14 14:13:08 +080064 ;;
65 esac
66 fi
67
CindyLiu7cb39b02022-09-27 19:49:35 +000068 echo "Download ${file_name} ..."
Hong-Rong Hsua28d9b32020-12-14 14:13:08 +080069 mkdir -p $install_path
CindyLiu7cb39b02022-09-27 19:49:35 +000070 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 Hsua28d9b32020-12-14 14:13:08 +080076}
77
CindyLiu7cb39b02022-09-27 19:49:35 +000078mkdir -p "${BOOTSTRAP_WORK_DIR}"
Hong-Rong Hsua28d9b32020-12-14 14:13:08 +080079
80read -p "Install RISCV clang toolchain(y/n)? " answer
81case ${answer:0:1} in
82 y|Y )
CindyLiu7cb39b02022-09-27 19:49:35 +000083 download_file "${RISCV_CLANG_TOOLCHAIN_FILE_NAME}" \
84 "${TOOLCHAIN_PATH_PREFIX}" \
85 "${RISCV_CLANG_TOOLCHAIN_FILE_SHA}"
86
CindyLiuf02a32f2021-04-19 22:27:15 +000087 echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
88 echo " PLEASE run 'export RISCV_TOOLCHAIN_ROOT=${TOOLCHAIN_PATH_PREFIX}' "
89 echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
Hong-Rong Hsua28d9b32020-12-14 14:13:08 +080090 ;;
91 * )
92 echo "Skip RISCV clang toolchain."
93 ;;
94esac
95
96read -p "Install RISCV qemu(y/n)? " answer
97case ${answer:0:1} in
98 y|Y )
CindyLiu7cb39b02022-09-27 19:49:35 +000099 download_file "${QEMU_FILE_NAME}" \
100 "${QEMU_PATH_PREFIX}" \
101 "${QEMU_FILE_SHA}"
Hong-Rong Hsua28d9b32020-12-14 14:13:08 +0800102 ;;
103 * )
104 echo "Skip RISCV qemu."
105 ;;
106esac
107
108echo "Bootstrap finished."