option('lua', type: 'combo', choices: ['auto', 'luajit', 'lua', 'lua51', 'lua-5.1', 'lua5.1', 'lua52', 'lua-5.2', 'lua5.2', 'lua53', 'lua-5.3', 'lua5.3', 'lua54', 'lua-5.4', 'lua5.4'], 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('rng-kiss', type: 'boolean', value: false, description: 'Use the unsafe KISS RNG')
option('signers-libsodium', type: 'feature', value: 'auto', description: 'Enable libsodium-based signers')
option('signers-libcrypto', type: 'feature', value: 'auto', description: 'Enable OpenSSL libcrypto-based signers)')
option('signers-libcrypto-path', type: 'string', value: '', description: 'Custom path to find OpenSSL libcrypto')
option('tls-libssl', type: 'feature', value: 'auto', description: 'OpenSSL-based TLS')
option('tls-libssl-dir', type: 'string', value: '', description: 'Alternate OpenSSL location')
option('tls-gnutls', type: 'feature', value: 'auto', description: 'GnuTLS-based TLS')
option('dns-over-tls', type: 'feature', value: 'auto', description: 'DNS over TLS (requires GnuTLS or OpenSSL)')
option('ipcipher', type: 'feature', value: 'auto', description: 'IPcipher (requires libcrypto)')
option('unit-tests', type: 'boolean', value: false, description: 'Build and run unit tests')
option('unit-tests-backends', type: 'boolean', value: false, description: 'Build and run backend unit tests')
option('reproducible', type: 'boolean', value: false, description: 'Reproducible builds (for distro maintainers, makes debugging difficult)')
option('fuzz-targets', type: 'boolean', value: false, description: 'Enable fuzzing targets')
option('fuzzer_ldflags', type: 'string', value: '', description: 'Linker flags used for the fuzzing targets (a path to the libFuzzer static library, for example)')
option('verbose-logging', type: 'boolean', value: false, description: 'Enable verbose logging')
option('experimental-pkcs11', type: 'feature', value: 'disabled', description: 'PKCS11 support')
option('experimental-gss-tsig', type: 'feature', value: 'disabled', description: 'GSS-TSIG support')
option('socket-dir', type: 'string', value: '/var/run', description: 'Where the control socket lives')
option('module-bind', type: 'combo', choices: ['disabled', 'static', 'dynamic'], value: 'static', description: 'Bind backend')
option('module-pipe', type: 'combo', choices: ['disabled', 'static', 'dynamic'], value: 'dynamic', description: 'Pipe backend')
option('module-gmysql', type: 'combo', choices: ['disabled', 'static', 'dynamic'], value: 'disabled', description: 'Generic MySQL backend')
option('module-godbc', type: 'combo', choices: ['disabled', 'static', 'dynamic'], value: 'disabled', description: 'Generic ODBC backend')
option('module-gpgsql', type: 'combo', choices: ['disabled', 'static', 'dynamic'], value: 'disabled', description: 'Generic PostgreSQL backend')
option('module-gsqlite3', type: 'combo', choices: ['disabled', 'static', 'dynamic'], value: 'disabled', description: 'Generic SQLite3 backend')
option('module-ldap', type: 'combo', choices: ['disabled', 'static', 'dynamic'], value: 'disabled', description: 'LDAP backend')
option('module-remote', type: 'combo', choices: ['disabled', 'static', 'dynamic'], value: 'disabled', description: 'Remote backend')
option('module-remote-zeromq', type: 'boolean', value: false, description: 'Use ZeroMQ in the Remote backend')
option('module-tinydns', type: 'combo', choices: ['disabled', 'static', 'dynamic'], value: 'disabled', description: 'TinyDNS backend')
option('module-geoip', type: 'combo', choices: ['disabled', 'static', 'dynamic'], value: 'disabled', description: 'GeoIP backend')
option('module-lmdb', type: 'combo', choices: ['disabled', 'static', 'dynamic'], value: 'disabled', description: 'LMDB backend')
option('module-lua2', type: 'combo', choices: ['disabled', 'static', 'dynamic'], value: 'disabled', description: 'Lua2 backend')
option('tools', type: 'boolean', value: false, description: 'Build extra tools')
option('tools-ixfrdist', type: 'boolean', value: false, description: 'Build ixfrdist')
option('lua-records', type: 'boolean', value: true, description: 'Support Lua records')
option('systemd-service', type: 'feature', value: 'auto', description: 'Systemd integration (requires libsystemd)')
option('systemd-service-user', type: 'string', value: 'pdns', description: 'Systemd service user (setuid and unit file; user is not created)')
option('systemd-service-group', type: 'string', value: 'pdns', 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('malloc-trace', type: 'boolean', value: false, description: 'Enable malloc-trace')
option('clang-coverage-format', type: 'boolean', value: false, description: 'Whether to generate coverage data in clang format')
