#!/bin/sh # Executing by the root Makefile, typically within the sledge-dev build container echo "Setting up toolchain environment" # Get the path of this repo SYS_SRC_PREFIX=${SYS_SRC_PREFIX:-"$( cd "$(dirname "$(dirname "${0}")")" || exit 1 pwd -P )"} # And check for the presence of this script to make sure we got it right if [ ! -x "${SYS_SRC_PREFIX}/install.sh" ]; then echo "Unable to find the install script" >&2 exit 1 fi SYS_NAME='sledge' COMPILER='awsm' COMPILER_EXECUTABLE='silverfish' # /opt/sledge SYS_PREFIX=${SYS_PREFIX:-"/opt/${SYS_NAME}"} # /sledge, where the sledge repo is mounted from the host SYS_SRC_PREFIX=${SYS_SRC_PREFIX:-"/${SYS_NAME}"} # The release directory containing the binary of the aWsm compiler SYS_COMPILER_REL_DIR=${SYS_COMPILER_REL_DIR:-"${SYS_SRC_PREFIX}/${COMPILER}/target/release"} # /opt/sledge/bin? SYS_BIN_DIR=${SYS_BIN_DIR:-"${SYS_PREFIX}/bin"} # /opt/sledge/lib? SYS_LIB_DIR=${SYS_LIB_DIR:-"${SYS_PREFIX}/lib"} # The first argument can be either wasi or wasmception. This determines the system interface used # The default is wasmception # Currently, WASI is not actually supported by the runtime. if [ $# -eq 0 ] || [ "$1" = "wasmception" ]; then echo "Setting up for wasmception" WASM_PREFIX=${WASM_PREFIX:-"${SYS_SRC_PREFIX}/${COMPILER}/wasmception"} WASM_BIN=${WASM_BIN:-"${WASM_PREFIX}/dist/bin"} WASM_SYSROOT=${WASM_SYSROOT:-"${WASM_PREFIX}/sysroot"} WASM_TARGET=${WASM_TARGET:-"wasm32-unknown-unknown-wasm"} WASM_BIN_PREFIX=${WASM_BIN_PREFIX:-"$WASM_TARGET"} WASM_TOOLS=ar elif [ "$1" = "wasi" ]; then echo "Setting up for wasi-sdk" WASM_PREFIX=${WASM_PREFIX:-${WASM_SDK:-"/opt/wasi-sdk"}} WASM_BIN=${WASM_BIN:-"${WASM_PREFIX}/bin"} WASM_SYSROOT=${WASM_SYSROOT:-"${WASM_PREFIX}/share/sysroot"} WASM_TARGET=${WASM_TARGET:-"wasm32-wasi"} WASM_BIN_PREFIX=${WASM_BIN_PREFIX:-"$WASM_TARGET"} WASM_TOOLS=ar dwarfdump nm ranlib size fi rm -f "${SYS_BIN_DIR}"/* install -d -v "$SYS_BIN_DIR" || exit 1 # Link each of the binaries in the system bin directory BINS=${COMPILER_EXECUTABLE} for bin in $BINS; do # i.e. ./silverfish/target/release/silverfish -> /opt/sledge/bin/silverfish ln -sfv "${SYS_COMPILER_REL_DIR}/${bin}" "${SYS_BIN_DIR}/${bin}" done for file in clang clang++; do wrapper_file="$(mktemp)" cat >"$wrapper_file" <