Building from source¶
Slipstream builds on Linux with plain CMake and Ninja. A Makefile at the top of the repository
wraps the configure, build and package steps; the Windows version is cross-compiled from Linux.
git clone https://git.slipstreamviewer.org/sky_line/Slipstream.git
cd Slipstream
make # Python venv + configure (fetches dependencies) + build + package
make run # launch the packaged viewer
make windows # cross-build the Windows x64 package (see below)
make version # show the version/channel a build would get
make help # every target and override
CMake downloads, verifies and unpacks the prebuilt third-party libraries itself while configuring; there is no separate dependency tool to install. The first build downloads about 1 GB and needs around 30 GB of disk. On a 4–8 core machine expect 30–60 minutes; a many-core desktop takes a few minutes.
Requirements¶
- CMake 3.21 or newer, Ninja, git, a C++ compiler (GCC; the release builds use GCC 14) and Python 3.
- The Vulkan shader tools
glslc(shaderc) andglslangValidator(glslang): the build compiles the renderer's shaders and embeds the SPIR-V in the viewer. Configure stops with a message if either is missing. makecreates a small.venvin the checkout for the build's Python helpers (justllsd, listed inscripts/requirements.txt). Nothing is installed system-wide.
Linux packages¶
Arch / CachyOS
sudo pacman -S base-devel cmake ninja git python pkgconf libpulse libunwind mesa glu \
libxinerama libxcursor libxfixes libxft libpipewire dbus vlc gstreamer gst-plugins-base gst-plugins-good \
vulkan-headers vulkan-icd-loader libdecor shaderc glslang
Ubuntu / Debian: the repository does not carry a maintained package list for these. Install the
equivalents of the Arch packages above (compiler toolchain, CMake, Ninja, pkg-config, and the
development packages for PulseAudio, libunwind, Mesa/GLU, the X11 libraries, PipeWire, D-Bus, VLC,
GStreamer and Vulkan), plus the shader tools glslc and glslang-tools. The package step also
copies libdecor and its cairo plugin from the build machine, so install libdecor-0-0 and
libdecor-0-plugin-1-cairo. If configure or the link step reports a missing library, install its
development package and re-run.
The shaders (indra/vkclean/shaders, indra/newview/vkgfx/fxshaders,
indra/newview/vkgfx/llrendervk/shaders) are compiled during the build into
build-linux-x86_64/newview/vkshaders/; editing one and rebuilding recompiles only the variants
it affects. Nothing generated is committed.
Build, run, package¶
make runs cmake -S indra --preset linux-releaseos and then builds with Ninja. Output goes to
build-linux-x86_64/:
| Path | What it is |
|---|---|
newview/slipstream-bin |
the viewer binary (unstripped, large) |
newview/packaged/ |
the distributable tree; start it with newview/packaged/slipstream (make run) |
The distributable .tar.xz is skipped by default because compressing the tree takes minutes; build
it with make TARBALL=1.
For quick incremental compiles after the first build, call Ninja directly:
ninja -C build-linux-x86_64 slipstream-bin
The viewer keeps its settings and logs in ~/.slipstreamviewer (log: logs/Slipstream.log).
make clean removes the build directory (the download cache and .venv are kept);
make distclean also removes the Windows build directory and the venv.
Portability check
make build finishes with make glibc-check, which fails if a packaged binary needs a newer
glibc than 2.38 or the x86-64-v4 (AVX-512) instruction set, so tarballs run on older distributions.
You can run it on its own after any build.
Windows (cross-build)¶
make windows compiles with clang-cl and lld-link against the Microsoft CRT and Windows SDK
unpacked by xwin. You need:
- clang, lld and llvm (for
clang-cl,lld-linkandllvm-dlltool); our release builds use version 22; - the xwin sysroot in
~/.xwin(or setXWIN_ROOT):xwin --accept-license splat --output ~/.xwin; - the Vulkan loader and headers installed on the build machine (used to generate
vulkan-1.lib); 7z, andmakensis(NSIS) if you want the installer as well as the zip.
It uses the windows-cross CMake preset. The output lands in build-windows-x86_64/package/: the
_win64.zip, plus a _Setup.exe when makensis is available.
Useful overrides¶
Pass these to make, for example make VIEWER_CHANNEL="My Build".
| Variable | Default | Meaning |
|---|---|---|
PRESET |
linux-releaseos |
CMake configure preset; linux-release also pulls the proprietary packages, which most builders do not have |
EXTRA_CMAKE_FLAGS |
-DGCC_DISABLE_FATAL_WARNINGS=ON and the channel/version flags |
extra -D flags passed to CMake (setting it replaces the warning default) |
VIEWER_CHANNEL |
Slipstream Test |
channel name shown in About and sent to the grid |
BUILD_ID |
0 |
build number in the version |
SL_3P_CACHE |
~/.cache/slipstream-3p |
where downloaded third-party archives are kept; keep it to avoid re-downloading |
TARBALL |
0 |
1 also produces the .tar.xz |
Troubleshooting¶
- Compiler warnings fail the build. The viewer uses
-Werroron Linux and newer GCC releases add warnings it does not yet pass (GCC 16 trips-Wformat-truncationin the networking code). Themakedefault already adds-DGCC_DISABLE_FATAL_WARNINGS=ON; if you overrideEXTRA_CMAKE_FLAGS, keep that flag. - Download failures during configure. Third-party packages come from release assets on
git.slipstreamviewer.org; re-runmake configureonce the network is back. Packages already in the cache are not fetched again. - Changing channel or build number triggers a reconfigure automatically on the next
make.