#!/usr/bin/env bash set -e export LD_LIBRARY_PATH="build/lib:$LD_LIBRARY_PATH" [ -z "$QMAKE" ] && export QMAKE=/usr/lib/qt6/bin/qmake # Sets a directory that has to have a following structure: # build # ├── bin # │   ├── isle # │   └── isle-config # └── lib # ├── liblego1.so # ├── libSDL3.so -> libSDL3.so.0 # Not important if available on the system # ├── libSDL3.so.0 -> libSDL3.so.0.3.0 # Not important if available on the system # └── libSDL3.so.0.3.0 # Not important if available on the system # Can also be defined using --build=path BUILD_SOURCE=../../build # Sets where AppRun for AppImage is, can also be defined using --apprun=path APPRUN_SOURCE=AppRun # Sets where desktop file for AppImage is, can also be defined using --desktop-file=path DESKTOP_FILE_SOURCE=isle-portable.desktop cd $(dirname $0) clean(){ rm -rf assets tools build AppDir "./LEGO_Island-$(uname -m).AppImage" } download(){ if [ ! -e "$1" ]; then curl -Lo "$1" "$2" fi } prepare(){ mkdir -p tools mkdir -p assets download tools/appimagetool.AppImage https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-$(uname -m).AppImage chmod u+x tools/appimagetool.AppImage download tools/linuxdeploy.AppImage https://github.com/linuxdeploy/linuxdeploy/releases/latest/download/linuxdeploy-$(uname -m).AppImage chmod u+x tools/linuxdeploy.AppImage download tools/linuxdeploy-plugin-qt.AppImage https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/latest/download/linuxdeploy-plugin-qt-$(uname -m).AppImage chmod u+x tools/linuxdeploy-plugin-qt.AppImage download assets/isle.png https://github.com/isledecomp/isle/blob/master/assets/isle.png?raw=true magick assets/isle.png -resize 256x256 assets/isle.png download assets/isle-config.png https://github.com/isledecomp/isle/blob/master/assets/config.png?raw=true magick assets/isle-config.png -resize 256x256 assets/isle-config.png if [ ! -f "assets/isle-portable.desktop" ]; then cp $DESKTOP_FILE_SOURCE assets/isle-portable.desktop cp $APPRUN_SOURCE assets/AppRun fi if [ ! -d "build" ]; then cp -r $BUILD_SOURCE build fi } compile(){ NO_STRIP=1 tools/linuxdeploy.AppImage \ --plugin qt \ -e build/bin/isle \ -e build/bin/isle-config \ -d assets/isle-portable.desktop \ -i assets/isle.png \ -i assets/isle-config.png \ --custom-apprun=AppRun \ --appdir=AppDir } package(){ tools/appimagetool.AppImage AppDir "LEGO_Island-$(uname -m).AppImage" } stop(){ # Can be used to do `Build clean stop` to just clean the directory exit } for arg in "$@"; do case "$arg" in --build=*) BUILD_SOURCE="${arg#--build=}";; --apprun=*) APPRUN_SOURCE="${arg#--apprun=}";; --desktop-file=*) DESKTOP_FILE_SOURCE="${arg#--desktop-file=}";; *) "$arg" esac done prepare compile package # Symlinks named as binaries in appimage can call these binaries specifically # ln -s "LEGO_Island-$(uname -m).AppImage" isle-config # ln -s "LEGO_Island-$(uname -m).AppImage" isle