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