From e88d2f0ab22a75d002f02c353da95919a57f9e40 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sun, 31 Mar 2019 23:26:17 -0700 Subject: [PATCH] Add files and scripts to build for Steam Link --- README.md | 14 +++++--- app/deploy/steamlink/moonlight.png | Bin 0 -> 2935 bytes app/deploy/steamlink/moonlight.sh | 9 ++++++ app/deploy/steamlink/toc.txt | 3 ++ scripts/build-steamlink-app.sh | 50 +++++++++++++++++++++++++++++ 5 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 app/deploy/steamlink/moonlight.png create mode 100644 app/deploy/steamlink/moonlight.sh create mode 100644 app/deploy/steamlink/toc.txt create mode 100755 scripts/build-steamlink-app.sh diff --git a/README.md b/README.md index fbf164b9..b0448d31 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ You can follow development on our [Discord server](https://discord.gg/6ERtzFY). - Gamepad support with force feedback for up to 4 players ## Downloads -- [Windows and macOS](https://github.com/moonlight-stream/moonlight-qt/releases) +- [Windows, macOS, and Steam Link](https://github.com/moonlight-stream/moonlight-qt/releases) - [Snap (for Ubuntu-based Linux distros)](https://snapcraft.io/moonlight) - [Flatpak (for other Linux distros)](https://flathub.org/apps/details/com.moonlight_stream.Moonlight) @@ -27,7 +27,7 @@ You can follow development on our [Discord server](https://discord.gg/6ERtzFY). ### General Build Requirements * Qt 5.9 SDK or later -### Windows-specific Requirements +### Windows-specific Build Requirements * Windows 7 or later * [Visual Studio](https://visualstudio.microsoft.com/downloads/) 2015 or later (Community edition is fine) * Select MSVC Desktop toolchain during Qt installation @@ -35,25 +35,31 @@ You can follow development on our [Discord server](https://discord.gg/6ERtzFY). * [7-Zip](https://www.7-zip.org/) (only if building installers for non-development PCs) * [WiX Toolset](http://wixtoolset.org/releases/) v3.11 or later (only if building installers for non-development PCs) -### Mac-specific Requirements +### Mac-specific Build Requirements * macOS Sierra (10.12) or later * Xcode 10 * [create-dmg](https://github.com/sindresorhus/create-dmg) (only if building DMGs for use on non-development Macs) -### Linux-specific Requirements +### Linux-specific Build Requirements * GCC or Clang * Install your distro equivalents of: `openssl-devel qt5-devel SDL2-devel ffmpeg-devel qt5-qtquickcontrols2-devel libva-devel libvdpau-devel opus-devel pulseaudio-libs-devel alsa-lib-devel SDL2_ttf-devel` * FFmpeg 4.0 is required to build. If your distro doesn't package FFmpeg 4.0, you can build and install it from source on http://ffmpeg.org/ +### Steam Link-specific Build Requirements +* [Steam Link SDK](https://github.com/ValveSoftware/steamlink-sdk) cloned on your build system +* STEAMLINK_SDK_PATH environment variable set to the Steam Link SDK path + ### 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. * You may also use your Linux distro's package manager for the Qt SDK as long as the packages are Qt 5.9 or later. + * This step is not required for building on Steam Link, because the Steam Link SDK includes Qt 5.9. 2. Run `git submodule update --init --recursive` from within `moonlight-qt/` 3. Open the project in Qt Creator or build from qmake on the command line. * To build a binary for use on non-development machines, use the scripts in the `scripts` folder. * For Windows builds, use `scripts\generate-installers.bat`. Execute this script from the root of the repository within a Qt command prompt. Ensure WiX and 7-Zip binary directories are in 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, run `qmake moonlight-qt.pro` then `make debug` or `make release` ## Contribute diff --git a/app/deploy/steamlink/moonlight.png b/app/deploy/steamlink/moonlight.png new file mode 100644 index 0000000000000000000000000000000000000000..5b9f7ac0dedeed88a3fc2b472c81bdc36e2b3295 GIT binary patch literal 2935 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 literal 0 HcmV?d00001 diff --git a/app/deploy/steamlink/moonlight.sh b/app/deploy/steamlink/moonlight.sh new file mode 100644 index 00000000..03145ac3 --- /dev/null +++ b/app/deploy/steamlink/moonlight.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +# The default HOME is not persistent, so override +# it to a path on the onboard flash. Otherwise our +# pairing data will be lost each reboot. +HOME=/usr/local/moonlight + +# Write output to a logfile in /tmp +exec ./bin/moonlight > /tmp/moonlight.log diff --git a/app/deploy/steamlink/toc.txt b/app/deploy/steamlink/toc.txt new file mode 100644 index 00000000..c6f994d8 --- /dev/null +++ b/app/deploy/steamlink/toc.txt @@ -0,0 +1,3 @@ +name=Moonlight +icon=moonlight.png +run=moonlight.sh diff --git a/scripts/build-steamlink-app.sh b/scripts/build-steamlink-app.sh new file mode 100755 index 00000000..4fbd8a69 --- /dev/null +++ b/scripts/build-steamlink-app.sh @@ -0,0 +1,50 @@ +BUILD_CONFIG="release" + +fail() +{ + echo "$1" 1>&2 + exit 1 +} + +if [ "$STEAMLINK_SDK_PATH" == "" ]; then + fail "You must set STEAMLINK_SDK_PATH to build for Steam Link" +fi + +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 +VERSION=`cat $SOURCE_ROOT/app/version.txt` + +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 Initializing Steam Link SDK +source $STEAMLINK_SDK_PATH/setenv.sh || fail "SL SDK initialization failed!" + +echo Configuring the project +pushd $BUILD_FOLDER +qmake $SOURCE_ROOT/moonlight-qt.pro || 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 Creating app bundle +mkdir -p $DEPLOY_FOLDER/steamlink/apps/moonlight/bin +cp $BUILD_FOLDER/app/moonlight $DEPLOY_FOLDER/steamlink/apps/moonlight/bin/ || fail "Binary copy failed!" +cp $SOURCE_ROOT/app/deploy/steamlink/* $DEPLOY_FOLDER/steamlink/apps/moonlight/ || fail "Metadata copy failed!" +pushd $DEPLOY_FOLDER +zip -r $INSTALLER_FOLDER/Moonlight-SteamLink-$VERSION.zip . || fail "Zip failed!" +popd + +echo Build completed \ No newline at end of file