#!/usr/bin/env bash # Build embedded Windows core inside the self-sufficient builder image. # - image has LuaJIT pre-built: /opt/luajit2/src/{lua51.dll, libluajit-5.1.dll.a} # - import lib already installed at image build (libluajit-5.1.a, mingw lib dir) # Outputs: cmd/gui/bin/{llmsproxy.exe, lua51.dll} set -euo pipefail ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." && pwd)" BIN_DIR="$ROOT/cmd/gui/bin" IMAGE="${WIN_BUILDER_IMAGE:-modelrouter/win-builder}" PROXY="${GOPROXY:-https://goproxy.cn,direct}" command -v docker >/dev/null || { echo "docker required" exit 1 } if ! docker image inspect "$IMAGE" >/dev/null 2>&1; then echo "[win-core] building image $IMAGE ..." docker build -t "$IMAGE" "$ROOT/cmd/gui/docker/win-builder" fi mkdir -p "$BIN_DIR" echo "[win-core] cross-building llmsproxy.exe (windows/amd64, luajit) + lua51.dll ..." docker run --rm \ -v "$ROOT":/workspace \ -e GOPROXY="$PROXY" \ -w /workspace \ "$IMAGE" bash -c ' set -euo pipefail cp /opt/luajit2/src/lua51.dll /workspace/cmd/gui/bin/lua51.dll GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc \ go build -buildvcs=false -tags luajit -trimpath \ -o /workspace/cmd/gui/bin/llmsproxy.exe ./cmd/llmsproxy echo " -> core built" ' echo "[win-core] done: $BIN_DIR/llmsproxy.exe"