#!/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