blob: f3e01c4af696db1c115c07287181afd1569a473e [file] [log] [blame]
#!/bin/bash
# Copyright 2020 The IREE Authors
#
# Licensed under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
# This script will download and setup the riscv-linux required toolchain and tool.
set -e
set -o pipefail
PREBUILT_DIR="${HOME}/riscv"
IREE_ARTIFACT_URL="https://sharkpublic.blob.core.windows.net/sharkpublic/GCP-Migration-Files"
read -p "Enter the riscv tools root path(press enter to use default path:${PREBUILT_DIR}): " INPUT_PATH
if [[ "${INPUT_PATH}" ]]; then
PREBUILT_DIR=${INPUT_PATH}
fi
echo "The riscv tool prefix path: ${PREBUILT_DIR}"
BOOTSTRAP_WORK_DIR="${PREBUILT_DIR}/.bootstrap"
if [[ "${OSTYPE}" == "linux-gnu" ]]; then
RISCV_CLANG_TOOLCHAIN_FILE_NAME="toolchain_iree_manylinux_2_28_20231012.tar.gz"
RISCV_CLANG_TOOLCHAIN_FILE_SHA="3af56a58551ed5ae7441214822461a5368fee9403d7c883762fa902489bfbff0"
QEMU_FILE_NAME="qemu-riscv_8.1.2_manylinux_2.28_20231026.tar.gz"
QEMU_FILE_SHA="dd77b39820d45b80bafab9155581578b4c625cb92fd6db9e9adbb9798fde3597"
TOOLCHAIN_PATH_PREFIX=${PREBUILT_DIR}/toolchain/clang/linux/RISCV
QEMU_PATH_PREFIX=${PREBUILT_DIR}/qemu/linux/RISCV
else
echo "${OSTYPE} is not supported."
exit 1
fi
function cleanup {
if [[ -d "${BOOTSTRAP_WORK_DIR}" ]]; then
rm -rf "${BOOTSTRAP_WORK_DIR}"
fi
}
# Call the cleanup function when this tool exits.
trap cleanup EXIT
# Download and install the toolchain from IREE-OSS GCS
download_file() {
local file_name="$1"
local install_path="$2"
local file_sha="$3"
echo "Install $1 to $2"
if [[ "$(ls -A $2)" ]]; then
read -p "The file already exists. Keep it (y/n)? " replaced
case ${replaced:0:1} in
y|Y )
echo "Skip download $1."
return
;;
* )
rm -rf "$2"
;;
esac
fi
echo "Download ${file_name} ..."
mkdir -p $install_path
wget --progress=bar:force:noscroll --directory-prefix="${BOOTSTRAP_WORK_DIR}" \
"${IREE_ARTIFACT_URL}/${file_name}" && \
echo "${file_sha} ${BOOTSTRAP_WORK_DIR}/${file_name}" | sha256sum -c -
echo "Extract ${file_name} ..."
tar -C "${install_path}" -xf "${BOOTSTRAP_WORK_DIR}/${file_name}" --no-same-owner \
--strip-components=1
}
mkdir -p "${BOOTSTRAP_WORK_DIR}"
read -p "Install RISCV clang toolchain(y/n)? " answer
case ${answer:0:1} in
y|Y )
download_file "${RISCV_CLANG_TOOLCHAIN_FILE_NAME}" \
"${TOOLCHAIN_PATH_PREFIX}" \
"${RISCV_CLANG_TOOLCHAIN_FILE_SHA}"
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
echo " PLEASE run 'export RISCV_TOOLCHAIN_ROOT=${TOOLCHAIN_PATH_PREFIX}' "
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
;;
* )
echo "Skip RISCV clang toolchain."
;;
esac
read -p "Install RISCV qemu(y/n)? " answer
case ${answer:0:1} in
y|Y )
download_file "${QEMU_FILE_NAME}" \
"${QEMU_PATH_PREFIX}" \
"${QEMU_FILE_SHA}"
;;
* )
echo "Skip RISCV qemu."
;;
esac
echo "Bootstrap finished."