# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0

option(
  'bin_dir',
  type: 'string',
  value: 'undef',
)

option(
  'ot_version',
  type: 'string',
  value: 'undef',
)

option(
  'tock_local',
  type: 'boolean',
  value: false,
)

option(
  'keep_includes',
  type: 'boolean',
  value: true,
)

option(
  'coverage',
  type: 'boolean',
  value: false,
)
