Files
OmniMTP/build.sh
2026-06-07 00:35:25 +02:00

76 lines
3.1 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# ── OmniMTP build script ──────────────────────────────────────────────────────
# Usage:
# ./build.sh → release build (default)
# ./build.sh debug → debug build
# ./build.sh release → release build
# ./build.sh clean → wipe all build dirs
# ./build.sh run → release build + open the app
# ./build.sh run debug → debug build + open the app
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
JOBS=$(sysctl -n hw.logicalcpu)
# ── Parse args ────────────────────────────────────────────────────────────────
MODE="release"
RUN=false
for arg in "$@"; do
case "$arg" in
debug) MODE="debug" ;;
release) MODE="release" ;;
run) RUN=true ;;
clean)
echo "Cleaning build directories..."
rm -rf "$SCRIPT_DIR/build" "$SCRIPT_DIR/build_debug" "$SCRIPT_DIR/build_release"
echo "Done."
exit 0
;;
*)
echo "Unknown argument: $arg"
echo "Usage: $0 [debug|release|clean|run]"
exit 1
;;
esac
done
# ── Resolve build dir and CMake config ───────────────────────────────────────
if [[ "$MODE" == "debug" ]]; then
BUILD_DIR="$SCRIPT_DIR/build_debug"
CMAKE_TYPE="Debug"
LABEL="Debug"
else
BUILD_DIR="$SCRIPT_DIR/build_release"
CMAKE_TYPE="Release"
LABEL="Release"
fi
APP_PATH="$BUILD_DIR/OmniMTP.app"
# ── Configure (only if CMakeCache.txt is missing) ────────────────────────────
if [[ ! -f "$BUILD_DIR/CMakeCache.txt" ]]; then
echo "── Configuring ($LABEL) ─────────────────────────────────────────"
cmake -B "$BUILD_DIR" \
-DCMAKE_BUILD_TYPE="$CMAKE_TYPE" \
-S "$SCRIPT_DIR"
fi
# ── Build ────────────────────────────────────────────────────────────────────
echo "── Building ($LABEL, $JOBS threads) ────────────────────────────────"
cmake --build "$BUILD_DIR" -j"$JOBS"
# ── Result ───────────────────────────────────────────────────────────────────
BINARY="$APP_PATH/Contents/MacOS/OmniMTP"
SIZE=$(du -sh "$BINARY" 2>/dev/null | cut -f1)
ARCH=$(file "$BINARY" | grep -o "arm64\|x86_64" | tr '\n' '+' | sed 's/+$//')
echo ""
echo "── Built: $APP_PATH"
echo " Binary: $SIZE ($ARCH universal)"
if $RUN; then
echo "── Launching..."
open "$APP_PATH"
fi