17db96d56Sopenharmony_ci#!/bin/sh 27db96d56Sopenharmony_ciset -e 37db96d56Sopenharmony_ci 47db96d56Sopenharmony_ci# function 57db96d56Sopenharmony_ciusage() { 67db96d56Sopenharmony_ci echo "wasi-env - Run command with WASI-SDK" 77db96d56Sopenharmony_ci echo "" 87db96d56Sopenharmony_ci echo "wasi-env is a helper to set various environment variables to" 97db96d56Sopenharmony_ci echo "run configure and make with WASI-SDK. A WASI-SDK must be either" 107db96d56Sopenharmony_ci echo "installed at /opt/wasi-sdk or the env var 'WASI_SDK_PATH' must" 117db96d56Sopenharmony_ci echo "set to the root of a WASI-SDK." 127db96d56Sopenharmony_ci echo "" 137db96d56Sopenharmony_ci echo "Usage: wasi-env command [...]" 147db96d56Sopenharmony_ci echo "" 157db96d56Sopenharmony_ci echo " -h --help display this help and exit" 167db96d56Sopenharmony_ci echo "" 177db96d56Sopenharmony_ci} 187db96d56Sopenharmony_ci 197db96d56Sopenharmony_cicase $1 in 207db96d56Sopenharmony_ci -h|--help) 217db96d56Sopenharmony_ci usage 227db96d56Sopenharmony_ci exit 237db96d56Sopenharmony_ci ;; 247db96d56Sopenharmony_ciesac 257db96d56Sopenharmony_ci 267db96d56Sopenharmony_ciif test -z "$1"; then 277db96d56Sopenharmony_ci echo "ERROR: command required" >&2 287db96d56Sopenharmony_ci usage 297db96d56Sopenharmony_ci exit 1 307db96d56Sopenharmony_cifi 317db96d56Sopenharmony_ci 327db96d56Sopenharmony_ciWASI_SDK_PATH="${WASI_SDK_PATH:-/opt/wasi-sdk}" 337db96d56Sopenharmony_ciWASI_SYSROOT="${WASI_SDK_PATH}/share/wasi-sysroot" 347db96d56Sopenharmony_ci 357db96d56Sopenharmony_ciif ! test -x "${WASI_SDK_PATH}/bin/clang"; then 367db96d56Sopenharmony_ci echo "Error: ${WASI_SDK_PATH}/bin/clang does not exist." >&2 377db96d56Sopenharmony_ci exit 2 387db96d56Sopenharmony_cifi 397db96d56Sopenharmony_ci 407db96d56Sopenharmony_ciCC="${WASI_SDK_PATH}/bin/clang" 417db96d56Sopenharmony_ciCPP="${WASI_SDK_PATH}/bin/clang-cpp" 427db96d56Sopenharmony_ciCXX="${WASI_SDK_PATH}/bin/clang++" 437db96d56Sopenharmony_ci 447db96d56Sopenharmony_ci# --sysroot is required if WASI-SDK is not installed in /opt/wasi-sdk. 457db96d56Sopenharmony_ciif test "${WASI_SDK_PATH}" != "/opt/wasi-sdk"; then 467db96d56Sopenharmony_ci CC="${CC} --sysroot=${WASI_SYSROOT}" 477db96d56Sopenharmony_ci CPP="${CPP} --sysroot=${WASI_SYSROOT}" 487db96d56Sopenharmony_ci CXX="${CXX} --sysroot=${WASI_SYSROOT}" 497db96d56Sopenharmony_cifi 507db96d56Sopenharmony_ci 517db96d56Sopenharmony_ci# use ccache if available 527db96d56Sopenharmony_ciif command -v ccache >/dev/null 2>&1; then 537db96d56Sopenharmony_ci CC="ccache ${CC}" 547db96d56Sopenharmony_ci CPP="ccache ${CPP}" 557db96d56Sopenharmony_ci CXX="ccache ${CXX}" 567db96d56Sopenharmony_cifi 577db96d56Sopenharmony_ci 587db96d56Sopenharmony_ciLDSHARED="${WASI_SDK_PATH}/bin/wasm-ld" 597db96d56Sopenharmony_ciAR="${WASI_SDK_PATH}/bin/llvm-ar" 607db96d56Sopenharmony_ciRANLIB="${WASI_SDK_PATH}/bin/ranlib" 617db96d56Sopenharmony_ci 627db96d56Sopenharmony_ci# instruct pkg-config to use sysroot 637db96d56Sopenharmony_ciPKG_CONFIG_PATH="" 647db96d56Sopenharmony_ciPKG_CONFIG_LIBDIR="${WASI_SYSROOT}/lib/pkgconfig:${WASI_SYSROOT}/share/pkgconfig" 657db96d56Sopenharmony_ciPKG_CONFIG_SYSROOT_DIR="${WASI_SYSROOT}" 667db96d56Sopenharmony_ci 677db96d56Sopenharmony_ciPATH="${WASI_SDK_PATH}/bin:${PATH}" 687db96d56Sopenharmony_ci 697db96d56Sopenharmony_ciexport WASI_SDK_PATH WASI_SYSROOT 707db96d56Sopenharmony_ciexport CC CPP CXX LDSHARED AR RANLIB 717db96d56Sopenharmony_ciexport CFLAGS LDFLAGS 727db96d56Sopenharmony_ciexport PKG_CONFIG_PATH PKG_CONFIG_LIBDIR PKG_CONFIG_SYSROOT_DIR 737db96d56Sopenharmony_ciexport PATH 747db96d56Sopenharmony_ci 757db96d56Sopenharmony_ci# no exec, it makes arvg[0] path absolute. 767db96d56Sopenharmony_ci"$@" 77