97 lines
3.2 KiB
Bash
Executable File
97 lines
3.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
|
|
cd "$ROOT"
|
|
|
|
case "$(uname -s)" in
|
|
Darwin) ;;
|
|
*) echo "wrong platform: $(uname -s) - use cargo xtask build" >&2; exit 1 ;;
|
|
esac
|
|
|
|
export MACOSX_DEPLOYMENT_TARGET=11.0
|
|
|
|
BUILD="$ROOT/build"
|
|
APP="$BUILD/bin/femm.app"
|
|
CONTENTS="$APP/Contents"
|
|
MACOS="$CONTENTS/MacOS"
|
|
RESOURCES="$CONTENTS/Resources"
|
|
ICONSET="$BUILD/AppIcon.iconset"
|
|
ICNS="$RESOURCES/AppIcon.icns"
|
|
SVG="$ROOT/assets/femm.svg"
|
|
|
|
echo "Building Triangle..."
|
|
bash "$ROOT/scripts/macos/build_triangle.sh"
|
|
|
|
TRI="$ROOT/build/triangle/triangle"
|
|
if [ ! -f "$TRI" ]; then
|
|
echo "ERROR: triangle binary missing at $TRI" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "Building Rust workspace (release)..."
|
|
cargo build --release -p femm-app
|
|
|
|
BIN="$ROOT/target/release/femm"
|
|
if [ ! -f "$BIN" ]; then
|
|
echo "ERROR: femm binary not found at $BIN" >&2
|
|
exit 1
|
|
fi
|
|
|
|
rm -rf "$APP"
|
|
mkdir -p "$MACOS" "$RESOURCES"
|
|
cp "$BIN" "$MACOS/femm"
|
|
cp "$TRI" "$MACOS/triangle"
|
|
|
|
if [ -f "$SVG" ]; then
|
|
if ! command -v rsvg-convert >/dev/null; then
|
|
echo "ERROR: rsvg-convert missing - brew install librsvg" >&2
|
|
exit 1
|
|
fi
|
|
if ! command -v iconutil >/dev/null; then
|
|
echo "ERROR: iconutil missing - install Xcode command line tools" >&2
|
|
exit 1
|
|
fi
|
|
rm -rf "$ICONSET"
|
|
mkdir -p "$ICONSET"
|
|
for size in 16 32 64 128 256 512 1024; do
|
|
rsvg-convert --width="$size" --height="$size" "$SVG" -o "$ICONSET/icon_${size}.png"
|
|
done
|
|
cp "$ICONSET/icon_16.png" "$ICONSET/icon_16x16.png"
|
|
cp "$ICONSET/icon_32.png" "$ICONSET/icon_16x16@2x.png"
|
|
cp "$ICONSET/icon_32.png" "$ICONSET/icon_32x32.png"
|
|
cp "$ICONSET/icon_64.png" "$ICONSET/icon_32x32@2x.png"
|
|
cp "$ICONSET/icon_128.png" "$ICONSET/icon_128x128.png"
|
|
cp "$ICONSET/icon_256.png" "$ICONSET/icon_128x128@2x.png"
|
|
cp "$ICONSET/icon_256.png" "$ICONSET/icon_256x256.png"
|
|
cp "$ICONSET/icon_512.png" "$ICONSET/icon_256x256@2x.png"
|
|
cp "$ICONSET/icon_512.png" "$ICONSET/icon_512x512.png"
|
|
cp "$ICONSET/icon_1024.png" "$ICONSET/icon_512x512@2x.png"
|
|
iconutil -c icns "$ICONSET" -o "$ICNS"
|
|
else
|
|
echo "WARNING: $SVG not found - app bundle will lack an icon"
|
|
fi
|
|
|
|
cat > "$CONTENTS/Info.plist" <<'PLIST'
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
<plist version="1.0">
|
|
<dict>
|
|
<key>CFBundleDevelopmentRegion</key> <string>en</string>
|
|
<key>CFBundleExecutable</key> <string>femm</string>
|
|
<key>CFBundleIconFile</key> <string>AppIcon</string>
|
|
<key>CFBundleIdentifier</key> <string>org.else-if.femm</string>
|
|
<key>CFBundleInfoDictionaryVersion</key> <string>6.0</string>
|
|
<key>CFBundleName</key> <string>femm</string>
|
|
<key>CFBundleDisplayName</key> <string>FEMM</string>
|
|
<key>CFBundlePackageType</key> <string>APPL</string>
|
|
<key>CFBundleShortVersionString</key> <string>0.0.1</string>
|
|
<key>CFBundleVersion</key> <string>0.0.1</string>
|
|
<key>LSMinimumSystemVersion</key> <string>11.0</string>
|
|
<key>NSHighResolutionCapable</key> <true/>
|
|
</dict>
|
|
</plist>
|
|
PLIST
|
|
|
|
echo "Built: $APP"
|