Files

86 lines
2.1 KiB
Bash
Executable File

#!/usr/bin/env bash
set -e
APP_NAME="SubWave"
BUILD_DIR="build"
APPDIR="AppDir"
DIST_DIR="dist"
ICON_SRC_PNG="ico/wavy_png.png"
ICON_SRC_ICO="ico/wavy_ico.ico"
echo "==> Cleaning old build"
rm -rf "$BUILD_DIR" "$APPDIR" "$DIST_DIR"
mkdir -p "$DIST_DIR"
echo "==> Configuring project"
cmake -B "$BUILD_DIR" -DCMAKE_BUILD_TYPE=Release
echo "==> Building project"
cmake --build "$BUILD_DIR" -j$(nproc)
echo "==> Installing into AppDir"
cmake --install "$BUILD_DIR" --prefix "$APPDIR/usr"
echo "==> Ensuring binary location"
mkdir -p "$APPDIR/usr/bin"
if [ ! -f "$APPDIR/usr/bin/$APP_NAME" ]; then
cp "$BUILD_DIR/$APP_NAME" "$APPDIR/usr/bin/" || true
fi
echo "==> Creating desktop file (REQUIRED for AppImage)"
mkdir -p "$APPDIR/usr/share/applications"
cat > "$APPDIR/usr/share/applications/$APP_NAME.desktop" <<EOF
[Desktop Entry]
Type=Application
Name=SubWave
Exec=SubWave
Icon=subwave
Categories=AudioVideo;Audio;Player;
Terminal=false
EOF
echo "==> Installing icon"
ICON_DEST_DIR="$APPDIR/usr/share/icons/hicolor/256x256/apps"
mkdir -p "$ICON_DEST_DIR"
if [ -f "$ICON_SRC_PNG" ]; then
cp "$ICON_SRC_PNG" "$ICON_DEST_DIR/subwave.png"
elif [ -f "$ICON_SRC_ICO" ]; then
if command -v convert >/dev/null 2>&1; then
convert "$ICON_SRC_ICO[0]" "$ICON_DEST_DIR/subwave.png"
else
echo "WARNING: ImageMagick not installed, copying .ico as fallback"
cp "$ICON_SRC_ICO" "$ICON_DEST_DIR/subwave.ico"
fi
else
echo "WARNING: No icon found, build will still work but no icon will be shown"
fi
echo "==> Downloading linuxdeploy if needed"
if [ ! -f linuxdeploy-x86_64.AppImage ]; then
wget -q https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
chmod +x linuxdeploy-x86_64.AppImage
fi
echo "==> Building AppImage"
export ARCH=x86_64
./linuxdeploy-x86_64.AppImage \
--appdir "$APPDIR" \
--output appimage
echo "==> Moving output"
mkdir -p "$DIST_DIR"
mv *.AppImage "$DIST_DIR/$APP_NAME.AppImage"
echo "==> DONE"
echo "Run:"
echo " chmod +x dist/$APP_NAME.AppImage"
echo " ./dist/$APP_NAME.AppImage"