66 lines
7.6 KiB
Meson
66 lines
7.6 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-lzma', type: 'feature', value: 'auto', description: 'Enable LZMA via liblzma (xz)')
|
||
option('enable-onnx', type: 'feature', value: 'auto', description: 'ONNX Runtime integration in vector library (auto-detect)')
|
||
option('require-fts5', type: 'boolean', value: true, description: 'Fail configure if sqlite3 lacks FTS5')
|
||
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('conan-generators-dir', type: 'string', value: '', description: 'Optional path (relative to source root) to Conan generator outputs; when empty Meson searches under the build directory (e.g. build/debug/conan).')
|
||
option('cli11-cmake-path', type: 'string', value: '', description: 'Optional path to CLI11 CMake package directory (e.g., /opt/homebrew/Cellar/cli11/2.4.1/lib/cmake/CLI11). When set, Meson will add this to cmake_module_path for CLI11 discovery.')
|
||
option('onnxruntime-cmake-path', type: 'string', value: '', description: 'Optional path to onnxruntime CMake package dir (e.g., /opt/homebrew/opt/onnxruntime/lib/cmake/onnxruntime). Used to augment cmake_module_path for ORT discovery in Meson.')
|
||
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-symbols', type: 'boolean', value: true, description: 'Build Tree-sitter symbol extractor plugin')
|
||
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('unit-timeout', type: 'integer', value: 1200, description: 'Default timeout for selected unit/mobile test targets')
|
||
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)')
|
||
option('bench-timeout', type: 'integer', value: 90, description: 'Timeout (seconds) for benchmark/stress-oriented test suite')
|
||
option('integration-timeout', type: 'integer', value: 600, description: 'Timeout (seconds) for integration_services suite (doubled for CI stability)')
|
||
option('integration-ui-timeout', type: 'integer', value: 1200, description: 'Timeout (seconds) for UI/service integration batches')
|
||
option('integration-smoke-timeout', type: 'integer', value: 600, description: 'Timeout (seconds) for integration_smoke suite (doubled for CI stability)')
|
||
option('integration-daemon-timeout', type: 'integer', value: 1200, description: 'Timeout (seconds) for integration_daemon suite (doubled for CI stability)')
|
||
option('stress-iters', type: 'integer', value: 100, description: 'Default iteration count for StressTail tests (propagated via YAMS_STRESS_ITERS env)')
|
||
|
||
# Test registration toggles (CI-friendly defaults)
|
||
option('enable-integration-tests', type: 'boolean', value: false, description: 'Register integration smoke, CLI, daemon, search, and services tests')
|
||
option('enable-integration-services', type: 'boolean', value: false, description: 'Register integration services test binary')
|
||
option('enable-integration-smoke', type: 'boolean', value: false, description: 'Register integration smoke test binary')
|
||
option('enable-daemon-integration', type: 'boolean', value: false, description: 'Register daemon integration test binary (e2e with running daemon)')
|
||
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('split-debug', type: 'boolean', value: false, description: 'Enable -gsplit-dwarf to emit debug info in separate .dwo files (reduces .o sizes 60-80% on ELF targets; opt-in for CI/disk-constrained builds)')
|
||
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)')
|
||
|
||
# Thread sanitizer (for detecting data races in debug builds)
|
||
option('enable-tsan', type: 'boolean', value: false, description: 'Enable ThreadSanitizer for race detection (debug builds only, significant performance impact)')
|
||
|
||
# Address sanitizer (for detecting memory errors in debug builds)
|
||
option('enable-asan', type: 'boolean', value: false, description: 'Enable AddressSanitizer for memory error detection (debug builds only, significant performance impact)')
|
||
|
||
# Undefined behavior sanitizer (for detecting UB in debug builds)
|
||
|
||
# FAISS backend for online vector index updates (optional)
|
||
option('enable-faiss', type: 'boolean', value: true,
|
||
description: 'Build with FAISS HNSW vector backend (for online/incremental index updates)')
|
||
option('enable-ubsan', type: 'boolean', value: false, description: 'Enable UndefinedBehaviorSanitizer (debug builds only; significant performance impact)')
|
||
|
||
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+)')
|