yams/meson_options.txt
trvon ca944de51b
build: trim Meson options and build only the Boost libraries YAMS links
meson_options.txt had 47 options. Several were read but never set by
any workflow, script or doc, several only fed test-lane timeouts, and
enable-{tsan,asan,ubsan} duplicated b_sanitize. 47 -> 33.

Removed (behavior kept at the previous default everywhere):
- require-fts5 (configure now always errors on a SQLite without FTS5,
  the old default), conan-generators-dir, cli11-cmake-path,
  onnxruntime-cmake-path (Conan/CMake discovery under the build dir is
  unchanged), split-debug.
- unit-timeout, integration-timeout, integration-ui-timeout,
  integration-smoke-timeout, integration-daemon-timeout and stress-iters:
  replaced by the same constants at their call sites (smoke keeps its
  test-timeout-scale multiplier). Only meson/profiles/ci-fast.ini and
  nightly-soak.ini set them, and nothing used those profiles; both go.
- enable-integration-services/-smoke and enable-daemon-integration:
  folded into enable-integration-tests. Debug builds still register every
  integration suite; nothing set the sub-toggles.

Kept, because third_party/symspell's meson.build reads them:
bench-timeout, enable-tsan and enable-asan. YAMS itself now derives all
sanitizer handling (extra flags, TSan runtime links, test timeouts) from
b_sanitize; setup.sh still mirrors its choice into enable-tsan/asan for
the submodule, and the CI ASan lane keeps -Denable-asan=true for the
same reason. enable-ubsan is a deprecated no-op (a warning if it
disagrees with b_sanitize) so build dirs configured with it still
regenerate; the UBSan lane passes only -Db_sanitize=undefined and still
gets -fno-sanitize-recover=all (standalone UBSan aborts; ASan+UBSan stays
recoverable, as before).

Conan: the without_* Boost list was applied only to iOS/Android. YAMS
uses Boost.Asio (header-only) and links only boost_system/boost_thread
on every platform (asio/ssl uses OpenSSL directly; no spawn/context), so
the list now applies everywhere. Debug Boost package on grim: 45 static
libraries / 229 MiB -> 10 / 6.8 MiB (Release: 45 / 30 MiB before).

Verified on grim: ./setup.sh Debug --no-tsan --with-tests reconfigures
an existing build/debug and builds; an existing build/release (configured
with -Denable-tsan/-Denable-asan) regenerates.

Signed-off-by: trvon <me@trevon.dev>
2026-10-01 18:52:34 -06:00

46 lines
5.2 KiB
Meson
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

option('build-cli', type: 'boolean', value: true, description: 'Build CLI tools')
option('build-mcp-server', type: 'boolean', value: true, description: 'Build MCP server')
option('wasi', type: 'boolean', value: false, description: 'Build a WASI-friendly subset (no daemon IPC, no dynamic plugins, limited features)')
option('enable-onnx', type: 'feature', value: 'disabled', description: 'ONNX Runtime integration in vector library (deprecated; opt in with enabled or auto)')
option('require-sqlite-vec', type: 'boolean', value: true, description: 'Require sqlite-vec-cpp submodule for static vector DB; when true and not found, Meson will error out (recommended). Set to false only if providing a runtime module via YAMS_SQLITE_VEC_MODULE.')
option('database-backend', type: 'combo', choices: ['libsql', 'sqlite'], value: 'libsql', description: 'Database backend: libsql (default, MVCC concurrent writes) or sqlite (standard SQLite3)')
option('protoc-path', type: 'string', value: '', description: 'Optional path to a build-machine protoc binary for protobuf code generation, primarily for cross-builds.')
option('build-plugins', type: 'boolean', value: true, description: 'Build plugins under plugins/')
option('plugin-s3', type: 'boolean', value: true, description: 'Build object_storage_s3 plugin')
option('plugin-onnx', type: 'boolean', value: true, description: 'Build ONNX plugin (requires onnxruntime and vector lib)')
option('build-tests', type: 'boolean', value: false, description: 'Build unit/integration tests under tests/')
option('build-fuzzers', type: 'boolean', value: false, description: 'Build fuzzing harnesses under tools/fuzzing/')
option('build-benchmarks', type: 'boolean', value: false, description: 'Build benchmark utilities and executables under src/benchmarks')
option('plugin-zyp', type: 'boolean', value: true, description: 'Build zyp PDF extractor plugin (requires Zig 0.15+)')
option('plugin-glint', type: 'boolean', value: false, description: 'Build Glint NL entity extractor plugin (GLiNER-based)')
option('yams-version', type: 'string', value: '', description: 'Override runtime/display version (falls back to project version when empty). A generated header will expose this.')
option('bench-timeout', type: 'integer', value: 90, description: 'Timeout (seconds) for bench/stress-oriented tests (also read by third_party/symspell)')
option('test-timeout-scale', type: 'integer', value: 1, description: 'Multiplier for daemon startup/wait timeouts in test code (e.g., 2 gives 2× the default waits)')
# Test registration toggles (CI-friendly defaults)
option('enable-integration-tests', type: 'boolean', value: false, description: 'Register the integration suites (smoke, CLI, daemon, search, services) in non-debug builds; debug builds always register them')
option('enable-mobile-tests', type: 'boolean', value: false, description: 'Register mobile ABI tests')
option('enable-mobile-bindings', type: 'boolean', value: false, description: 'Build mobile C ABI shared library (yams_mobile)')
option('enable-vector-tests', type: 'boolean', value: false, description: 'Include vector/embedding tests (requires ONNX runtime and model downloads)')
option('enable-bench-tests', type: 'boolean', value: false, description: 'Register bench/isolated performance-heavy unit tests')
option('enable-profiling', type: 'boolean', value: false, description: 'Enable Tracy profiling instrumentation')
option('enable-rocprofiler-tracy', type: 'feature', value: 'auto', description: 'Link Tracy client against ROCm rocprofiler (auto-detect ROCm; disabled otherwise)')
option('enable-stress-tests', type: 'boolean', value: false, description: 'Register stress test binary')
option('enable-dcheck', type: 'boolean', value: true, description: 'Enable YAMS_DCHECK even when NDEBUG is set (enabled by default; disable with -Denable-dcheck=false for max-speed shipping builds)')
# libc++ hardening modes (only effective when using libc++)
option('libcxx-hardening', type: 'combo', choices: ['none', 'fast', 'extensive', 'debug'], value: 'none', description: 'libc++ hardening mode: none (default), fast (minimal overhead), extensive (more checks), debug (maximum validation)')
# Sanitizers are selected with Meson's b_sanitize; YAMS derives its sanitizer
# handling from it. enable-tsan/enable-asan remain only as mirrors for
# third_party/symspell (its benchmark timeouts read them); setup.sh sets them
# from the same choice. enable-ubsan is a deprecated no-op kept so older build
# directories still regenerate.
option('enable-tsan', type: 'boolean', value: false, description: 'Mirror of b_sanitize=thread for third_party/symspell (set by setup.sh)')
option('enable-asan', type: 'boolean', value: false, description: 'Mirror of b_sanitize=address for third_party/symspell (set by setup.sh)')
option('enable-ubsan', type: 'boolean', value: false, deprecated: true, description: 'Deprecated: use -Db_sanitize=undefined')
option('enable-re2', type: 'feature', value: 'auto', description: 'Use Google RE2 regex engine for grep (10-50x faster than std::regex; auto-detect)')
# C++20 Modules (experimental)
option('enable-modules', type: 'boolean', value: false, description: 'Enable C++20 module compilation (experimental, requires GCC 13+/Clang 16+/MSVC 17.4+)')