12345678910111213set -eu1415die() {16 echo "build.sh: $*" >&217 exit 118}192021cd "$(dirname "$0")"222324command -v v >/dev/null 2>&1 || die 'V is not on PATH; install V 0.5.2 b9a2d87 (see AGENTS.md)'25[ "$(v version)" = 'V 0.5.2 b9a2d87' ] || die "Koh requires V 0.5.2 b9a2d87, found: $(v version)"2627host_target() {28 case "$(uname -s)" in29 Darwin) os=macos ;;30 Linux) os=linux ;;31 *) die "unsupported host OS: $(uname -s)" ;;32 esac33 case "$(uname -m)" in34 arm64|aarch64) cpu=aarch64 ;;35 x86_64|amd64) cpu=x86_64 ;;36 *) die "unsupported host CPU: $(uname -m)" ;;37 esac38 echo "$os-$cpu"39}4041native=$(host_target)42target=${KOH_TARGET:-$native}43case "$target" in44 macos-aarch64|linux-aarch64|linux-x86_64) ;;45 *) die "unsupported release target: $target (want macos-aarch64, linux-x86_64 or linux-aarch64)" ;;46esac47[ "$target" = "$native" ] || die "$target requires a native $target host or VM to retain garbage collection (this host is $native)"48out="build/releases/koh-$target"49mkdir -p build/releases5051case "$target" in52 macos-aarch64)53 v -prod -gc boehm -d use_bundled_libgc -arch arm64 \54 -cflags '-arch arm64 -mmacosx-version-min=11.0' -o "$out" src/koh.v55 56 codesign -f -s - "$out"57 ;;58 linux-aarch64|linux-x86_64)59 command -v cc >/dev/null 2>&1 || die 'Linux builds need a C compiler on PATH (cc)'60 v -prod -gc boehm -d use_bundled_libgc -cc cc \61 -ldflags '-static -s' -o "$out" src/koh.v62 ;;63esac6465echo "built $out"