option('dnscrypt', type: 'feature', value: 'disabled', description: 'Enable DNSCrypt')
option('libcap', type: 'feature', value: 'auto', description: 'Enable libcap for capabilities handling')
option('libedit', type: 'feature', value: 'enabled', description: 'Enable libedit')
option('libsodium', type: 'feature', value: 'auto', description: 'Enable libsodium')
option('libcrypto', type: 'feature', value: 'auto', description: 'Enable OpenSSL libcrypto)')
option('libcrypto-path', type: 'string', value: '', description: 'Custom path to find OpenSSL libcrypto')
option('tls-gnutls', type: 'feature', value: 'auto', description: 'GnuTLS-based TLS')
option('lua', type: 'combo', choices: ['auto', 'luajit', 'lua'], value: 'auto', description: 'Lua implementation to use')
option('hardening', type: 'feature', value: 'auto', description: 'Compiler security checks')
option('hardening-experimental-cf', type: 'combo', choices: ['disabled', 'full', 'branch', 'return', 'check'], value: 'disabled', description: 'Control Flow hardening')
option('hardening-experimental-scp', type: 'feature', value: 'disabled', description: 'Stack Clash Protection')
option('hardening-fortify-source', type: 'combo', choices: ['auto', 'disabled', '1', '2', '3'], value: '2', description: 'Source fortification level')
option('ipcipher', type: 'feature', value: 'auto', description: 'IPCipher')
option('tls-libssl', type: 'feature', value: 'auto', description: 'OpenSSL-based TLS')
option('tls-libssl-dir', type: 'string', value: '', description: 'Alternate OpenSSL location')
option('tls-libssl-engines', type: 'boolean', value: false, description: 'OpenSSL-based TLS with TLS engines')
option('tls-libssl-providers', type: 'boolean', value: false, description: 'OpenSSL-based TLS with TLS providers')
option('dns-over-tls', type: 'feature', value: 'auto', description: 'DNS over TLS (requires GnuTLS or OpenSSL)')
option('dns-over-https', type: 'feature', value: 'auto', description: 'DNS over HTTP/2 (requires GnuTLS or OpenSSL)')
option('dns-over-http3', type: 'feature', value: 'auto', description: 'Enable DNS over HTTP/3')
option('dns-over-quic', type: 'feature', value: 'auto', description: 'Enable DNS over QUIC')
option('unit-tests', type: 'boolean', value: false, description: 'Build and run unit tests')
option('reproducible', type: 'boolean', value: false, description: 'Reproducible builds (for distro maintainers, makes debugging difficult)')
option('systemd-service', type: 'feature', value: 'auto', description: 'Systemd integration (requires libsystemd)')
option('systemd-service-user', type: 'string', value: 'dnsdist', description: 'Systemd service user (setuid and unit file; user is not created)')
option('systemd-service-group', type: 'string', value: 'dnsdist', description: 'Systemd service group (setgid and unit file; group is not created)')
option('auto-var-init', type: 'combo', value: 'disabled', choices: ['zero', 'pattern', 'disabled'], description: 'Enable initialization of automatic variables')
option('snmp', type: 'feature', value: 'disabled', description: 'Enable SNMP')
option('dnstap', type: 'feature', value: 'auto', description: 'Enable DNSTAP support through libfstrm')
option('h2o', type: 'feature', value: 'disabled', description: 'Enable H2O library with event loop support for DNS over HTTP/2')
option('nghttp2', type: 'feature', value: 'auto', description: 'Enable nghttp2 library support for DNS over HTTP/2')
option('cdb', type: 'feature', value: 'auto', description: 'CDB key-value store support')
option('lmdb', type: 'feature', value: 'auto', description: 'LMDB key-value store support')
option('quiche', type: 'feature', value: 'auto', description: 'Enable Quiche library support for DNS over QUIC and DNS over HTTP/3')
option('re2', type: 'feature', value: 'auto', description: 'Enable re2 for regular expressions')
option('xsk', type: 'feature', value: 'auto', description: 'Enable AF_XDP / XSK')
option('fuzz-targets', type: 'boolean', value: false, description: 'Enable fuzzing targets')
option('ebpf', type: 'feature', value: 'auto', description: 'Enable eBPF support')
option('fuzzer_ldflags', type: 'string', value: '', description: 'Linker flags used for the fuzzing targets (a path to the libFuzzer static library, for example)')
option('yaml', type: 'feature', value: 'disabled', description: 'Enable YAML configuration')
option('man-pages', type: 'boolean', value: true, description: 'Generate man pages')
option('clang-coverage-format', type: 'boolean', value: false, description: 'Whether to generate coverage data in clang format')
