nirc-rs/packaging/build-static.sh

53 lines
1.6 KiB
Bash
Executable File

#!/usr/bin/env bash
# build-static.sh — Build statically-linked nirc binaries via cargo-zigbuild
#
# Prerequisites:
# 1. rustup target add x86_64-unknown-linux-musl aarch64-unknown-linux-musl
# 2. pip install cargo-zigbuild (or: cargo install cargo-zigbuild)
# 3. Install zig: https://ziglang.org/download/
#
# Usage:
# ./packaging/build-static.sh # both targets
# ./packaging/build-static.sh x86_64 # just x86_64
# ./packaging/build-static.sh aarch64 # just aarch64
set -euo pipefail
cd "$(dirname "$0")/.."
VERSION="0.5.0"
OUTDIR="target/static-release"
mkdir -p "$OUTDIR"
build_target() {
local target="$1"
local suffix="$2"
echo "=== Building nirc ${VERSION} for ${target} ==="
cargo zigbuild --release --target "${target}"
local bin="target/${target}/release/nirc"
if [ -f "$bin" ]; then
local out="${OUTDIR}/nirc-${VERSION}-${suffix}"
cp "$bin" "$out"
chmod +x "$out"
local size
size=$(du -h "$out" | cut -f1)
echo " -> $out ($size)"
else
echo " ERROR: $bin not found" >&2
return 1
fi
}
if [ -n "${1:-}" ]; then
case "$1" in
x86_64) build_target x86_64-unknown-linux-musl linux-x86_64 ;;
aarch64) build_target aarch64-unknown-linux-musl linux-aarch64 ;;
*) echo "Usage: $0 [x86_64|aarch64]"; exit 1 ;;
esac
else
build_target x86_64-unknown-linux-musl linux-x86_64
build_target aarch64-unknown-linux-musl linux-aarch64
fi
echo ""
echo "=== Static builds complete in ${OUTDIR}/ ==="
ls -lh "$OUTDIR"/nirc-${VERSION}-*