From bac0dbe8f26a4c9a1e4248c3d41c926d4378c91d Mon Sep 17 00:00:00 2001 From: Gerard Marull-Paretas Date: Fri, 17 Dec 2021 16:16:48 +0100 Subject: [PATCH] clang-format: simplify by inheriting from LLVM The amount of options available on clang-format has become quite extensive over-time, making a dumped file difficult to read or maintain. In this patch the .clang-format has been re-written by inheriting from LLVM (default) since most of the options can be re-used to match the Zephyr/Linux coding style conventions. Note: The 14 release has interesting options for Zephyr, in particular, these new settings would be beneficial: IfMacros: - CHECKIF SpaceBeforeParens: Custom SpaceBeforeParensOptions: AfterForeachMacros: true AfterIfMacros: true .clang-format should be periodically updated as new clang-format releases reach Linux distros. Signed-off-by: Gerard Marull-Paretas --- .clang-format | 142 +++++++++++--------------------------------------- 1 file changed, 30 insertions(+), 112 deletions(-) diff --git a/.clang-format b/.clang-format index e6f1b3be2d4..f38ffbda11f 100644 --- a/.clang-format +++ b/.clang-format @@ -1,73 +1,27 @@ -# SPDX-License-Identifier: GPL-2.0 +# SPDX-License-Identifier: Apache-2.0 # -# clang-format configuration file. Intended for clang-format >= 4. +# Note: The list of ForEachMacros can be obtained using: # -# For more information, see: -# -# Documentation/process/clang-format.rst -# https://clang.llvm.org/docs/ClangFormat.html -# https://clang.llvm.org/docs/ClangFormatStyleOptions.html +# git grep -h '^#define [^[:space:]]*FOR_EACH[^[:space:]]*(' include/ \ +# | sed "s,^#define \([^[:space:]]*FOR_EACH[^[:space:]]*\)(.*$, - '\1'," \ +# | sort | uniq # +# References: +# - https://clang.llvm.org/docs/ClangFormatStyleOptions.html + --- -AccessModifierOffset: -4 -AlignAfterOpenBracket: Align -AlignConsecutiveAssignments: false -AlignConsecutiveDeclarations: false -#AlignEscapedNewlines: Left # Unknown to clang-format-4.0 -AlignOperands: true -AlignTrailingComments: false -AllowAllParametersOfDeclarationOnNextLine: false -AllowShortBlocksOnASingleLine: false -AllowShortCaseLabelsOnASingleLine: false -AllowShortFunctionsOnASingleLine: None -AllowShortIfStatementsOnASingleLine: false -AllowShortLoopsOnASingleLine: false -AlwaysBreakAfterDefinitionReturnType: None -AlwaysBreakAfterReturnType: None -AlwaysBreakBeforeMultilineStrings: false -AlwaysBreakTemplateDeclarations: false -BinPackArguments: true -BinPackParameters: true -BraceWrapping: - AfterClass: false - AfterControlStatement: false - AfterEnum: false - AfterFunction: true - AfterNamespace: true - AfterObjCDeclaration: false - AfterStruct: false - AfterUnion: false - #AfterExternBlock: false # Unknown to clang-format-5.0 - BeforeCatch: false - BeforeElse: false - IndentBraces: false - #SplitEmptyFunction: true # Unknown to clang-format-4.0 - #SplitEmptyRecord: true # Unknown to clang-format-4.0 - #SplitEmptyNamespace: true # Unknown to clang-format-4.0 -BreakBeforeBinaryOperators: None -BreakBeforeBraces: Custom -#BreakBeforeInheritanceComma: false # Unknown to clang-format-4.0 -BreakBeforeTernaryOperators: false -BreakConstructorInitializersBeforeComma: false -#BreakConstructorInitializers: BeforeComma # Unknown to clang-format-4.0 -BreakAfterJavaFieldAnnotations: false -BreakStringLiterals: false -ColumnLimit: 100 -CommentPragmas: '^ IWYU pragma:' -#CompactNamespaces: false # Unknown to clang-format-4.0 -ConstructorInitializerAllOnOneLineOrOnePerLine: false +BasedOnStyle: LLVM +AlignConsecutiveMacros: AcrossComments +AttributeMacros: + - __aligned + - __deprecated + - __packed + - __printf_like + - __syscall + - __subsystem +BreakBeforeBraces: Linux ConstructorInitializerIndentWidth: 8 ContinuationIndentWidth: 8 -Cpp11BracedListStyle: false -DerivePointerAlignment: false -DisableFormat: false -ExperimentalAutoDetectBinPacking: false -#FixNamespaceComments: false # Unknown to clang-format-4.0 - -# Taken from: -# git grep -h '^#define [^[:space:]]*FOR_EACH[^[:space:]]*(' include/ \ -# | sed "s,^#define \([^[:space:]]*FOR_EACH[^[:space:]]*\)(.*$, - '\1'," \ -# | sort | uniq ForEachMacros: - 'FOR_EACH' - 'FOR_EACH_FIXED_ARG' @@ -102,56 +56,20 @@ ForEachMacros: - 'Z_GENLIST_FOR_EACH_CONTAINER_SAFE' - 'Z_GENLIST_FOR_EACH_NODE' - 'Z_GENLIST_FOR_EACH_NODE_SAFE' - -#IncludeBlocks: Preserve # Unknown to clang-format-5.0 +IncludeBlocks: Regroup IncludeCategories: - - Regex: '.*' + - Regex: '^".*\.h"$' + Priority: 0 + - Regex: '^<(assert|complex|ctype|errno|fenv|float|inttypes|limits|locale|math|setjmp|signal|stdarg|stdbool|stddef|stdint|stdio|stdlib|string|tgmath|time|wchar|wctype)\.h>$' Priority: 1 -IncludeIsMainRegex: '(Test)?$' + - Regex: '^\$' + Priority: 2 + - Regex: '.*' + Priority: 3 IndentCaseLabels: false -#IndentPPDirectives: None # Unknown to clang-format-5.0 IndentWidth: 8 -IndentWrappedFunctionNames: false -JavaScriptQuotes: Leave -JavaScriptWrapImports: true -KeepEmptyLinesAtTheStartOfBlocks: false -MacroBlockBegin: '' -MacroBlockEnd: '' -MaxEmptyLinesToKeep: 1 -NamespaceIndentation: Inner -#ObjCBinPackProtocolList: Auto # Unknown to clang-format-5.0 -ObjCBlockIndentWidth: 8 -ObjCSpaceAfterProperty: true -ObjCSpaceBeforeProtocolList: true - -# Taken from git's rules -#PenaltyBreakAssignment: 10 # Unknown to clang-format-4.0 -PenaltyBreakBeforeFirstCallParameter: 30 -PenaltyBreakComment: 10 -PenaltyBreakFirstLessLess: 0 -PenaltyBreakString: 10 -PenaltyExcessCharacter: 100 -PenaltyReturnTypeOnItsOwnLine: 60 - -PointerAlignment: Right -ReflowComments: false -SortIncludes: false -#SortUsingDeclarations: false # Unknown to clang-format-4.0 -SpaceAfterCStyleCast: false -SpaceAfterTemplateKeyword: true -SpaceBeforeAssignmentOperators: true -#SpaceBeforeCtorInitializerColon: true # Unknown to clang-format-5.0 -#SpaceBeforeInheritanceColon: true # Unknown to clang-format-5.0 -SpaceBeforeParens: ControlStatements -#SpaceBeforeRangeBasedForLoopColon: true # Unknown to clang-format-5.0 -SpaceInEmptyParentheses: false -SpacesBeforeTrailingComments: 1 -SpacesInAngles: false -SpacesInContainerLiterals: false -SpacesInCStyleCastParentheses: false -SpacesInParentheses: false -SpacesInSquareBrackets: false -Standard: Cpp03 -TabWidth: 8 +# SpaceBeforeParens: ControlStatementsExceptControlMacros # clang-format >= 13.0 UseTab: Always -... +WhitespaceSensitiveMacros: + - STRINGIFY + - Z_STRINGIFY