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('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-libdecaf', type: 'feature', value: 'auto', description: 'Enable libdecaf-based signers') option('signers-libcrypto', type: 'string', value: 'auto', description: 'Enable libcrypto-based signers (auto, enabled, disabled, or a path)') option('tls-libssl', type: 'feature', value: 'auto', description: 'Enable OpenSSL-based TLS') option('tls-gnutls', type: 'feature', value: 'auto', description: 'Enable GnuTLS-based TLS') option('dns-over-tls', type: 'boolean', value: false, description: 'Enable DNS over TLS (requires GnuTLS or OpenSSL)') option('ipcipher', type: 'feature', value: 'auto', description: 'Enable 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: 'Create reproducible builds (for distribution maintainers, makes debugging more difficult)') option('fuzz-targets', type: 'boolean', value: false, description: 'Enable fuzzing targets') 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: 'boolean', value: true, description: 'Bind backend') option('module-bind-dyn', type: 'boolean', value: false, description: 'Bind backend (dynamically loadable)') option('module-pipe', type: 'boolean', value: false, description: 'Pipe backend') option('module-pipe-dyn', type: 'boolean', value: true, description: 'Pipe backend (dynamically loadable)') option('module-gmysql', type: 'boolean', value: true, description: 'Generic MySQL backend') option('module-gmysql-dyn', type: 'boolean', value: false, description: 'Generic MySQL backend (dynamically loadable)') option('module-godbc', type: 'boolean', value: false, description: 'Generic ODBC backend') option('module-godbc-dyn', type: 'boolean', value: false, description: 'Generic ODBC backend (dynamically loadable)') option('module-gpgsql', type: 'boolean', value: false, description: 'Generic PostgreSQL backend') option('module-gpgsql-dyn', type: 'boolean', value: false, description: 'Generic PostgreSQL backend (dynamically loadable)') option('module-gsqlite3', type: 'boolean', value: false, description: 'Generic SQLite3 backend') option('module-gsqlite3-dyn', type: 'boolean', value: false, description: 'Generic SQLite3 backend (dynamically loadable)') option('module-ldap', type: 'boolean', value: false, description: 'LDAP backend') option('module-ldap-dyn', type: 'boolean', value: false, description: 'LDAP backend (dynamically loadable)') option('module-remote', type: 'combo', choices: ['disabled', 'with-zeromq', 'without-zeromq'], value: 'with-zeromq', description: 'Remote backend') option('module-remote-dyn', type: 'combo', choices: ['disabled', 'with-zeromq', 'without-zeromq'], value: 'disabled', description: 'Remote backend (dynamically loadable)') option('module-tinydns', type: 'boolean', value: false, description: 'TinyDNS backend') option('module-tinydns-dyn', type: 'boolean', value: false, description: 'TinyDNS backend (dynamically loadable)') option('module-geoip', type: 'boolean', value: false, description: 'GeoIP backend') option('module-geoip-dyn', type: 'boolean', value: false, description: 'GeoIP backend (dynamically loadable)') option('module-lmdb', type: 'boolean', value: false, description: 'LMDB backend') option('module-lmdb-dyn', type: 'boolean', value: false, description: 'LMDB backend (dynamically loadable)') option('module-lua2', type: 'boolean', value: false, description: 'Lua2 backend') option('module-lua2-dyn', type: 'boolean', value: false, description: 'Lua2 backend (dynamically loadable)') 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-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')