| #!/bin/sh |
| set -e |
| |
| # function |
| usage() { |
| echo "wasi-env - Run command with WASI-SDK" |
| echo "" |
| echo "wasi-env is a helper to set various environment variables to" |
| echo "run configure and make with WASI-SDK. A WASI-SDK must be either" |
| echo "installed at /opt/wasi-sdk or the env var 'WASI_SDK_PATH' must" |
| echo "set to the root of a WASI-SDK." |
| echo "" |
| echo "Usage: wasi-env command [...]" |
| echo "" |
| echo " -h --help display this help and exit" |
| echo "" |
| } |
| |
| case $1 in |
| -h|--help) |
| usage |
| exit |
| ;; |
| esac |
| |
| if test -z "$1"; then |
| echo "ERROR: command required" >&2 |
| usage |
| exit 1 |
| fi |
| |
| WASI_SDK_PATH="${WASI_SDK_PATH:-/opt/wasi-sdk}" |
| WASI_SYSROOT="${WASI_SDK_PATH}/share/wasi-sysroot" |
| |
| if ! test -x "${WASI_SDK_PATH}/bin/clang"; then |
| echo "Error: ${WASI_SDK_PATH}/bin/clang does not exist." >&2 |
| exit 2 |
| fi |
| |
| CC="${WASI_SDK_PATH}/bin/clang" |
| CPP="${WASI_SDK_PATH}/bin/clang-cpp" |
| CXX="${WASI_SDK_PATH}/bin/clang++" |
| |
| # --sysroot is required if WASI-SDK is not installed in /opt/wasi-sdk. |
| if test "${WASI_SDK_PATH}" != "/opt/wasi-sdk"; then |
| CC="${CC} --sysroot=${WASI_SYSROOT}" |
| CPP="${CPP} --sysroot=${WASI_SYSROOT}" |
| CXX="${CXX} --sysroot=${WASI_SYSROOT}" |
| fi |
| |
| # use ccache if available |
| if command -v ccache >/dev/null 2>&1; then |
| CC="ccache ${CC}" |
| CPP="ccache ${CPP}" |
| CXX="ccache ${CXX}" |
| fi |
| |
| LDSHARED="${WASI_SDK_PATH}/bin/wasm-ld" |
| AR="${WASI_SDK_PATH}/bin/llvm-ar" |
| RANLIB="${WASI_SDK_PATH}/bin/ranlib" |
| |
| # instruct pkg-config to use sysroot |
| PKG_CONFIG_PATH="" |
| PKG_CONFIG_LIBDIR="${WASI_SYSROOT}/lib/pkgconfig:${WASI_SYSROOT}/share/pkgconfig" |
| PKG_CONFIG_SYSROOT_DIR="${WASI_SYSROOT}" |
| |
| PATH="${WASI_SDK_PATH}/bin:${PATH}" |
| |
| export WASI_SDK_PATH WASI_SYSROOT |
| export CC CPP CXX LDSHARED AR RANLIB |
| export CFLAGS LDFLAGS |
| export PKG_CONFIG_PATH PKG_CONFIG_LIBDIR PKG_CONFIG_SYSROOT_DIR |
| export PATH |
| |
| # no exec, it makes arvg[0] path absolute. |
| "$@" |