Installation

Build Raven from source on Linux x86_64.

Raven is built from source for now. Prebuilt releases are on the way.

Requirements

Requirement Used for
Linux x86_64 The host Raven runs on
CMake 3.20 or later Build configuration
A C++20 compiler The runtime
Python 3.11 or later Provisioning and test scripts
Git and an internet connection The source and the pinned test downloads
x86_64 and i686 MinGW-w64 Windows test programs in both widths

Package names change from one distribution to another; install the compiler and development headers your distribution provides. Both MinGW-w64 toolchains are needed, even on a 64-bit host, because the tests cover 32 and 64-bit programs.

Get the source

git clone https://github.com/mirkobrombin/raven.git
cd raven

Build

cmake -S . -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo
cmake --build build -j2

The first configuration downloads pinned releases of Notepad++, SQLite and BusyBox for the tests and checks their SHA-256 hashes. The runtime ends up in build/native/raven; there is nothing to install system-wide, and the rest of this documentation uses that path.

Desktop and graphics

Graphical programs need Wayland and the development files of the graphics stack: Wayland, xkbcommon, pixman, FreeType and Vulkan. The tested setup adds libpng 1.6.59, a font-enabled CPU build of Skia, Liberation fonts, DXVK and vkd3d-proton.

The basic build does not include the guest controls, installer libraries or text-layout component. Prepare those before following the first-application guide. Their build tools must be on PATH: Clang, widl, Bison, patch, and the MinGW-w64 compilers and resource compilers for both architectures.

Run these commands from the Raven source directory:

export RAVEN_COMPONENTS_DIR="$HOME/.local/share/raven-components"
python3 scripts/provision-controls.py --output "$RAVEN_COMPONENTS_DIR/controls64" --arch x64
python3 scripts/provision-controls.py --output "$RAVEN_COMPONENTS_DIR/controls32" --arch x86
python3 scripts/provision-installer.py --output "$RAVEN_COMPONENTS_DIR/installer64" --arch x64
python3 scripts/provision-installer.py --output "$RAVEN_COMPONENTS_DIR/installer32" --arch x86
python3 scripts/provision-text.py --output "$RAVEN_COMPONENTS_DIR/text"
python3 scripts/provision-rtl.py --output "$RAVEN_COMPONENTS_DIR/rtl"
python3 scripts/provision-roots.py --output "$RAVEN_COMPONENTS_DIR/roots"

Then configure their paths and rebuild. The build copies the selected guest components beside the runtime, with the 32-bit components in its x86 directory:

cmake -S . -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo \
  -DRAVEN_CONTROLS_COMPONENT_DIR="$RAVEN_COMPONENTS_DIR/controls64" \
  -DRAVEN_CONTROLS32_COMPONENT_DIR="$RAVEN_COMPONENTS_DIR/controls32" \
  -DRAVEN_INSTALLER_COMPONENT_DIR="$RAVEN_COMPONENTS_DIR/installer64" \
  -DRAVEN_INSTALLER32_COMPONENT_DIR="$RAVEN_COMPONENTS_DIR/installer32" \
  -DRAVEN_TEXT_COMPONENT_PATH="$RAVEN_COMPONENTS_DIR/text/raven-text.dll" \
  -DRAVEN_RTL_COMPONENT_PATH="$RAVEN_COMPONENTS_DIR/rtl/raven-rtl.dll" \
  -DRAVEN_ROOT_CERTIFICATE_DIRECTORY="$RAVEN_COMPONENTS_DIR/roots"
cmake --build build -j2

Skia and its qualified fonts are separate inputs: these scripts do not build or download them. To enable that text-rendering path, supply all three of RAVEN_SKIA_SOURCE, RAVEN_SKIA_LIBRARY and RAVEN_FONT_DIRECTORY in the same CMake configuration. The library must be a font-enabled CPU build compatible with the supplied source. This remains a manual part of the setup.

Graphics DLLs and the pinned libpng build have their own provisioning scripts:

python3 scripts/provision-graphics.py --help
python3 scripts/provision-libpng.py --help

The scripts check their pinned inputs. provision-libpng.py prints the PNG_LIBRARY_RELEASE and PNG_PNG_INCLUDE_DIR arguments to add to CMake. The graphics page covers DXVK and vkd3d-proton, including the runtime DLL path needed when launching an application. CMake enables what it finds; omitted components leave their features and tests unavailable.

Component variables

CMake variable Points to
RAVEN_DXVK_PE64_DIR 64-bit DXVK DLLs
RAVEN_DXVK_PE32_DIR 32-bit DXVK DLLs
RAVEN_VKD3D_PE64_DIR 64-bit vkd3d-proton DLLs
RAVEN_SKIA_SOURCE The pinned Skia source
RAVEN_SKIA_LIBRARY The font-enabled CPU Skia library
RAVEN_FONT_DIRECTORY The Liberation fonts
RAVEN_ROOT_CERTIFICATE_DIRECTORY Certificates from provision-roots.py
RAVEN_INSTALLER_COMPONENT_DIR 64-bit installer components
RAVEN_INSTALLER32_COMPONENT_DIR 32-bit installer components
RAVEN_CONTROLS_COMPONENT_DIR 64-bit common controls
RAVEN_CONTROLS32_COMPONENT_DIR 32-bit common controls
RAVEN_TEXT_COMPONENT_PATH The text layout component
RAVEN_RTL_COMPONENT_PATH The RTL component

The Skia and font variables go together: CMake requires the source headers and library to exist and checks the font hashes. It does not verify a Skia source revision or library hash.

Run the tests

ctest --test-dir build --output-on-failure -j1

The October 23, 2026 audit recorded 276 passes and eight failures out of 284 tests. Its publication reference was 21fa2aa2284c8cce9f3b9ae811ee65fcd5134fbf; it used RelWithDebInfo, sanitizers disabled, the provisioned graphics, text and installer components, supplied test applications, qualified font-hash cache overrides and serial CTest execution. The historical result and tested binary hash describe the configuration and the limits of its revision record. This is not a result for the current build: run CTest on your own checkout.

Update

Pull the new source, then run the configure and build commands again. Take a prefix snapshot before trying a new build on an application you care about.

Next: your first application.