Building source for Linux/BSD
Dependencies, SCons, C# preparation and build-result diagnosis.
This builds Reckfell 1.0.0 source for Linux/BSD. To package a game with an existing editor, use Linux export. The commands below are configuration recipes; this review did not compile or launch a Linux/BSD engine.
Prepare the host
Work in Source, containing SConstruct. The build enforces Python 3.9+ and SCons 4.4+. Use a C++17-capable compiler/linker with the selected architecture's headers and libraries. Check python3 --version, scons --version, c++ --version and pkg-config --version in the same terminal that will build.
The platform detector expects a POSIX host other than macOS and pkg-config. Setting platform=linuxbsd on Windows does not provide a Linux toolchain. BSD uses the same platform name, with host-specific dependencies; a Linux executable is not automatically a BSD executable.
Dependencies depend on selected options:
| Feature | What to check |
|---|---|
| X11 | x11, xcursor, xinerama, xext, xrandr, xrender and xi when linked through pkg-config |
| Wayland | wayland-scanner; client/cursor/egl libraries when not using dynamic wrappers |
| System fonts/audio/desktop | fontconfig, ALSA/PulseAudio, D-Bus and other enabled backends |
| Custom system libraries | Matching development packages for every builtin_*=no override |
| Accessibility | Matching AccessKit C SDK at accesskit_sdk_path, or an intentional accesskit=no build |
use_sowrap=yes can use bundled headers and dynamically loaded libraries; it does not eliminate runtime dependencies. Missing wayland-scanner disables Wayland with a warning in current source. Read configuration warnings rather than assuming a successful build retained every feature. Package names differ by OS/release; install the development package for the exact missing library instead of copying an unlabeled package-manager command.
Build a C# editor
Example for x86_64, from Source:
scons platform=linuxbsd target=editor arch=x86_64 module_mono_enabled=yes -j4platform selects the OS backend, target selects editor/templates, and arch selects CPU output. For Clang add use_llvm=yes. A different CPU requires a matching compiler/sysroot/dependencies; changing arch alone is not a complete cross-build recipe. -j4 is a starting job limit, not a memory or speed guarantee. Reduce jobs when compilation/linking exhausts memory; LTO has separate memory costs.
Expected native output is in Source/bin. Its filename also depends on dev_build, precision and module suffixes. Keep symbols for debugging. Do not use compiledb_gen_only=yes or vsproj_gen_only=yes as a normal build.
The native binary alone is insufficient for C#. The module is disabled by default, so keep module_mono_enabled=yes in matching editor and template configurations. Use .NET SDK 10, generate the glue from the new editor, then build its managed assemblies and local packages. Set RECKFELL_BINARY to the actual new executable, not an installed unrelated editor:
RECKFELL_BINARY="/absolute/Source/bin/reckfell.linuxbsd.editor.x86_64.mono"
"$RECKFELL_BINARY" --headless --generate-mono-glue modules/mono/glue
python3 modules/mono/build_scripts/build_assemblies.py --reckfell-output-dir=bin --push-nupkgs-local=bin/NuGet
"$RECKFELL_BINARY" --path /absolute/project --editorThe path is an example for that configuration. Verify each command succeeded; an old bin file is not evidence of a new successful build. Check bin/ReckfellSharp, bin/NuGet and the matching SDK 1.0.0. The project directory must contain project.reckfell. Retain matching managed/native artifacts rather than mixing output from different feature sets.
Templates and headless use
For game templates build target=template_debug and target=template_release with matching platform, arch, precision and C# module settings. These are separate outputs; an editor binary is not an export template. Point the export preset to the intended custom templates and validate the resulting game on the target OS.
--headless is a runtime mode, not another target or proof that graphics/system dependencies were removed at build time. It does not demonstrate GPU rendering. A compiled binary is not dependency-free: check libc/ABI, dynamic libraries, drivers and the .NET components required by your build. Test on the oldest OS environment you actually support; one build does not establish compatibility with all distributions.
Diagnose the first failure
| Failure | Next action |
|---|---|
| SConstruct not found | Build from Source |
| Library missing in pkg-config | Install target-architecture development files; check PKG_CONFIG_PATH and sysroot |
| Wayland unavailable afterward | Check scanner detection and configuration warnings |
| C++ succeeds, C# unavailable | Check module option, .NET SDK 10, glue and assembly/package build |
| Binary exists after a failed build | Inspect the first error, exit status and output timestamp |
| Works here, fails on another machine | Check architecture, ABI and runtime dependencies there |
Source options and C# build stages were reviewed; existing Windows CLI evidence only supports --path semantics. Linux/BSD compilation, dependency installation, rendering, export and distribution remain unverified. Source, installed Runtime and SDK were not modified.