Lean Builds
FrameLift's built-in capabilities — graphics backends, audio, the read-ahead cache, and so on — are modules, the same unit plugins are built from (see Architecture). Built-in modules are compiled into the host, and each one you don't need can be compiled out for a leaner binary with fewer dependencies.
The FRAMELIFT_MODULE_<NAME> options
Every built-in module exposes a CMake option whose default is the module's
.Module.json enabled flag. Pass -DFRAMELIFT_MODULE_<NAME>=OFF at configure
time to drop a module and everything that depends only on it.
The option name is derived from the module id: strip the framelift. prefix,
uppercase the rest, and replace any non-alphanumeric character with _. For
example:
| Module id | CMake option |
|---|---|
framelift.graphics_vulkan | FRAMELIFT_MODULE_GRAPHICS_VULKAN |
framelift.read_ahead | FRAMELIFT_MODULE_READ_AHEAD |
framelift.audio | FRAMELIFT_MODULE_AUDIO |
Example: a Vulkan-free build
Drop the Vulkan backend (and its dependencies — Vulkan-Headers, volk, VMA) while keeping the OpenGL backend:
cmake -B cmake-build-lean -DCMAKE_BUILD_TYPE=Debug -DFRAMELIFT_MODULE_GRAPHICS_VULKAN=OFF
cmake --build cmake-build-lean
See exactly what's toggleable
At configure time CMake prints the full enabled/disabled module table via
framelift_report_builtin_modules(). Each row shows the module's state, its option
name, and any constraints:
-- FrameLift built-in modules:
-- Vulkan: ON (FRAMELIFT_MODULE_GRAPHICS_VULKAN) - Vulkan backend, zero-copy GPU decode
-- Media Playback: ON (FRAMELIFT_MODULE_PLAYBACK) [required] - FFmpeg-backed playback
-- …
Read this table to learn the exact option name and current default for every module in your tree.
Constraints
Two kinds of module cannot be toggled this way:
- Required modules (e.g. media playback, the host UI, the graphics core) are
marked
requiredin their metadata; disabling one is a configure error. The table tags them[required]. - Platform-unsupported modules are always off regardless of the option — for example, a Windows-only module on a Linux build. The table notes the reason.
Dependencies are validated too: if you disable a module that an enabled module requires, configuration fails with a clear message rather than producing a broken binary.