Files
moonlight-qt/scripts/build-appimage.sh
2026-05-10 18:46:48 -05:00

62 lines
1.6 KiB
Bash
Executable File

BUILD_CONFIG="release"
fail()
{
echo "$1" 1>&2
exit 1
}
BUILD_ROOT=$PWD/build
SOURCE_ROOT=$PWD
BUILD_FOLDER=$BUILD_ROOT/build-$BUILD_CONFIG
DEPLOY_FOLDER=$BUILD_ROOT/deploy-$BUILD_CONFIG
INSTALLER_FOLDER=$BUILD_ROOT/installer-$BUILD_CONFIG
LINUXDEPLOY=linuxdeploy-$(uname -m).AppImage
if [ -n "$CI_VERSION" ]; then
VERSION=$CI_VERSION
else
VERSION=`cat $SOURCE_ROOT/app/version.txt`
fi
command -v qmake6 >/dev/null 2>&1 || fail "Unable to find 'qmake6' in your PATH!"
command -v $LINUXDEPLOY >/dev/null 2>&1 || fail "Unable to find '$LINUXDEPLOY' in your PATH!"
echo Cleaning output directories
rm -rf $BUILD_FOLDER
rm -rf $DEPLOY_FOLDER
rm -rf $INSTALLER_FOLDER
mkdir $BUILD_ROOT
mkdir $BUILD_FOLDER
mkdir $DEPLOY_FOLDER
mkdir $INSTALLER_FOLDER
echo Configuring the project
pushd $BUILD_FOLDER
qmake6 $SOURCE_ROOT/moonlight-qt.pro PREFIX=$DEPLOY_FOLDER/usr DEFINES+=APP_IMAGE || fail "Qmake failed!"
popd
echo Compiling Moonlight in $BUILD_CONFIG configuration
pushd $BUILD_FOLDER
make -j$(nproc) $(echo "$BUILD_CONFIG" | tr '[:upper:]' '[:lower:]') || fail "Make failed!"
popd
echo Deploying to staging directory
pushd $BUILD_FOLDER
make install || fail "Make install failed!"
popd
export QML_SOURCES_PATHS=$SOURCE_ROOT/app/gui
export QMAKE=qmake6
export EXTRA_QT_MODULES="waylandclient;eglfsdeviceintegration;eglfskmssupport"
export EXTRA_PLATFORM_PLUGINS="libqwayland-egl.so;libqwayland-generic.so;libqeglfs.so;libqlinuxfb.so"
echo Creating AppImage
pushd $INSTALLER_FOLDER
VERSION=$VERSION $LINUXDEPLOY --appdir $DEPLOY_FOLDER \
--library=/usr/local/lib/libSDL3.so.0 \
--plugin qt --output appimage || fail "linuxdeploy failed!"
popd
echo Build successful