# Options affecting listfile parsing
parse:
  # Specify structure for custom cmake functions
  additional_commands:
    rocm_mark_as_analyzer:
      pargs:
        nargs: 0
    rocm_check_toolchain_var:
      pargs:
        nargs: 4
    rocm_find_clang_tidy_version:
      pargs:
        nargs: 1
    rocm_enable_clang_tidy:
      pargs:
        nargs: '*'
        flags:
        - ALL
        - ANALYZE_TEMPORARY_DTORS
        - ENABLE_ALPHA_CHECKS
      kwargs:
        HEADER_FILTER: 1
        CHECKS: +
        ERRORS: +
        EXTRA_ARGS: +
        CLANG_ARGS: +
    rocm_clang_tidy_check:
      pargs:
        nargs: 1
    rocm_find_cppcheck_version:
      pargs:
        nargs: 1
    rocm_enable_cppcheck:
      pargs:
        nargs: '*'
        flags:
        - FORCE
        - INCONCLUSIVE
      kwargs:
        RULE_FILE: 1
        CHECKS: +
        SUPPRESS: +
        DEFINE: +
        UNDEFINE: +
        INCLUDE: +
        SOURCES: +
    rocm_create_package:
      pargs:
        nargs: '*'
        flags:
        - LDCONFIG
        - PTH
      kwargs:
        NAME: 1
        DESCRIPTION: 1
        SECTION: 1
        MAINTAINER: 1
        LDCONFIG_DIR: 1
        PREFIX: 1
        DEPENDS: +
    rocm_set_os_id:
      pargs:
        nargs: 1
    rocm_read_os_release:
      pargs:
        nargs: 2
    rocm_install_symlink_subdir:
      pargs:
        nargs: 1
    rocm_install_targets:
      pargs:
        nargs: '*'
        flags: []
      kwargs:
        PREFIX: 1
        EXPORT: 1
        TARGETS: +
        INCLUDE: +
    rocm_list_split:
      pargs:
        nargs: 3
    rocm_write_package_template_function:
      pargs:
        nargs: 2
    rocm_write_package_deps:
      pargs:
        nargs: 1
    rocm_export_targets:
      pargs:
        nargs: '*'
        flags: []
      kwargs:
        NAMESPACE: 1
        EXPORT: 1
        NAME: 1
        COMPATIBILITY: 1
        PREFIX: 1
        TARGETS: +
        DEPENDS: +
        INCLUDE: +
        STATIC_DEPENDS: +
    rocm_configure_package_config_file:
      pargs:
        nargs: 2+
        flags: []
      kwargs:
        INSTALL_DESTINATION: 1
        PREFIX: 1
        PATH_VARS: +
    rocm_set_parent:
      pargs:
        nargs: 1
    rocm_get_rev_count:
      pargs:
        nargs: 1+
        flags: []
      kwargs:
        DIRECTORY: 1
        REV: +
    rocm_get_commit_count:
      pargs:
        nargs: 1+
        flags: []
      kwargs:
        PARENT: 1
        DIRECTORY: 1
    rocm_get_build_info:
      pargs:
        nargs: 2
    rocm_get_version:
      pargs:
        nargs: 1+
        flags: []
      kwargs:
        VERSION: 1
        DIRECTORY: 1
    rocm_version_regex_parse:
      pargs:
        nargs: 3
    rocm_setup_version:
      pargs:
        nargs: '*'
        flags:
        - NO_GIT_TAG_VERSION
      kwargs:
        VERSION: 1
        PARENT: 1
    rocm_get_so_patch:
      pargs:
        nargs: 1
    rocm_set_soversion:
      pargs:
        nargs: 2
    test_expect_eq:
      pargs:
        nargs: 2
    test_expect_matches:
      pargs:
        nargs: 2
    test_expect_not_matches:
      pargs:
        nargs: 2
    test_expect_file:
      pargs:
        nargs: '*'
    test_exec:
      pargs:
        nargs: '*'
        flags:
        - OUTPUT_QUIET
        - ERROR_QUIET
        - OUTPUT_STRIP_TRAILING_WHITESPACE
        - ERROR_STRIP_TRAILING_WHITESPACE
        - ECHO_OUTPUT_VARIABLE
        - ECHO_ERROR_VARIABLE
      kwargs:
        COMMAND: '*'
        WORKING_DIRECTORY: 1
        TIMEOUT: 1
        RESULT_VARIABLE: 1
        RESULTS_VARIABLE: 1
        OUTPUT_VARIABLE: 1
        ERROR_VARIABLE: 1
        INPUT_FILE: 1
        OUTPUT_FILE: 1
        ERROR_FILE: 1
        COMMAND_ECHO: 1
        ENCODING: 1
    configure_dir:
      pargs:
        nargs: 1+
        flags: []
      kwargs:
        CMAKE_ARGS: +
        TARGETS: +
    install_dir:
      pargs:
        nargs: 1+
        flags: []
      kwargs:
        CMAKE_ARGS: +
        TARGETS: +
    write_version_cmake:
      pargs:
        nargs: 3
    test_check_package:
      pargs:
        nargs: '*'
        flags: []
      kwargs:
        NAME: 1
        HEADER: 1
        TARGET: 1
        CHECK_TARGET: 1
  # Override configurations per-command where available
  override_spec: {}
  # Specify variable tags.
  vartags: []
  # Specify property tags.
  proptags: []
# Options affecting formatting.
format:
  # Disable formatting entirely, making cmake-format a no-op
  disable: false
  # How wide to allow formatted cmake files
  line_width: 120
  # How many spaces to tab for indent
  tab_size: 4
  # If true, lines are indented using tab characters (utf-8
  # 0x09) instead of <tab_size> space characters (utf-8 0x20).
  # In cases where the layout would require a fractional tab
  # character, the behavior of the  fractional indentation is
  # governed by <fractional_tab_policy>
  use_tabchars: false
  # If <use_tabchars> is True, then the value of this variable
  # indicates how fractional indentions are handled during
  # whitespace replacement. If set to 'use-space', fractional
  # indentation is left as spaces (utf-8 0x20). If set to
  # '`round-up` fractional indentation is replaced with a single'
  # tab character (utf-8 0x09) effectively shifting the column
  # to the next tabstop
  fractional_tab_policy: use-space
  # If an argument group contains more than this many sub-groups
  # (parg or kwarg groups) then force it to a vertical layout.
  max_subgroups_hwrap: 2
  # If a positional argument group contains more than this many
  # arguments, then force it to a vertical layout.
  max_pargs_hwrap: 8
  # If a cmdline positional group consumes more than this many
  # lines without nesting, then invalidate the layout (and nest)
  max_rows_cmdline: 2
  # If true, separate flow control names from their parentheses
  # with a space
  separate_ctrl_name_with_space: false
  # If true, separate function names from parentheses with a
  # space
  separate_fn_name_with_space: false
  # If a statement is wrapped to more than one line, than dangle
  # the closing parenthesis on its own line.
  dangle_parens: false
  # If the trailing parenthesis must be 'dangled' on its on
  # 'line, then align it to this reference: `prefix`: the start'
  # 'of the statement,  `prefix-indent`: the start of the'
  # 'statement, plus one indentation  level, `child`: align to'
  # the column of the arguments
  dangle_align: prefix
  # If the statement spelling length (including space and
  # parenthesis) is smaller than this amount, then force reject
  # nested layouts.
  min_prefix_chars: 4
  # If the statement spelling length (including space and
  # parenthesis) is larger than the tab width by more than this
  # amount, then force reject un-nested layouts.
  max_prefix_chars: 10
  # If a candidate layout is wrapped horizontally but it exceeds
  # this many lines, then reject the layout.
  max_lines_hwrap: 2
  # What style line endings to use in the output.
  line_ending: unix
  # Format command names consistently as 'lower' or 'upper' case
  command_case: lower
  # Format keywords consistently as 'lower' or 'upper' case
  keyword_case: unchanged
  # A list of command names which should always be wrapped
  always_wrap: []
  # If true, the argument lists which are known to be sortable
  # will be sorted lexicographicall
  enable_sort: true
  # If true, the parsers may infer whether or not an argument
  # list is sortable (without annotation).
  autosort: false
  # By default, if cmake-format cannot successfully fit
  # everything into the desired linewidth it will apply the
  # last, most agressive attempt that it made. If this flag is
  # True, however, cmake-format will print error, exit with non-
  # zero status code, and write-out nothing
  require_valid_layout: false
  # A dictionary mapping layout nodes to a list of wrap
  # decisions. See the documentation for more information.
  layout_passes: {}
# Options affecting comment reflow and formatting.
markup:
  # What character to use for bulleted lists
  bullet_char: '*'
  # What character to use as punctuation after numerals in an
  # enumerated list
  enum_char: .
  # If comment markup is enabled, don't reflow the first comment
  # block in each listfile. Use this to preserve formatting of
  # your copyright/license statements.
  first_comment_is_literal: false
  # If comment markup is enabled, don't reflow any comment block
  # which matches this (regex) pattern. Default is `None`
  # (disabled).
  literal_comment_pattern: null
  # Regular expression to match preformat fences in comments
  # default= ``r'^\s*([`~]{3}[`~]*)(.*)$'``
  fence_pattern: ^\s*([`~]{3}[`~]*)(.*)$
  # Regular expression to match rulers in comments default=
  # '``r''^\s*[^\w\s]{3}.*[^\w\s]{3}$''``'
  ruler_pattern: ^\s*[^\w\s]{3}.*[^\w\s]{3}$
  # If a comment line matches starts with this pattern then it
  # is explicitly a trailing comment for the preceeding
  # argument. Default is '#<'
  explicit_trailing_pattern: '#<'
  # If a comment line starts with at least this many consecutive
  # hash characters, then don't lstrip() them off. This allows
  # for lazy hash rulers where the first hash char is not
  # separated by space
  hashruler_min_length: 10
  # If true, then insert a space between the first hash char and
  # remaining hash chars in a hash ruler, and normalize its
  # length to fill the column
  canonicalize_hashrulers: true
  # enable comment markup parsing and reflow
  enable_markup: true
# Options affecting the linter
lint:
  # a list of lint codes to disable
  disabled_codes:
    - C0111
    - C0113
    - W0106
  # regular expression pattern describing valid function names
  function_pattern: '[0-9a-z_]+'
  # regular expression pattern describing valid macro names
  macro_pattern: '[0-9a-z_]+'
  # regular expression pattern describing valid names for
  # variables with global (cache) scope
  global_var_pattern: '[A-Z][0-9A-Z_]+'
  # regular expression pattern describing valid names for
  # variables with global scope (but internal semantic)
  internal_var_pattern: '[A-Z][0-9A-Z_]+'
  # regular expression pattern describing valid names for
  # variables with local scope
  # TODO: Should be [a-z][a-z0-9_]+
  local_var_pattern: '[a-zA-Z_][a-zA-Z0-9_]+'
  # regular expression pattern describing valid names for
  # privatedirectory variables
  private_var_pattern: '[a-zA-Z_][a-zA-Z0-9_]+'
  # regular expression pattern describing valid names for public
  # directory variables
  public_var_pattern: '[A-Z][0-9A-Z_]+'
  # regular expression pattern describing valid names for
  # function/macro arguments and loop variables.
  argument_var_pattern: '[A-Za-z_][0-9A-Za-z_]+'
  # regular expression pattern describing valid names for
  # keywords used in functions or macros
  keyword_pattern: '[A-Z][0-9A-Z_]+'
  # In the heuristic for C0201, how many conditionals to match
  # within a loop in before considering the loop a parser.
  max_conditionals_custom_parser: 2
  # Require at least this many newlines between statements
  min_statement_spacing: 1
  # Require no more than this many newlines between statements
  max_statement_spacing: 2
  max_returns: 6
  max_branches: 25
  max_arguments: 5
  max_localvars: 15
  max_statements: 120
# Options affecting file encoding
encode:
  # If true, emit the unicode byte-order mark (BOM) at the start
  # of the file
  emit_byteorder_mark: false
  # Specify the encoding of the input file. Defaults to utf-8
  input_encoding: utf-8
  # Specify the encoding of the output file. Defaults to utf-8.
  # Note that cmake only claims to support utf-8 so be careful
  # when using anything else
  output_encoding: utf-8
# Miscellaneous configurations options.
misc:
  # A dictionary containing any per-command configuration
  # overrides. Currently only `command_case` is supported.
  per_command: {}
