Sunshine/docs/building.md
ReenigneArcher 024bd8f8b6
Some checks failed
CI / GitHub Env Debug (push) Has been cancelled
CI / Setup Release (push) Has been cancelled
CI / Setup Flatpak Matrix (push) Has been cancelled
CI Docker / Check Dockerfiles (push) Has been cancelled
CodeQL / Get language matrix (push) Has been cancelled
localize / Update Localization (push) Has been cancelled
Build GH-Pages / update_pages (push) Has been cancelled
CI / Linux Flatpak (push) Has been cancelled
CI / Linux ${{ matrix.type }} (--appimage-build, 22.04, AppImage) (push) Has been cancelled
CI / Homebrew (${{ matrix.os_name }}-${{ matrix.os_version }}${{ matrix.release == true && ' (Release)' || '' }}) (macos, 13) (push) Has been cancelled
CI / Homebrew (${{ matrix.os_name }}-${{ matrix.os_version }}${{ matrix.release == true && ' (Release)' || '' }}) (macos, 14) (push) Has been cancelled
CI / Homebrew (${{ matrix.os_name }}-${{ matrix.os_version }}${{ matrix.release == true && ' (Release)' || '' }}) (ubuntu, latest) (push) Has been cancelled
CI / Homebrew (${{ matrix.os_name }}-${{ matrix.os_version }}${{ matrix.release == true && ' (Release)' || '' }}) (ubuntu, latest, true) (push) Has been cancelled
CI / Macports (macOS-${{ matrix.os_version }}) (13, true) (push) Has been cancelled
CI / Macports (macOS-${{ matrix.os_version }}) (14) (push) Has been cancelled
CI / Windows (push) Has been cancelled
CI Docker / Setup Release (push) Has been cancelled
CI Docker / Docker${{ matrix.tag }} (push) Has been cancelled
CodeQL / Analyze (${{ matrix.name }}) (push) Has been cancelled
ci(codeql): migrate builds to ninja (#3250)
2024-10-02 01:12:40 +00:00

4.4 KiB

Building

Sunshine binaries are built using CMake and requires cmake > 3.25.

Building Locally

Dependencies

Linux

Dependencies vary depending on the distribution. You can reference our linux_build.sh script for a list of dependencies we use in Debian-based and Fedora-based distributions. Please submit a PR if you would like to extend the script to support other distributions.

CUDA Toolkit

Sunshine requires CUDA Toolkit for NVFBC capture. There are two caveats to CUDA:

  1. The version installed depends on the version of GCC.
  2. The version of CUDA you use will determine compatibility with various GPU generations. At the time of writing, the recommended version to use is CUDA ~11.8. See CUDA compatibility for more info.

@tip{To install older versions, select the appropriate run file based on your desired CUDA version and architecture according to CUDA Toolkit Archive}

macOS

You can either use Homebrew or MacPorts to install dependencies.

Homebrew
dependencies=(
  "boost"  # Optional
  "cmake"
  "doxygen"  # Optional, for docs
  "graphviz"  # Optional, for docs
  "icu4c"  # Optional, if boost is not installed
  "miniupnpc"
  "ninja"
  "node"
  "openssl@3"
  "opus"
  "pkg-config"
)
brew install "${dependencies[@]}"

If there are issues with an SSL header that is not found:

@tabs{ @tab{ Intel | bash ln -s /usr/local/opt/openssl/include/openssl /usr/local/include/openssl } @tab{ Apple Silicon | bash ln -s /opt/homebrew/opt/openssl/include/openssl /opt/homebrew/include/openssl } }

MacPorts
dependencies=(
  "cmake"
  "curl"
  "doxygen"  # Optional, for docs
  "graphviz"  # Optional, for docs
  "libopus"
  "miniupnpc"
  "ninja"
  "npm9"
  "pkgconfig"
)
sudo port install "${dependencies[@]}"

Windows

First you need to install MSYS2, then startup "MSYS2 UCRT64" and execute the following commands.

Update all packages
pacman -Syu
Install dependencies
dependencies=(
  "doxygen"  # Optional, for docs
  "git"
  "mingw-w64-ucrt-x86_64-boost"  # Optional
  "mingw-w64-ucrt-x86_64-cmake"
  "mingw-w64-ucrt-x86_64-cppwinrt"
  "mingw-w64-ucrt-x86_64-curl-winssl"
  "mingw-w64-ucrt-x86_64-graphviz"  # Optional, for docs
  "mingw-w64-ucrt-x86_64-miniupnpc"
  "mingw-w64-ucrt-x86_64-nlohmann-json"
  "mingw-w64-ucrt-x86_64-nodejs"
  "mingw-w64-ucrt-x86_64-nsis"
  "mingw-w64-ucrt-x86_64-onevpl"
  "mingw-w64-ucrt-x86_64-openssl"
  "mingw-w64-ucrt-x86_64-opus"
  "mingw-w64-ucrt-x86_64-toolchain"
)
pacman -S "${dependencies[@]}"

Clone

Ensure git is installed on your system, then clone the repository using the following command:

git clone https://github.com/lizardbyte/sunshine.git --recurse-submodules
cd sunshine
mkdir build

Build

cmake -B build -G Ninja -S .
ninja -C build

@tip{Available build options can be found in options.cmake.}

Package

@tabs{ @tab{Linux | @tabs{ @tab{deb | bash cpack -G DEB --config ./build/CPackConfig.cmake } @tab{rpm | bash cpack -G RPM --config ./build/CPackConfig.cmake } }} @tab{macOS | @tabs{ @tab{DragNDrop | bash cpack -G DragNDrop --config ./build/CPackConfig.cmake } }} @tab{Windows | @tabs{ @tab{Installer | bash cpack -G NSIS --config ./build/CPackConfig.cmake } @tab{Portable | bash cpack -G ZIP --config ./build/CPackConfig.cmake } }} }

Remote Build

It may be beneficial to build remotely in some cases. This will enable easier building on different operating systems.

  1. Fork the project
  2. Activate workflows
  3. Trigger the CI workflow manually
  4. Download the artifacts/binaries from the workflow run summary
[TOC]