1# ---------------------------------- 2# Options affecting listfile parsing 3# ---------------------------------- 4with section("parse"): 5 6 # Specify structure for custom cmake functions 7 additional_commands = { 'foo': { 'flags': ['BAR', 'BAZ'], 8 'kwargs': {'DEPENDS': '*', 'HEADERS': '*', 'SOURCES': '*'}}} 9 10 # Override configurations per-command where available 11 override_spec = {} 12 13 # Specify variable tags. 14 vartags = [] 15 16 # Specify property tags. 17 proptags = [] 18 19# ----------------------------- 20# Options affecting formatting. 21# ----------------------------- 22with section("format"): 23 24 # Disable formatting entirely, making cmake-format a no-op 25 disable = False 26 27 # How wide to allow formatted cmake files 28 line_width = 80 29 30 # How many spaces to tab for indent 31 tab_size = 2 32 33 # If true, lines are indented using tab characters (utf-8 0x09) instead of 34 # <tab_size> space characters (utf-8 0x20). In cases where the layout would 35 # require a fractional tab character, the behavior of the fractional 36 # indentation is governed by <fractional_tab_policy> 37 use_tabchars = False 38 39 # If <use_tabchars> is True, then the value of this variable indicates how 40 # fractional indentions are handled during whitespace replacement. If set to 41 # 'use-space', fractional indentation is left as spaces (utf-8 0x20). If set 42 # to `round-up` fractional indentation is replaced with a single tab character 43 # (utf-8 0x09) effectively shifting the column to the next tabstop 44 fractional_tab_policy = 'use-space' 45 46 # If an argument group contains more than this many sub-groups (parg or kwarg 47 # groups) then force it to a vertical layout. 48 max_subgroups_hwrap = 2 49 50 # If a positional argument group contains more than this many arguments, then 51 # force it to a vertical layout. 52 max_pargs_hwrap = 6 53 54 # If a cmdline positional group consumes more than this many lines without 55 # nesting, then invalidate the layout (and nest) 56 max_rows_cmdline = 2 57 58 # If true, separate flow control names from their parentheses with a space 59 separate_ctrl_name_with_space = False 60 61 # If true, separate function names from parentheses with a space 62 separate_fn_name_with_space = False 63 64 # If a statement is wrapped to more than one line, than dangle the closing 65 # parenthesis on its own line. 66 dangle_parens = False 67 68 # If the trailing parenthesis must be 'dangled' on its on line, then align it 69 # to this reference: `prefix`: the start of the statement, `prefix-indent`: 70 # the start of the statement, plus one indentation level, `child`: align to 71 # the column of the arguments 72 dangle_align = 'prefix' 73 74 # If the statement spelling length (including space and parenthesis) is 75 # smaller than this amount, then force reject nested layouts. 76 min_prefix_chars = 4 77 78 # If the statement spelling length (including space and parenthesis) is larger 79 # than the tab width by more than this amount, then force reject un-nested 80 # layouts. 81 max_prefix_chars = 10 82 83 # If a candidate layout is wrapped horizontally but it exceeds this many 84 # lines, then reject the layout. 85 max_lines_hwrap = 2 86 87 # What style line endings to use in the output. 88 line_ending = 'unix' 89 90 # Format command names consistently as 'lower' or 'upper' case 91 command_case = 'canonical' 92 93 # Format keywords consistently as 'lower' or 'upper' case 94 keyword_case = 'unchanged' 95 96 # A list of command names which should always be wrapped 97 always_wrap = [] 98 99 # If true, the argument lists which are known to be sortable will be sorted 100 # lexicographicall 101 enable_sort = True 102 103 # If true, the parsers may infer whether or not an argument list is sortable 104 # (without annotation). 105 autosort = False 106 107 # By default, if cmake-format cannot successfully fit everything into the 108 # desired linewidth it will apply the last, most agressive attempt that it 109 # made. If this flag is True, however, cmake-format will print error, exit 110 # with non-zero status code, and write-out nothing 111 require_valid_layout = False 112 113 # A dictionary mapping layout nodes to a list of wrap decisions. See the 114 # documentation for more information. 115 layout_passes = {} 116 117# ------------------------------------------------ 118# Options affecting comment reflow and formatting. 119# ------------------------------------------------ 120with section("markup"): 121 122 # What character to use for bulleted lists 123 bullet_char = '*' 124 125 # What character to use as punctuation after numerals in an enumerated list 126 enum_char = '.' 127 128 # If comment markup is enabled, don't reflow the first comment block in each 129 # listfile. Use this to preserve formatting of your copyright/license 130 # statements. 131 first_comment_is_literal = True 132 133 # If comment markup is enabled, don't reflow any comment block which matches 134 # this (regex) pattern. Default is `None` (disabled). 135 literal_comment_pattern = None 136 137 # Regular expression to match preformat fences in comments default= 138 # ``r'^\s*([`~]{3}[`~]*)(.*)$'`` 139 fence_pattern = '^\\s*([`~]{3}[`~]*)(.*)$' 140 141 # Regular expression to match rulers in comments default= 142 # ``r'^\s*[^\w\s]{3}.*[^\w\s]{3}$'`` 143 ruler_pattern = '^\\s*[^\\w\\s]{3}.*[^\\w\\s]{3}$' 144 145 # If a comment line matches starts with this pattern then it is explicitly a 146 # trailing comment for the preceeding argument. Default is '#<' 147 explicit_trailing_pattern = '#<' 148 149 # If a comment line starts with at least this many consecutive hash 150 # characters, then don't lstrip() them off. This allows for lazy hash rulers 151 # where the first hash char is not separated by space 152 hashruler_min_length = 10 153 154 # If true, then insert a space between the first hash char and remaining hash 155 # chars in a hash ruler, and normalize its length to fill the column 156 canonicalize_hashrulers = True 157 158 # enable comment markup parsing and reflow 159 enable_markup = True 160 161# ---------------------------- 162# Options affecting the linter 163# ---------------------------- 164with section("lint"): 165 166 # a list of lint codes to disable 167 disabled_codes = [] 168 169 # regular expression pattern describing valid function names 170 function_pattern = '[0-9a-z_]+' 171 172 # regular expression pattern describing valid macro names 173 macro_pattern = '[0-9A-Z_]+' 174 175 # regular expression pattern describing valid names for variables with global 176 # (cache) scope 177 global_var_pattern = '[A-Z][0-9A-Z_]+' 178 179 # regular expression pattern describing valid names for variables with global 180 # scope (but internal semantic) 181 internal_var_pattern = '_[A-Z][0-9A-Z_]+' 182 183 # regular expression pattern describing valid names for variables with local 184 # scope 185 local_var_pattern = '[a-z][a-z0-9_]+' 186 187 # regular expression pattern describing valid names for privatedirectory 188 # variables 189 private_var_pattern = '_[0-9a-z_]+' 190 191 # regular expression pattern describing valid names for public directory 192 # variables 193 public_var_pattern = '[A-Z][0-9A-Z_]+' 194 195 # regular expression pattern describing valid names for function/macro 196 # arguments and loop variables. 197 argument_var_pattern = '[a-z][a-z0-9_]+' 198 199 # regular expression pattern describing valid names for keywords used in 200 # functions or macros 201 keyword_pattern = '[A-Z][0-9A-Z_]+' 202 203 # In the heuristic for C0201, how many conditionals to match within a loop in 204 # before considering the loop a parser. 205 max_conditionals_custom_parser = 2 206 207 # Require at least this many newlines between statements 208 min_statement_spacing = 1 209 210 # Require no more than this many newlines between statements 211 max_statement_spacing = 2 212 max_returns = 6 213 max_branches = 12 214 max_arguments = 5 215 max_localvars = 15 216 max_statements = 50 217 218# ------------------------------- 219# Options affecting file encoding 220# ------------------------------- 221with section("encode"): 222 223 # If true, emit the unicode byte-order mark (BOM) at the start of the file 224 emit_byteorder_mark = False 225 226 # Specify the encoding of the input file. Defaults to utf-8 227 input_encoding = 'utf-8' 228 229 # Specify the encoding of the output file. Defaults to utf-8. Note that cmake 230 # only claims to support utf-8 so be careful when using anything else 231 output_encoding = 'utf-8' 232 233# ------------------------------------- 234# Miscellaneous configurations options. 235# ------------------------------------- 236with section("misc"): 237 238 # A dictionary containing any per-command configuration overrides. Currently 239 # only `command_case` is supported. 240 per_command = {} 241