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>
46 lines
5.2 KiB
Meson
46 lines
5.2 KiB
Meson
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+)')
|