File size: 2,685 Bytes
fc8f83a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | #!/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 ""
# --- Emscripten ---
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 ""
# --- SwiftWasm ---
echo "[2/2] Installing SwiftWasm..."
SWIFTWASM_DIR="${INSTALL_BASE}/swiftwasm"
# Detect OS and architecture
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
# Use a known stable SwiftWasm release
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 ""
|