audio-oxide/build.sh

68 lines
1.9 KiB
Bash
Executable File

#!/bin/bash
set -e
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
cd "$SCRIPT_DIR"
# --- Icons ---
./icons.sh
# --- 1. Build oxforge (MDK + CLI) ---
echo "=== Building oxforge ==="
cargo build -p oxforge --release
# --- 2. Build modules via oxforge ---
echo "=== Building modules ==="
# System modules (lib crates) are built as au-o2-gui dependencies.
# User modules (cdylib) need explicit build + packaging.
cargo build --release \
-p passthrough \
-p latency_checker
for module_dir in oxide-modules/passthrough oxide-modules/latency; do
if [ -f "$module_dir/module.toml" ]; then
echo " Packaging $module_dir"
./target/release/oxforge build --skip-build "$module_dir"
fi
done
# --- 3. Build au-o2-gui ---
echo "=== Building au-o2-gui ==="
cargo build -p au-o2-gui --release
# --- 4. Platform packaging ---
case "$OSTYPE" in
darwin*)
APP_NAME="Audio Oxide"
APP_DIR="target/release/$APP_NAME.app"
rm -rf "$APP_DIR"
mkdir -p "$APP_DIR/Contents/MacOS"
mkdir -p "$APP_DIR/Contents/Resources"
cp target/release/au-o2-gui "$APP_DIR/Contents/MacOS/"
cp au-o2-gui/assets/Info.plist "$APP_DIR/Contents/"
if [ -f au-o2-gui/assets/icon.icns ]; then
cp au-o2-gui/assets/icon.icns "$APP_DIR/Contents/Resources/"
fi
# Bundle packaged user modules
MODULES_DIR="$APP_DIR/Contents/Resources/modules"
mkdir -p "$MODULES_DIR"
for xfile in target/release/modules/*.x; do
[ -f "$xfile" ] && cp "$xfile" "$MODULES_DIR/"
done
echo "=== Built: $APP_DIR ==="
open "$APP_DIR"
;;
msys*|cygwin*|win*)
echo "=== Built: target/release/au-o2-gui.exe ==="
./target/release/au-o2-gui.exe
;;
*)
echo "=== Built: target/release/au-o2-gui ==="
./target/release/au-o2-gui
;;
esac