blob: b3fc44e702ea96ee367f2018f5ac1e3a86a3df52 [file] [log] [blame]
# Copyright © 2022 Imagination Technologies Ltd.
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
# The above copyright notice and this permission notice (including the next
# paragraph) shall be included in all copies or substantial portions of the
# Software.
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
Language: Cpp
Standard: c++11
UseCRLF: false
ColumnLimit: 80
DeriveLineEnding: false
DerivePointerAlignment: false
ExperimentalAutoDetectBinPacking: false
DisableFormat: false
########
# Tabs #
########
UseTab: Never
TabWidth: 3
ConstructorInitializerIndentWidth: 6
ContinuationIndentWidth: 3
IndentWidth: 3
#IndentCaseBlocks: true # Requires clang-11
IndentCaseLabels: false
#IndentExternBlock: NoIndent # Requires clang-11
IndentGotoLabels: false
IndentPPDirectives: AfterHash
IndentWrappedFunctionNames: false
AccessModifierOffset: -4 # -IndentWidth
NamespaceIndentation: None
##########
# Braces #
##########
AlignAfterOpenBracket: Align
AllowAllArgumentsOnNextLine: false
AllowAllConstructorInitializersOnNextLine: false
AllowAllParametersOfDeclarationOnNextLine: false
BinPackArguments: false
BinPackParameters: false
Cpp11BracedListStyle: false
########################
# Whitespace Alignment #
########################
AlignConsecutiveAssignments: false
#AlignConsecutiveBitFields: false # Requires clang-11
AlignConsecutiveDeclarations: false
AlignConsecutiveMacros: false
AlignTrailingComments: false
AlignEscapedNewlines: Left
#AlignOperands: Align # Requires clang-11
#BitFieldColonSpacing: Both # Requires clang-12
PointerAlignment: Right
#SpaceAroundPointerQualifiers: Both # Requires clang-12
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeCpp11BracedList: false
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
#SpaceBeforeParens: ControlStatementsExceptForEachMacros # Requires clang-11
SpaceBeforeRangeBasedForLoopColon: true
SpaceBeforeSquareBrackets: false
SpaceInEmptyBlock: false
SpaceInEmptyParentheses: false
SpacesInAngles: false
SpacesInCStyleCastParentheses: false
SpacesInConditionalStatement: false
SpacesInContainerLiterals: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
SpacesBeforeTrailingComments: 2
############################
# Multi-line constructions #
############################
AllowShortBlocksOnASingleLine: Empty
AllowShortCaseLabelsOnASingleLine: false
#AllowShortEnumsOnASingleLine: false # Requires clang-11
AllowShortFunctionsOnASingleLine: Empty
AllowShortIfStatementsOnASingleLine: Never
AllowShortLambdasOnASingleLine: All
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: Yes
BreakBeforeBraces: Custom
BraceWrapping:
AfterCaseLabel: false
AfterClass: false
AfterControlStatement: Never
AfterEnum: false
AfterFunction: true
AfterNamespace: true
AfterObjCDeclaration: false
AfterStruct: false
AfterUnion: false
BeforeCatch: false
BeforeElse: false
# BeforeLambdaBody: false # Requires clang-11
IndentBraces: false
SplitEmptyFunction: true
SplitEmptyNamespace: true
SplitEmptyRecord: true
BreakBeforeBinaryOperators: None
BreakBeforeTernaryOperators: true
BreakConstructorInitializers: AfterColon
BreakInheritanceList: AfterColon
BreakStringLiterals: false
CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: true
#InsertTrailingCommas: Wrapped # Requires clang-11
KeepEmptyLinesAtTheStartOfBlocks: false
MaxEmptyLinesToKeep: 1
SortUsingDeclarations: true
############
# Includes #
############
# TODO: Temporary config
IncludeBlocks: Preserve
SortIncludes: false
# TODO: This requires additional work to clean up headers & includes first
#IncludeBlocks: Regroup
#SortIncludes: true
#IncludeIsMainRegex: '(_test)?$'
##IncludeIsMainSourceRegex: <default>
#IncludeCategories:
# - Regex: '^"'
# Priority: 1
############
# Comments #
############
FixNamespaceComments: false
#############
# Penalties #
#############
# Taken from torvalds/kernel:.clang-format
PenaltyBreakAssignment: 10
PenaltyBreakBeforeFirstCallParameter: 30
PenaltyBreakComment: 10
PenaltyBreakFirstLessLess: 0
PenaltyBreakString: 10
PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 100
PenaltyReturnTypeOnItsOwnLine: 60
#######################
# User-defined macros #
#######################
CommentPragmas: '^ IWYU pragma:'
MacroBlockBegin: ''
MacroBlockEnd: ''
#AttributeMacros: [] # Requires clang-12
ForEachMacros: [
'foreach_instr',
'foreach_instr_safe',
'hash_table_foreach',
'LIST_FOR_EACH_ENTRY',
'LIST_FOR_EACH_ENTRY_FROM',
'LIST_FOR_EACH_ENTRY_FROM_REV',
'LIST_FOR_EACH_ENTRY_SAFE',
'LIST_FOR_EACH_ENTRY_SAFE_REV',
'list_for_each_entry',
'list_for_each_entry_from',
'list_for_each_entry_from_rev',
'list_for_each_entry_from_safe',
'list_for_each_entry_rev',
'list_for_each_entry_safe',
'list_for_each_entry_safe_rev',
'list_pair_for_each_entry',
'pvr_csb_emit',
'pvr_csb_emit_merge',
'pvr_csb_pack',
'nir_foreach_block',
'nir_foreach_block_safe',
'nir_foreach_function',
'nir_foreach_instr',
'nir_foreach_instr_safe',
'nir_foreach_shader_in_variable',
'nir_foreach_shader_out_variable',
'nir_foreach_use',
'nir_foreach_use_safe',
'nir_foreach_variable_with_modes',
'u_vector_foreach',
'util_dynarray_foreach',
'vk_foreach_struct',
'vk_foreach_struct_const',
# FIXME: vk_outarray_append doesn't fit here, remove
# it when a better solution exists for it.
'vk_outarray_append',
'vk_outarray_append_typed'
]
NamespaceMacros: [
]
StatementMacros: [
]
TypenameMacros: [
]
#WhitespaceSensitiveMacros: [] # Requires clang-11