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:
- The version installed depends on the version of GCC.
- 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.
- Fork the project
- Activate workflows
- Trigger the CI workflow manually
- Download the artifacts/binaries from the workflow run summary
Previous | Next |
---|---|
Troubleshooting | Contributing |