# Configuration options
# SPDX-License-Identifier: GPL-3.0-or-later

option(
  'keyfile_default',
  type: 'string',
  value: 'root.keys',
  description: 'built-in path to DNSSEC trust anchors file',
)

option(
  'managed_ta',
  type: 'combo',
  choices: [
    'auto',
    'enabled',
    'disabled',
  ],
  value: 'auto',
  description: 'auto-manage DNSSEC trust anchors (RFC 5011)',
)

option(
  'root_hints',
  type: 'string',
  value: 'root.hints',
  description: 'built-in path to root.hints file',
)

option(
  'install_kresd_conf',
  type: 'combo',
  choices: [
    'auto',
    'enabled',
    'disabled',
  ],
  value: 'auto',
  description: 'creates kresd.conf in config directory',
)

option(
  'install_root_keys',
  type: 'combo',
  choices: [
    'auto',
    'enabled',
    'disabled',
  ],
  value: 'auto',
  description: 'installs DNSSEC TA to keyfile_default location',
)

option(
  'user',
  type: 'string',
  value: 'knot-resolver',
  description: 'user which is used for running kresd',
)

option(
  'group',
  type: 'string',
  value: 'knot-resolver',
  description: 'group which is used for running kresd',
)

option(
  'sendmmsg',
  type: 'combo',
  choices: [
    'auto',
    'enabled',
    'disabled',
  ],
  value: 'auto',
  description: 'use sendmmsg syscall towards clients',
)

option(
  'capng',
  type: 'combo',
  choices: [
    'auto',
    'enabled',
    'disabled',
  ],
  value: 'auto',
  description: 'use libcapng to drop capabilities for non-root users',
)

## Systemd
option(
  'systemd_files',
  type: 'combo',
  choices: [
    'disabled',
    'enabled',
  ],
  value: 'disabled',
  description: 'installs systemd-related files',
)


# Component options
option(
  'bench',
  type: 'combo',
  choices: [
    'auto',
    'enabled',
    'disabled',
  ],
  value: 'disabled',
  description: 'build benchmarks',
)

option(
  'client',
  type: 'combo',
  choices: [
    'auto',
    'enabled',
    'disabled',
  ],
  value: 'auto',
  description: 'build kresc client binary',
)

option(
  'utils',
  type: 'combo',
  choices: [
    'auto',
    'enabled',
    'disabled',
  ],
  value: 'auto',
  description: 'build kres utilities',
)

option(
  'dnstap',
  type: 'combo',
  choices: [
    'auto',
    'enabled',
    'disabled',
  ],
  value: 'auto',
  description: 'build dnstap module',
)

option(
  'malloc',
  type: 'combo',
  choices: [
    'auto',     # 'jemalloc' if available
    'disabled', # default provided by libc
    'jemalloc',
  ],
  value: 'auto',
  description: 'memory allocator to use in kresd',
)

option(
  'doc',
  type: 'combo',
  choices: [
    'auto',
    'enabled',
    'disabled',
  ],
  value: 'disabled',
  description: 'html documentation dependencies and installation',
)

option(
  'kres_gen_test',
  type: 'boolean',
  value: true,
  description: 'run kres_gen_test: a simple sanity check for our lua bindings',
)

option(
  'config_tests',
  type: 'combo',
  choices: [
    'auto',
    'enabled',
    'disabled',
  ],
  value: 'auto',
  description: 'postinstall config tests',
)

option(
  'extra_tests',
  type: 'combo',
  choices: [
    'auto',
    'enabled',
    'disabled',
  ],
  value: 'disabled',
  description: 'postinstall tests with extra dependencies',
)

option(
  'unit_tests',
  type: 'combo',
  choices: [
    'auto',
    'enabled',
    'disabled',
  ],
  value: 'auto',
  description: 'cmocka unit tests',
)

option(
  'install_rpath',
  type: 'combo',
  choices: [
    'auto',
    'enabled',
    'disabled',
  ],
  value: 'auto',
  description: 'add rpath to the knot resolver executables',
)
