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+)')