Skip to content

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) and glslangValidator (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.
  • make creates a small .venv in the checkout for the build's Python helpers (just llsd, listed in scripts/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-link and llvm-dlltool); our release builds use version 22;
  • the xwin sysroot in ~/.xwin (or set XWIN_ROOT): xwin --accept-license splat --output ~/.xwin;
  • the Vulkan loader and headers installed on the build machine (used to generate vulkan-1.lib);
  • 7z, and makensis (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 -Werror on Linux and newer GCC releases add warnings it does not yet pass (GCC 16 trips -Wformat-truncation in the networking code). The make default already adds -DGCC_DISABLE_FATAL_WARNINGS=ON; if you override EXTRA_CMAKE_FLAGS, keep that flag.
  • Download failures during configure. Third-party packages come from release assets on git.slipstreamviewer.org; re-run make configure once 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.