56 lines
1.6 KiB
Bash
Executable File
56 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
BINARY=$(cargo metadata --no-deps --format-version 1 | python3 -c "import sys,json; print(json.load(sys.stdin)['packages'][0]['name'])")
|
|
VERSION=$(cargo metadata --no-deps --format-version 1 | python3 -c "import sys,json; print(json.load(sys.stdin)['packages'][0]['version'])")
|
|
OUT_DIR="dist"
|
|
|
|
TARGETS=(
|
|
"x86_64-unknown-linux-musl:linux-x86_64"
|
|
"aarch64-unknown-linux-musl:linux-aarch64"
|
|
"aarch64-apple-darwin:macos-aarch64"
|
|
)
|
|
|
|
echo "Building $BINARY v$VERSION"
|
|
echo ""
|
|
|
|
# Ensure rustup targets are installed
|
|
rustup target add \
|
|
x86_64-unknown-linux-musl \
|
|
aarch64-unknown-linux-musl \
|
|
aarch64-apple-darwin 2>/dev/null
|
|
|
|
mkdir -p "$OUT_DIR"
|
|
# Clean previous release artifacts
|
|
rm -f "$OUT_DIR/$BINARY"-*
|
|
|
|
for entry in "${TARGETS[@]}"; do
|
|
RUST_TARGET="${entry%%:*}"
|
|
LABEL="${entry##*:}"
|
|
ARTIFACT="$OUT_DIR/${BINARY}-${LABEL}"
|
|
|
|
echo "── $LABEL ($RUST_TARGET)"
|
|
|
|
case "$RUST_TARGET" in
|
|
x86_64-unknown-linux-musl)
|
|
CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_LINKER=x86_64-linux-musl-gcc \
|
|
cargo build --release --target "$RUST_TARGET" --quiet
|
|
;;
|
|
aarch64-unknown-linux-musl)
|
|
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER=aarch64-linux-musl-gcc \
|
|
cargo build --release --target "$RUST_TARGET" --quiet
|
|
;;
|
|
aarch64-apple-darwin)
|
|
cargo build --release --target "$RUST_TARGET" --quiet
|
|
;;
|
|
esac
|
|
|
|
cp "target/$RUST_TARGET/release/$BINARY" "$ARTIFACT"
|
|
SIZE=$(du -sh "$ARTIFACT" | cut -f1)
|
|
echo " → $ARTIFACT ($SIZE)"
|
|
done
|
|
|
|
echo ""
|
|
echo "Done. Artifacts in $OUT_DIR/:"
|
|
ls -lh "$OUT_DIR/$BINARY"-*
|