#!/bin/sh # Copyright (C) 2026 Doan Luu Duc Tai # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . set -eu ROOT="$(CDPATH= cd -- "$(dirname -- "$0")/../.." && pwd)" SOURCE="$ROOT/.tools/wasi-source" SDK="$SOURCE/wasi-sdk-34.0-x86_64-linux" PREFIX="$ROOT/.tools/openssl-wasi" mkdir -p "$SOURCE" fetch() { file="$1" digest="$2" url="$3" if ! test -f "$file"; then curl --fail --location --retry 2 "$url" --output "$file.download" printf '%s %s\n' "$digest" "$file.download" | sha256sum --check --status mv "$file.download" "$file" fi printf '%s %s\n' "$digest" "$file" | sha256sum --check } fetch "$SOURCE/sdk.tar.gz" b761e3a0721dbae9c09a0059e5fdb2bf917d1b4a8a7b430fb3b5aafb0984b2c4 https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-34/wasi-sdk-34.0-x86_64-linux.tar.gz fetch "$SOURCE/openssl.tar.gz" a2157c2830efdec3788939b00c9b0638306d3f0bbb76dc4832ee503bb397df98 https://github.com/openssl/openssl/releases/download/openssl-3.6.5/openssl-3.6.5.tar.gz if ! test -x "$SDK/bin/clang"; then tar -xzf "$SOURCE/sdk.tar.gz" -C "$SOURCE"; fi if ! test -f "$SOURCE/openssl-3.6.5/Configure"; then tar -xzf "$SOURCE/openssl.tar.gz" -C "$SOURCE"; fi cp "$ROOT/infra/chat/openssl-wasi.conf" "$SOURCE/openssl-3.6.5/Configurations/99-stack-wasi.conf" cd "$SOURCE/openssl-3.6.5" env CC="$SDK/bin/clang" AR="$SDK/bin/llvm-ar" RANLIB="$SDK/bin/llvm-ranlib" CFLAGS='-O2 -D_WASI_EMULATED_GETPID -Dgetuid=getpagesize -Dgeteuid=getpagesize -Dgetgid=getpagesize -Dgetegid=getpagesize' LDFLAGS='-lwasi-emulated-getpid' ./Configure stack-wasi --prefix="$PREFIX" --libdir=lib --with-rand-seed=getrandom no-asm no-async no-autoload-config no-dso no-module no-posix-io no-secure-memory no-shared no-sock no-stdio no-thread-pool no-threads no-ui-console make -j"${CHAT_BUILD_JOBS:-8}" build_libs make install_dev sh "$ROOT/infra/chat/build-browser.sh"