build(lite): enable Windows lite-backend cross-compile (.exe verified)
`build.sh --lite-backend --win-release` now cross-compiles a working ObsidianDragonLite.exe with the real SDXL backend: - Artifact platform follows the cross target: when only --win-release is requested, auto-select build/lite-backend/windows/ (previously always the host artifact, which would link a Linux .a into a Windows .exe). - Link the Win32 system libs a Rust x86_64-pc-windows-gnu staticlib pulls in (rustls/schannel, ring, dirs, std) via DRAGONX_LITE_BACKEND_EXTRA_LIBS. The set is rustc's `--print native-static-libs` for the backend (winapi_* shims mapped to real mingw import libs); all 21 exist in mingw-w64. Verified end to end on Linux: - scripts/build-lite-backend-artifact.sh --platform windows cross-builds the backend to x86_64-pc-windows-gnu (~105 MB .a); rustls/ring cross-compile clean (no openssl blocker); all required litelib_* symbols present. - build.sh --lite-backend --win-release -> release/windows/ObsidianDragonLite- <ver>.exe (PE32+ GUI x86-64, INCBIN-embedded, ~170 MB) + zip, with the same full-node-asset exclusion as Linux. Not yet done: running the .exe on real Windows (cross-compiled only). Plan updated. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
12
build.sh
12
build.sh
@@ -119,11 +119,15 @@ fi
|
||||
# scripts/build-lite-backend-artifact.sh. Auto-discovers build/lite-backend/<platform>/;
|
||||
# override the directory with DRAGONX_LITE_BACKEND_DIR.
|
||||
if $DO_LITE_BACKEND; then
|
||||
# Artifact platform follows the cross target when exactly one non-host release is requested,
|
||||
# so `--lite-backend --win-release` links the Windows backend (not the host's) automatically.
|
||||
case "$(uname -s)" in
|
||||
Linux) lb_platform="linux" ;;
|
||||
Darwin) lb_platform="macos" ;;
|
||||
*) lb_platform="linux" ;;
|
||||
esac
|
||||
if $DO_WIN && ! $DO_LINUX && ! $DO_MAC; then lb_platform="windows"; fi
|
||||
if $DO_MAC && ! $DO_LINUX && ! $DO_WIN; then lb_platform="macos"; fi
|
||||
lb_dir="${DRAGONX_LITE_BACKEND_DIR:-$SCRIPT_DIR/build/lite-backend/$lb_platform}"
|
||||
lb_lib=""
|
||||
for cand in "$lb_dir"/libsilentdragonxlite.a "$lb_dir"/libsilentdragonxlite.so "$lb_dir"/silentdragonxlite.lib; do
|
||||
@@ -145,7 +149,13 @@ if $DO_LITE_BACKEND; then
|
||||
"-DDRAGONX_LITE_BACKEND_ABI=sdxl-c-v1"
|
||||
)
|
||||
[[ -f "$lb_manifest" ]] && CMAKE_LITE_ARGS+=("-DDRAGONX_LITE_BACKEND_MANIFEST=$lb_manifest")
|
||||
info "Lite backend enabled: $lb_lib"
|
||||
# A Rust x86_64-pc-windows-gnu staticlib pulls in Win32 system libs (rustls/schannel, ring,
|
||||
# dirs, std) that the app doesn't already link. The set is rustc's `--print native-static-libs`
|
||||
# for the backend (winapi_* shims mapped to the real mingw import libs); all exist in mingw-w64.
|
||||
if [[ "$lb_platform" == "windows" ]]; then
|
||||
CMAKE_LITE_ARGS+=("-DDRAGONX_LITE_BACKEND_EXTRA_LIBS=advapi32;ws2_32;kernel32;bcrypt;cfgmgr32;credui;crypt32;cryptnet;fwpuclnt;gdi32;msimg32;ncrypt;ntdll;ole32;opengl32;secur32;shell32;synchronization;user32;winspool;userenv")
|
||||
fi
|
||||
info "Lite backend enabled ($lb_platform): $lb_lib"
|
||||
fi
|
||||
|
||||
should_bundle_full_node_assets() {
|
||||
|
||||
Reference in New Issue
Block a user