Acord/scripts/linux/build.sh

54 lines
1.7 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
source "$ROOT/scripts/_build-dirs.sh"
cd "$ROOT"
case "$(uname -s)" in
Linux) ;;
*) echo "wrong platform: $(uname -s) — use cargo xtask build" >&2; exit 1;;
esac
# Pick the winit backend(s). Default builds enable both x11 and wayland so a
# single binary works on either; ACORD_FEATURES overrides for cases where
# only one backend is available (flatpak, stripped distros, debugging one
# backend in isolation).
detect_features() {
if [ -n "${ACORD_FEATURES:-}" ]; then
echo "$ACORD_FEATURES"
return
fi
# No detection — both backends are linked by default. Override only when
# you need to force one.
echo ""
}
FEATURES="$(detect_features)"
echo "build: XDG_CURRENT_DESKTOP=${XDG_CURRENT_DESKTOP:-<unset>}, WAYLAND_DISPLAY=${WAYLAND_DISPLAY:-<unset>}"
if [ -n "$FEATURES" ]; then
echo "build: forcing features = $FEATURES"
cargo build --release -p acord-linux --no-default-features --features "$FEATURES"
else
echo "build: linking both x11 and wayland backends"
cargo build --release -p acord-linux
fi
STAGE="$ROOT/build/bin"
mkdir -p "$STAGE"
cp "$CARGO_TARGET_DIR/release/acord" "$STAGE/Acord"
chmod +x "$STAGE/Acord"
# Rasterize the SVG icon next to the binary so load_window_icon picks it up.
if command -v rsvg-convert >/dev/null 2>&1 && [ -f "$ROOT/assets/Acord.svg" ]; then
rsvg-convert --width 256 --height 256 "$ROOT/assets/Acord.svg" -o "$STAGE/icon.png"
else
echo "rsvg-convert not found or assets/Acord.svg missing — skipping icon"
fi
[ -f "$ROOT/LICENCE" ] && cp "$ROOT/LICENCE" "$STAGE/LICENCE"
echo "Built: $STAGE/Acord"