Compare commits

..

10 commits

Author SHA1 Message Date
Cameron Gutman
8d5072533f Fix polish() loop in the quit dialog
Some checks failed
Build / setup (push) Has been cancelled
Build / build-appimage (push) Has been cancelled
Build / build-steamlink (push) Has been cancelled
Build / build-windows-macos (push) Has been cancelled
Fixes #1816
2026-02-07 22:01:26 -06:00
Cameron Gutman
4c14a24960 Change nightly builds to use the non-portable profile by default
Fixes #1790
2026-02-07 17:26:23 -06:00
Cameron Gutman
e3702dbab7 Don't deploy icuuc.dll into the application folder 2026-02-07 16:46:12 -06:00
Cameron Gutman
e4325b8736 Update Windows ARM64 CI to Qt 6.10.2 2026-02-07 16:46:12 -06:00
Cameron Gutman
eb294e63f4 Revert "Temporarily revert Windows ARM64 to Qt 6.10.0"
This reverts commit 6313129603.
2026-02-07 16:46:12 -06:00
Cameron Gutman
9d597a666b Use aqtinstall version compatible with Qt 6.10.1+ ARM64 2026-02-07 16:46:12 -06:00
Jakub Sygnowski
33e0b08699
Add Docker section to README (#1791)
* Add Docker section to README

Added information on moonlight-packaging to building section of README.

Co-authored-by: Cameron Gutman <aicommander@gmail.com>
2026-02-06 23:59:28 -06:00
Cameron Gutman
31898bbab4 Update moonlight-common-c to fix BSDs 2026-02-06 23:26:41 -06:00
Cameron Gutman
34c9e01a96 Exclude Windows and macOS systems from the slow GPU heuristic
It's targeted at SBCs, which don't run Windows or macOS.
2026-02-06 22:37:33 -06:00
Cameron Gutman
ddc6675dc8 Fix macOS and Steam Link build 2026-02-06 22:27:57 -06:00
7 changed files with 33 additions and 18 deletions

View file

@ -20,11 +20,10 @@ jobs:
include:
# Windows
- os: windows-2025
qt_version: 6.10.1
qt_version_arm64: 6.10.0
qt_version: 6.10.2
# macOS
- os: macos-15
qt_version: 6.10.1
qt_version: 6.10.2
runs-on: ${{ matrix.os }}
@ -48,6 +47,7 @@ jobs:
set-env: ${{ runner.os != 'Windows' }}
add-tools-to-path: ${{ runner.os != 'Windows' }}
version: ${{ matrix.qt_version }}
aqtsource: 'git+https://github.com/miurahr/aqtinstall.git@9edeb24ae65361fd032a063a0b0148764eff09c5'
- name: Install Qt ARM64 (Windows)
if: runner.os == 'Windows'
@ -57,7 +57,7 @@ jobs:
set-env: false
add-tools-to-path: false
arch: win64_msvc2022_arm64_cross_compiled
version: ${{ matrix.qt_version_arm64 }}
version: ${{ matrix.qt_version }}
- name: Build x64 binaries (Windows)
if: runner.os == 'Windows'
@ -75,7 +75,7 @@ jobs:
set "PATH=%QT_PATH%;%PATH%"
scripts\build-arch.bat Release arm64
env:
QT_PATH: ${{ runner.workspace }}\Qt\${{ matrix.qt_version_arm64 }}\msvc2022_arm64\bin
QT_PATH: ${{ runner.workspace }}\Qt\${{ matrix.qt_version }}\msvc2022_arm64\bin
- name: Build Package
shell: pwsh

View file

@ -82,6 +82,10 @@ Moonlight builds for Steam Link are subject to hardware limitations of the Steam
* Maximum video bitrate: **40 Mbps**
* **HDR streaming is not supported** on the original hardware
### Docker containers
If you want to use Docker for building, look at [this repo](https://github.com/cgutman/moonlight-packaging) containing canonical containers
for different architectures, which handle building deps and extra linking for you.
### Build Setup Steps
1. Install the latest Qt SDK (and optionally, the Qt Creator IDE) from https://www.qt.io/download
* You can install Qt via Homebrew on macOS, but you will need to use `brew install qt --with-debug` to be able to create debug builds of Moonlight.
@ -93,7 +97,8 @@ Moonlight builds for Steam Link are subject to hardware limitations of the Steam
* For Windows builds, use `scripts\build-arch.bat` and `scripts\generate-bundle.bat`. Execute these scripts from the root of the repository within a Qt command prompt. Ensure 7-Zip binary directory is on your `%PATH%`.
* For macOS builds, use `scripts/generate-dmg.sh`. Execute this script from the root of the repository and ensure Qt's `bin` folder is in your `$PATH`.
* For Steam Link builds, run `scripts/build-steamlink-app.sh` from the root of the repository.
* To build from the command line for development use on macOS or Linux, run `qmake6 moonlight-qt.pro` then `make debug` or `make release`
* To build from the command line for development use on macOS or Linux, run `qmake6 moonlight-qt.pro` then `make debug` or `make release`.
* The final binary will be placed in `app/moonlight`.
* To create an embedded build for a single-purpose device, use `qmake6 "CONFIG+=embedded" moonlight-qt.pro` and build normally.
* This build will lack windowed mode, Discord/Help links, and other features that don't make sense on an embedded device.
* For platforms with poor GPU performance, add `"CONFIG+=gpuslow"` to prefer direct KMSDRM rendering over GL/Vulkan renderers. Direct KMSDRM rendering can use dedicated YUV/RGB conversion and scaling hardware rather than slower GPU shaders for these operations.

View file

@ -1,11 +1,9 @@
import QtQuick 2.0
import QtQuick.Controls 2.3
import QtQuick.Controls 2.5
Dialog {
modal: true
x: Math.round((parent.width - width) / 2)
y: Math.round((parent.height - height) / 2)
anchors.centerIn: Overlay.overlay
onClosed: {
// We must force focus back to the last item. If we don't,

View file

@ -359,7 +359,7 @@ int SDLCALL signalHandlerThread(void* data)
// Exit immediately if we haven't changed state since last attempt
if (session == lastSession || requestedQuit) {
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "Exiting immediately on second signal");
_exit(1);
_Exit(1);
}
if (sig == SIGTERM) {
@ -376,7 +376,7 @@ int SDLCALL signalHandlerThread(void* data)
// Exit immediately if we haven't changed state since last attempt
if (requestedQuit) {
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "Exiting immediately on second signal");
_exit(1);
_Exit(1);
}
// If we're not streaming, we'll close the whole app

View file

@ -210,7 +210,7 @@ bool WMUtils::isGpuSlow()
bool ret;
if (!Utils::getEnvironmentVariableOverride("GL_IS_SLOW", &ret)) {
#if defined(GL_IS_SLOW) || !defined(Q_PROCESSOR_X86)
#if defined(GL_IS_SLOW) || (!defined(Q_PROCESSOR_X86) && !defined(Q_OS_DARWIN) && !defined(Q_OS_WIN))
// We currently assume GPUs on non-x86 hardware are slow by default
ret = true;
#else

@ -1 +1 @@
Subproject commit 305993b01322aeb7710a5443960774ecd391c55c
Subproject commit 6250fa29ee87873716045e3b64f1f229374324e8

View file

@ -222,7 +222,7 @@ echo Deploying Qt dependencies
%WINDEPLOYQT_CMD% --dir %DEPLOY_FOLDER% --%BUILD_CONFIG% --qmldir %SOURCE_ROOT%\app\gui --no-opengl-sw --no-compiler-runtime --no-sql %WINDEPLOYQT_ARGS% %BUILD_FOLDER%\app\%BUILD_CONFIG%\Moonlight.exe
if !ERRORLEVEL! NEQ 0 goto Error
echo Deleting unused styles
echo Deleting unused files
rem Qt 5.x directories
rmdir /s /q %DEPLOY_FOLDER%\QtQuick\Controls.2\Fusion
rmdir /s /q %DEPLOY_FOLDER%\QtQuick\Controls.2\Imagine
@ -234,6 +234,8 @@ rmdir /s /q %DEPLOY_FOLDER%\qml\QtQuick\Controls\Universal
rmdir /s /q %DEPLOY_FOLDER%\qml\QtQuick\Controls\Windows
rmdir /s /q %DEPLOY_FOLDER%\qml\QtQuick\Controls\FluentWinUI3
rmdir /s /q %DEPLOY_FOLDER%\qml\QtQuick\NativeStyle
rem icuuc.dll ships with all supported OSes (and Qt incorrectly deploys the x64 version on ARM64)
del %DEPLOY_FOLDER%\icuuc.dll
if "%SIGN%"=="1" (
echo Signing deployed binaries
@ -266,9 +268,19 @@ rem This must be done after WiX harvesting and signing, since the VCRT dlls are
rem and should not be harvested for inclusion in the full installer
copy "%VC_REDIST_DLL_PATH%\*.dll" %DEPLOY_FOLDER%
if !ERRORLEVEL! NEQ 0 goto Error
rem This file tells Moonlight that it's a portable installation
echo. > %DEPLOY_FOLDER%\portable.dat
if !ERRORLEVEL! NEQ 0 goto Error
rem Since we don't publish Windows installers for CI builds, let's use the user profile
rem location of the regular non-portable version by default. We'll place a file in the
rem the package to allow the user to rename if they want portable behavior.
if defined CI_VERSION (
echo. > %DEPLOY_FOLDER%\portable.dat.inactive
if !ERRORLEVEL! NEQ 0 goto Error
) else (
rem This file tells Moonlight that it's a portable installation
echo. > %DEPLOY_FOLDER%\portable.dat
if !ERRORLEVEL! NEQ 0 goto Error
)
7z a %INSTALLER_FOLDER%\MoonlightPortable-%ARCH%-%VERSION%.zip %DEPLOY_FOLDER%\*
if !ERRORLEVEL! NEQ 0 goto Error