add cross-compilation build script using cargo-zigbuild
produces fully static, zero-dependency binaries for macOS (arm64) and Linux (x86_64 musl). no Docker required — uses zig as the cross-linker. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,2 +1,3 @@
|
||||
/target/
|
||||
/dist/
|
||||
.DS_Store
|
||||
|
||||
47
build.sh
Executable file
47
build.sh
Executable file
@@ -0,0 +1,47 @@
|
||||
#!/usr/bin/env bash
|
||||
# build.sh — build static uc binaries for all targets
|
||||
#
|
||||
# Produces fully static, zero-dependency binaries:
|
||||
# dist/uc-aarch64-apple-darwin (macOS Apple Silicon)
|
||||
# dist/uc-x86_64-unknown-linux-musl (Linux x86_64, static)
|
||||
#
|
||||
# Requirements:
|
||||
# - mise (manages rust toolchain)
|
||||
# - zig + cargo-zigbuild (for Linux cross-compilation)
|
||||
# - rustup target x86_64-unknown-linux-musl (one-time setup)
|
||||
#
|
||||
# Usage:
|
||||
# ./build.sh build all targets
|
||||
# ./build.sh macos build macOS only
|
||||
# ./build.sh linux build Linux only
|
||||
set -euo pipefail
|
||||
|
||||
eval "$(mise activate bash 2>/dev/null)" || true
|
||||
|
||||
DIST="dist"
|
||||
mkdir -p "$DIST"
|
||||
|
||||
build_macos() {
|
||||
echo "==> building macOS (aarch64-apple-darwin) ..."
|
||||
cargo build --release
|
||||
cp target/release/uc "$DIST/uc-aarch64-apple-darwin"
|
||||
echo "[ok] $DIST/uc-aarch64-apple-darwin"
|
||||
}
|
||||
|
||||
build_linux() {
|
||||
echo "==> building Linux (x86_64-unknown-linux-musl) ..."
|
||||
cargo zigbuild --release --target x86_64-unknown-linux-musl
|
||||
cp target/x86_64-unknown-linux-musl/release/uc "$DIST/uc-x86_64-unknown-linux-musl"
|
||||
echo "[ok] $DIST/uc-x86_64-unknown-linux-musl"
|
||||
}
|
||||
|
||||
case "${1:-all}" in
|
||||
macos) build_macos ;;
|
||||
linux) build_linux ;;
|
||||
all) build_macos; build_linux ;;
|
||||
*) echo "usage: $0 [macos|linux|all]"; exit 1 ;;
|
||||
esac
|
||||
|
||||
echo ""
|
||||
echo "==> done"
|
||||
ls -lh "$DIST"/uc-*
|
||||
Reference in New Issue
Block a user