| #!/usr/bin/env bash |
| set -e |
|
|
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" |
| ROOT_DIR="$(dirname "$SCRIPT_DIR")" |
| INSTALL_BASE="${HOME}/wasm-toolchains" |
|
|
| mkdir -p "${INSTALL_BASE}" |
|
|
| echo "============================================" |
| echo "WASM Compiler Bridge - Toolchain Installer" |
| echo "Install dir: ${INSTALL_BASE}" |
| echo "============================================" |
| echo "" |
|
|
| |
| echo "[1/2] Installing Emscripten..." |
| EMSDK_DIR="${INSTALL_BASE}/emsdk" |
| if [ -d "${EMSDK_DIR}" ]; then |
| echo " Emscripten already exists at ${EMSDK_DIR}" |
| echo " Updating..." |
| cd "${EMSDK_DIR}" |
| git pull || true |
| else |
| echo " Cloning emsdk..." |
| git clone https://github.com/emscripten-core/emsdk.git "${EMSDK_DIR}" |
| cd "${EMSDK_DIR}" |
| fi |
|
|
| echo " Installing latest Emscripten (this may take several minutes)..." |
| ./emsdk install latest |
| ./emsdk activate latest |
|
|
| echo " Emscripten installed." |
| echo "" |
|
|
| |
| echo "[2/2] Installing SwiftWasm..." |
| SWIFTWASM_DIR="${INSTALL_BASE}/swiftwasm" |
|
|
| |
| ARCH=$(uname -m) |
| if [ "$ARCH" = "arm64" ]; then |
| SWIFT_ARCH="arm64" |
| else |
| SWIFT_ARCH="x86_64" |
| fi |
|
|
| OS=$(uname -s) |
| if [ "$OS" = "Linux" ]; then |
| SWIFT_OS="ubuntu20.04" |
| else |
| SWIFT_OS="osx" |
| fi |
|
|
| |
| SWIFTWASM_VERSION="swift-wasm-5.10-SNAPSHOT-2024-04-18-a" |
| SWIFTWASM_TARBALL="${SWIFTWASM_VERSION}-${SWIFT_OS}-${SWIFT_ARCH}.tar.gz" |
| SWIFTWASM_URL="https://github.com/swiftwasm/swift/releases/download/${SWIFTWASM_VERSION}/${SWIFTWASM_TARBALL}" |
|
|
| if [ -d "${SWIFTWASM_DIR}/usr/bin" ]; then |
| echo " SwiftWasm already exists at ${SWIFTWASM_DIR}" |
| else |
| mkdir -p "${SWIFTWASM_DIR}" |
| cd "${INSTALL_BASE}" |
| echo " Downloading ${SWIFTWASM_TARBALL}..." |
| if command -v wget >/dev/null 2>&1; then |
| wget -q --show-progress "${SWIFTWASM_URL}" -O "${SWIFTWASM_TARBALL}" || { |
| echo " wget failed. Trying curl..." |
| curl -L -o "${SWIFTWASM_TARBALL}" "${SWIFTWASM_URL}" |
| } |
| else |
| curl -L -o "${SWIFTWASM_TARBALL}" "${SWIFTWASM_URL}" |
| fi |
|
|
| echo " Extracting..." |
| tar xzf "${SWIFTWASM_TARBALL}" -C "${SWIFTWASM_DIR}" --strip-components=1 |
| rm -f "${SWIFTWASM_TARBALL}" |
| echo " SwiftWasm installed." |
| fi |
|
|
| echo "" |
| echo "============================================" |
| echo "Installation complete!" |
| echo "============================================" |
| echo "" |
| echo "To activate Emscripten in your current shell:" |
| echo " source ${EMSDK_DIR}/emsdk_env.sh" |
| echo "" |
| echo "The bridge server will auto-detect these paths:" |
| echo " EMSDK_PATH=${EMSDK_DIR}" |
| echo " SWIFTWASM_PATH=${SWIFTWASM_DIR}" |
| echo "" |
| echo "Start the bridge:" |
| echo " cd ${ROOT_DIR}" |
| echo " npm run dev" |
| echo "" |
|
|