Top-level BUILD.md so users see the dependency list (libz3-dev, libclang-dev, llvm-dev, etc.) without spelunking docs/. Lists apt package names for Ubuntu/Debian, dnf names for Fedora/RHEL, and brew names for macOS — kept in sync with docker/Dockerfile.linux- validate, which is the executable spec. - README points at BUILD.md instead of docs/BUILDING.md. - docs/BUILDING.md trimmed to radare2 vendoring notes only (the topic that didn't belong in a top-level quick-start). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1.8 KiB
Building (radare2 integration notes)
The canonical build instructions — dependencies, per-platform install commands, environment overrides — live in ../BUILD.md.
This file keeps the radare2 vendoring and binary-backend integration notes that don't belong in the top-level quick-start.
radare2 binary backend
The binary backend links against radare2's libr_core when
pkg-config can find r_core.pc (for example under
/usr/local/lib/pkgconfig or Homebrew's prefix). If the development
package is not present, fold still builds and uses the r2
command-line fallback at runtime.
# Require linked radare2 support at configure time
meson setup build/release --reconfigure -Dradare2=enabled
# Disable linked radare2 support and rely on the CLI fallback
meson setup build/release --reconfigure -Dradare2=disabled
Vendoring radare2 should be done through a build-system dependency
path (Meson subproject/wrap or pinned external source in CI), not by
committing the full upstream tree into src/. fold is GPL-3.0-only,
so radare2's GPL-compatible builds are license-compatible, but the
upstream project is large and has plugin ABI concerns. The preferred
clean integration is:
- Build/pin radare2 in CI or a Meson subproject.
- Expose
r_core.pcto fold's Meson configure step. - Compile fold with
-Dradare2=enabled.
This keeps the binary backend using stable libr_core APIs while
avoiding a large vendored source tree in normal checkouts.
Binary backend integration test
The optional binary_backend integration test uses radare2 and a
real binary. Defaults to /usr/bin/curl when available, can be
redirected via:
FOLD_TEST_BINARY=/path/to/binary meson test -C build/release binary_backend
The test skips itself when no suitable binary or r2 command is
present.