From 2e3b24078e63ae944fc1d1e7ef10a70dfd2ebac6 Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Wed, 24 Mar 2021 15:46:48 -0700 Subject: Brings the clang-format files from develop NOTE: Not wired into github actions at this time. --- .clang-format | 96 +++++++++++++++++++++++++++++++++++++++++++++++++ MANIFEST | 3 ++ bin/format_source | 26 ++++++++++++++ bin/format_source_patch | 34 ++++++++++++++++++ 4 files changed, 159 insertions(+) create mode 100644 .clang-format create mode 100755 bin/format_source create mode 100755 bin/format_source_patch diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..62dc6b5 --- /dev/null +++ b/.clang-format @@ -0,0 +1,96 @@ +--- +Language: Cpp +BasedOnStyle: LLVM +AlignConsecutiveAssignments: true +#llvm11: AlignConsecutiveBitFields: false +AlignConsecutiveDeclarations: true +AlignConsecutiveMacros: true +#llvm10-11: AlignOperands: true - Align +#llvm11: AllowShortEnumsOnASingleLine: true +AllowShortFunctionsOnASingleLine: None +AlwaysBreakAfterReturnType: AllDefinitions +# Can enable the following section when llvm 12.x is out +#AttributeMacros: +# - H5_ATTR_FORMAT +# - H5_ATTR_UNUSED +# - H5_ATTR_DEPRECATED_USED +# - H5_ATTR_NDEBUG_UNUSED +# - H5_ATTR_DEBUG_API_USED +# - H5_ATTR_PARALLEL_UNUSED +# - H5_ATTR_PARALLEL_USED +# - H5_ATTR_NORETURN +# - H5_ATTR_CONST +# - H5_ATTR_PURE +# - H5_ATTR_FALLTHROUGH +BraceWrapping: + AfterFunction: true + #llvm10-11: AfterControlStatement: false - Never + BeforeCatch: true + BeforeElse: true + #llvm11: BeforeLambdaBody: false + #llvm11: BeforeWhile: false +BreakBeforeBraces: Stroustrup +BreakAfterJavaFieldAnnotations: true +BreakStringLiterals: true +ColumnLimit: 110 # Update $max_trace_macro_line_len in bin/trace also +ForEachMacros: ['ALL_MEMBERS', 'UNIQUE_MEMBERS'] +IncludeCategories: + - Regex: '^"(llvm|llvm-c|clang|clang-c)/' + Priority: 3 + SortPriority: 0 + - Regex: '^(<|"(gtest|gmock|isl|json)/)' + Priority: 4 + SortPriority: 0 + - Regex: '.*' + Priority: 0 + SortPriority: 0 + - Regex: '^H5*.*' + Priority: 1 + SortPriority: 0 + - Regex: 'private.*' + Priority: 2 + SortPriority: 0 +IncludeIsMainRegex: '(public)?$' +IndentCaseLabels: true +#llvm11: IndentCaseBlocks: false +IndentGotoLabels: false +#llvm11: IndentExternBlock: AfterExternBlock +IndentWidth: 4 +#llvm11: InsertTrailingCommas: None +MacroBlockBegin: "^BEGIN_FUNC" +MacroBlockEnd: "^END_FUNC" +ObjCBlockIndentWidth: 4 +#llvm11: ObjCBreakBeforeNestedBlockParam: true +ReflowComments: true +SortIncludes: false +StatementMacros: + - FUNC_ENTER_API + - FUNC_LEAVE_API + - FUNC_ENTER_NOAPI_NOINIT_NOERR + - FUNC_LEAVE_NOAPI + - H5_BEGIN_TAG + - HGOTO_DONE_TAG + - H5_END_TAG + - HSYS_DONE_ERROR + - HSYS_GOTO_ERROR + - HDONE_ERROR + - HERROR + - H5_LEAVE + - H5E_PRINTF + - H5E_THROW + - HGOTO_DONE + - HGOTO_ERROR + - HMPI_ERROR + - HMPI_DONE_ERROR + - HMPI_GOTO_ERROR + - H5_GCC_DIAG_OFF + - H5_GCC_DIAG_ON + - CATCH +#llvm10: TypenameMacros: +#llvm10: - STACK_OF +#llvm10: - LIST +#llvm11: WhitespaceSensitiveMacros: +#llvm11: - STRINGIZE +#llvm11: - PP_STRINGIZE +... + diff --git a/MANIFEST b/MANIFEST index 9ff9698..445c46b 100644 --- a/MANIFEST +++ b/MANIFEST @@ -33,6 +33,7 @@ ./autogen.sh ./configure.ac +./.clang-format ./.github/workflows/main.yml _DO_NOT_DISTRIBUTE_ ./m4/aclocal_cxx.m4 @@ -71,6 +72,8 @@ ./bin/deploy ./bin/distdep ./bin/errors _DO_NOT_DISTRIBUTE_ +./bin/format_source +./bin/format_source_patch ./bin/genparser ./bin/gcov_script _DO_NOT_DISTRIBUTE_ ./bin/h5cc.in diff --git a/bin/format_source b/bin/format_source new file mode 100755 index 0000000..dce34e5 --- /dev/null +++ b/bin/format_source @@ -0,0 +1,26 @@ +#!/bin/bash +# +# Recursively format all C & C++ sources and header files, except those in the +# 'config' directory and generated files, such as H5LTanalyze.c, etc. +# +# Note that any files or directories that are excluded here should also be +# added to the 'exclude' list in .github/workflows/clang-format-check.yml +# +# (Remember to update both bin/format_source and bin/format_source_patch) + +find . \( -type d -path ./config -prune -and -not -path ./config \) \ + -or \( \( \! \( \ + -name H5LTanalyze.c \ + -or -name H5LTparse.c \ + -or -name H5LTparse.h \ + -or -name H5Epubgen.h \ + -or -name H5Einit.h \ + -or -name H5Eterm.h \ + -or -name H5Edefin.h \ + -or -name H5version.h \ + -or -name H5overflow.h \ + \) \) \ + -and \( -iname *.h -or -iname *.c -or -iname *.cpp -or -iname *.hpp \) \) \ + | xargs clang-format -style=file -i -fallback-style=none + +exit 0 diff --git a/bin/format_source_patch b/bin/format_source_patch new file mode 100755 index 0000000..439baf2 --- /dev/null +++ b/bin/format_source_patch @@ -0,0 +1,34 @@ +#!/bin/bash +# +# Recursively format all C & C++ sources and header files, except those in the +# 'config' directory and generated files, such as H5LTanalyze.c, etc. +# +# Note that any files or directories that are excluded here should also be +# added to the 'exclude' list in .github/workflows/clang-format-check.yml +# +# (Remember to update both bin/format_source and bin/format_source_patch) + +find . \( -type d -path ./config -prune -and -not -path ./config \) \ + -or \( \( \! \( \ + -name H5LTanalyze.c \ + -or -name H5LTparse.c \ + -or -name H5LTparse.h \ + -or -name H5Epubgen.h \ + -or -name H5Einit.h \ + -or -name H5Eterm.h \ + -or -name H5Edefin.h \ + -or -name H5version.h \ + -or -name H5overflow.h \ + \) \) \ + -and \( -iname *.h -or -iname *.c -or -iname *.cpp -or -iname *.hpp \) \) \ + | xargs clang-format -style=file -i -fallback-style=none + +git diff > clang_format.patch + +# Delete if 0 size +if [ ! -s clang_format.patch ] +then + rm clang_format.patch +fi + +exit 0 -- cgit v0.12