Commit 232b328046 for openssl.org
commit 232b328046136a750228e1ecbfa4ef9e793e3bf8
Author: Bob Beck <beck@openssl.org>
Date: Thu Sep 4 19:02:41 2025 -0600
Add a WebKit clang-format file
Reviewed-by: Saša NedvÄ›dický <sashan@openssl.org>
Reviewed-by: Nikola Pajkovsky <nikolap@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/29241)
diff --git a/.clang-format b/.clang-format
new file mode 100644
index 0000000000..26ee4323a0
--- /dev/null
+++ b/.clang-format
@@ -0,0 +1,296 @@
+---
+BasedOnStyle: WebKit
+###################################
+#
+# OpenSSL Customizations start here.
+#
+# Customizing whitespace config should be avoided, but WebKit C style
+# does specify this for C. (with C++ being the other way around) Due
+# to limitations in clang-format it's not possible for it to default
+# to C today, it defaults to C++. Therefore we force this to the
+# WebKit C style value. If we ever have C++ code we will have to
+# consider how to deal with this.
+PointerAlignment: Right
+#
+# we add matches for /** and /*- at the top
+# of a comment block to protect comments as
+# per STYLE.md
+CommentPragmas: '(^ IWYU pragma:|^\*$|^-$)'
+# OpenSSL uses macros extensively. Tell clang-format about them.
+TypenameMacros: ['LHASH_OF', 'STACK_OF']
+StatementMacros:
+ - "DECLARE_AES_EVP"
+ - "DECLARE_ASN1_ALLOC_FUNCTIONS"
+ - "DECLARE_ASN1_ALLOC_FUNCTIONS_attr"
+ - "DECLARE_ASN1_ALLOC_FUNCTIONS_name"
+ - "DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr"
+ - "DECLARE_ASN1_DUP_FUNCTION"
+ - "DECLARE_ASN1_DUP_FUNCTION_attr"
+ - "DECLARE_ASN1_DUP_FUNCTION_name"
+ - "DECLARE_ASN1_DUP_FUNCTION_name_attr"
+ - "DECLARE_ASN1_ENCODE_FUNCTIONS"
+ - "DECLARE_ASN1_ENCODE_FUNCTIONS_attr"
+ - "DECLARE_ASN1_ENCODE_FUNCTIONS_const"
+ - "DECLARE_ASN1_ENCODE_FUNCTIONS_name"
+ - "DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr"
+ - "DECLARE_ASN1_ENCODE_FUNCTIONS_only"
+ - "DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr"
+ - "DECLARE_ASN1_FUNCTIONS"
+ - "DECLARE_ASN1_FUNCTIONS_attr"
+ - "DECLARE_ASN1_FUNCTIONS_const"
+ - "DECLARE_ASN1_FUNCTIONS_fname"
+ - "DECLARE_ASN1_FUNCTIONS_name"
+ - "DECLARE_ASN1_FUNCTIONS_name_attr"
+ - "DECLARE_ASN1_ITEM"
+ - "DECLARE_ASN1_ITEM_attr"
+ - "DECLARE_ASN1_NDEF_FUNCTION"
+ - "DECLARE_ASN1_NDEF_FUNCTION_attr"
+ - "DECLARE_ASN1_PRINT_FUNCTION"
+ - "DECLARE_ASN1_PRINT_FUNCTION_attr"
+ - "DECLARE_ASN1_PRINT_FUNCTION_fname"
+ - "DECLARE_ASN1_PRINT_FUNCTION_fname_attr"
+ - "DECLARE_COMPARISON"
+ - "DECLARE_COMPARISONS"
+ - "DECLARE_DISPATCH"
+ - "DECLARE_HT_VALUE_TYPE_FNS"
+ - "DECLARE_LHASH_COMP_FN"
+ - "DECLARE_LHASH_DOALL_ARG_FN"
+ - "DECLARE_LHASH_HASH_FN"
+ - "DECLARE_LIST_OF"
+ - "DECLARE_ML_KEM_PRVKEYDATA"
+ - "DECLARE_ML_KEM_PUBKEYDATA"
+ - "DECLARE_ML_KEM_VARIANT_KEYDATA"
+ - "DECLARE_OBJ_BSEARCH_CMP_FN"
+ - "DECLARE_OBJ_BSEARCH_GLOBAL_CMP_FN"
+ - "DECLARE_PEM_read"
+ - "DECLARE_PEM_read_attr"
+ - "DECLARE_PEM_read_bio"
+ - "DECLARE_PEM_read_bio_attr"
+ - "DECLARE_PEM_read_bio_ex"
+ - "DECLARE_PEM_read_bio_ex_attr"
+ - "DECLARE_PEM_read_ex"
+ - "DECLARE_PEM_read_ex_attr"
+ - "DECLARE_PEM_read_fp"
+ - "DECLARE_PEM_read_fp_attr"
+ - "DECLARE_PEM_read_fp_ex_attr"
+ - "DECLARE_PEM_rw"
+ - "DECLARE_PEM_rw_attr"
+ - "DECLARE_PEM_rw_cb"
+ - "DECLARE_PEM_rw_cb_attr"
+ - "DECLARE_PEM_rw_cb_ex"
+ - "DECLARE_PEM_rw_cb_ex_attr"
+ - "DECLARE_PEM_rw_const"
+ - "DECLARE_PEM_rw_const_attr"
+ - "DECLARE_PEM_rw_ex"
+ - "DECLARE_PEM_rw_ex_attr"
+ - "DECLARE_PEM_write"
+ - "DECLARE_PEM_write_attr"
+ - "DECLARE_PEM_write_bio"
+ - "DECLARE_PEM_write_bio_attr"
+ - "DECLARE_PEM_write_bio_const"
+ - "DECLARE_PEM_write_bio_const_attr"
+ - "DECLARE_PEM_write_bio_ex"
+ - "DECLARE_PEM_write_bio_ex_attr"
+ - "DECLARE_PEM_write_cb"
+ - "DECLARE_PEM_write_cb_attr"
+ - "DECLARE_PEM_write_cb_bio"
+ - "DECLARE_PEM_write_cb_bio_attr"
+ - "DECLARE_PEM_write_cb_bio_ex_attr"
+ - "DECLARE_PEM_write_cb_ex"
+ - "DECLARE_PEM_write_cb_ex_attr"
+ - "DECLARE_PEM_write_cb_ex_bio"
+ - "DECLARE_PEM_write_cb_fp"
+ - "DECLARE_PEM_write_cb_fp_attr"
+ - "DECLARE_PEM_write_cb_fp_ex_attr"
+ - "DECLARE_PEM_write_const"
+ - "DECLARE_PEM_write_const_attr"
+ - "DECLARE_PEM_write_ex"
+ - "DECLARE_PEM_write_ex_attr"
+ - "DECLARE_PEM_write_fp"
+ - "DECLARE_PEM_write_fp_attr"
+ - "DECLARE_PEM_write_fp_const"
+ - "DECLARE_PEM_write_fp_const_attr"
+ - "DECLARE_PEM_write_fp_ex_attr"
+ - "DECLARE_RUN_ONCE"
+ - "DECLARE_VARIANT"
+ - "IMPLEMENT_aead_cipher"
+ - "IMPLEMENT_aead_cipher_pipeline"
+ - "IMPLEMENT_ARIA_CFBR"
+ - "IMPLEMENT_ASN1_ALLOC_FUNCTIONS"
+ - "IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname"
+ - "IMPLEMENT_ASN1_ALLOC_FUNCTIONS_pfname"
+ - "IMPLEMENT_ASN1_DUP_FUNCTION"
+ - "IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname"
+ - "IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname"
+ - "IMPLEMENT_ASN1_FUNCTIONS"
+ - "IMPLEMENT_ASN1_FUNCTIONS_const"
+ - "IMPLEMENT_ASN1_FUNCTIONS_ENCODE_name"
+ - "IMPLEMENT_ASN1_FUNCTIONS_fname"
+ - "IMPLEMENT_ASN1_FUNCTIONS_name"
+ - "IMPLEMENT_ASN1_MSTRING"
+ - "IMPLEMENT_ASN1_NDEF_FUNCTION"
+ - "IMPLEMENT_ASN1_PRINT_FUNCTION"
+ - "IMPLEMENT_ASN1_PRINT_FUNCTION_fname"
+ - "IMPLEMENT_ASN1_STRING_FUNCTIONS"
+ - "IMPLEMENT_ASN1_TYPE"
+ - "IMPLEMENT_ASN1_TYPE_ex"
+ - "IMPLEMENT_BLAKE_functions"
+ - "IMPLEMENT_BLOCK_CIPHER"
+ - "IMPLEMENT_CFBR"
+ - "IMPLEMENT_cipher"
+ - "IMPLEMENT_CIPHER"
+ - "IMPLEMENT_CIPHER_HW_CBC"
+ - "IMPLEMENT_CIPHER_HW_CFB"
+ - "IMPLEMENT_CIPHER_HW_COPYCTX"
+ - "IMPLEMENT_CIPHER_HW_ECB"
+ - "IMPLEMENT_CIPHER_HW_OFB"
+ - "IMPLEMENT_CRMF_CTRL_FUNC"
+ - "IMPLEMENT_cts_cipher"
+ - "IMPLEMENT_des_cipher"
+ - "IMPLEMENT_DIGEST"
+ - "IMPLEMENT_digest_functions"
+ - "IMPLEMENT_digest_functions_with_settable_ctx"
+ - "IMPLEMENT_dtls1_meth_func"
+ - "IMPLEMENT_DYNAMIC_BIND_FN"
+ - "IMPLEMENT_DYNAMIC_CHECK_FN"
+ - "IMPLEMENT_ECX_VARIANT"
+ - "IMPLEMENT_EXTERN_ASN1"
+ - "IMPLEMENT_generic_cipher"
+ - "IMPLEMENT_generic_cipher_func"
+ - "IMPLEMENT_generic_cipher_genfn"
+ - "IMPLEMENT_HT_VALUE_TYPE_FNS"
+ - "IMPLEMENT_KECCAK_functions"
+ - "IMPLEMENT_KMAC_functions"
+ - "IMPLEMENT_KMAC_TABLE"
+ - "IMPLEMENT_LEGACY_ERR_LOAD"
+ - "IMPLEMENT_LEGACY_EVP_MD_METH"
+ - "IMPLEMENT_LEGACY_EVP_MD_METH_LC"
+ - "IMPLEMENT_LEGACY_EVP_MD_METH_SHA3"
+ - "IMPLEMENT_LEGACY_EVP_MD_METH_SHAKE"
+ - "IMPLEMENT_LHASH_COMP_FN"
+ - "IMPLEMENT_LHASH_DOALL_ARG"
+ - "IMPLEMENT_LHASH_DOALL_ARG_CONST"
+ - "IMPLEMENT_LHASH_DOALL_ARG_FN"
+ - "IMPLEMENT_LHASH_HASH_FN"
+ - "IMPLEMENT_MS"
+ - "IMPLEMENT_MSBLOB"
+ - "IMPLEMENT_OBJ_BSEARCH_CMP_FN"
+ - "IMPLEMENT_OBJ_BSEARCH_GLOBAL_CMP_FN"
+ - "IMPLEMENT_PEM_provided_rw"
+ - "IMPLEMENT_PEM_provided_rw_cb"
+ - "IMPLEMENT_PEM_provided_write"
+ - "IMPLEMENT_PEM_provided_write_bio"
+ - "IMPLEMENT_PEM_provided_write_body_fallback"
+ - "IMPLEMENT_PEM_provided_write_body_fallback_cb"
+ - "IMPLEMENT_PEM_provided_write_body_main"
+ - "IMPLEMENT_PEM_provided_write_body_pass"
+ - "IMPLEMENT_PEM_provided_write_body_vars"
+ - "IMPLEMENT_PEM_provided_write_cb"
+ - "IMPLEMENT_PEM_provided_write_cb_bio"
+ - "IMPLEMENT_PEM_provided_write_cb_fp"
+ - "IMPLEMENT_PEM_provided_write_cb_to"
+ - "IMPLEMENT_PEM_provided_write_fp"
+ - "IMPLEMENT_PEM_provided_write_to"
+ - "IMPLEMENT_PEM_read"
+ - "IMPLEMENT_PEM_read_bio"
+ - "IMPLEMENT_PEM_read_fp"
+ - "IMPLEMENT_PEM_rw"
+ - "IMPLEMENT_PEM_rw_cb"
+ - "IMPLEMENT_PEM_rw_const"
+ - "IMPLEMENT_PEM_write"
+ - "IMPLEMENT_PEM_write_bio"
+ - "IMPLEMENT_PEM_write_bio_const"
+ - "IMPLEMENT_PEM_write_cb"
+ - "IMPLEMENT_PEM_write_cb_bio"
+ - "IMPLEMENT_PEM_write_cb_bio_const"
+ - "IMPLEMENT_PEM_write_cb_const"
+ - "IMPLEMENT_PEM_write_cb_fp"
+ - "IMPLEMENT_PEM_write_cb_fp_const"
+ - "IMPLEMENT_PEM_write_const"
+ - "IMPLEMENT_PEM_write_fp"
+ - "IMPLEMENT_PEM_write_fp_const"
+ - "IMPLEMENT_quic_meth_func"
+ - "IMPLEMENT_SHA3_functions"
+ - "IMPLEMENT_SHAKE_functions"
+ - "IMPLEMENT_SSL_TEST_BOOL_OPTION"
+ - "IMPLEMENT_SSL_TEST_INT_OPTION"
+ - "IMPLEMENT_SSL_TEST_STRING_OPTION"
+ - "IMPLEMENT_ssl3_meth_func"
+ - "IMPLEMENT_STATIC_ASN1_ALLOC_FUNCTIONS"
+ - "IMPLEMENT_STATIC_ASN1_ENCODE_FUNCTIONS"
+ - "IMPLEMENT_tdes_cipher"
+ - "IMPLEMENT_TEST_SUITE"
+ - "IMPLEMENT_TEST_SUITE_LEGACY"
+ - "IMPLEMENT_TEST_SUITE_MSBLOB"
+ - "IMPLEMENT_TEST_SUITE_PARAMS"
+ - "IMPLEMENT_TEST_SUITE_PROTECTED_PVK"
+ - "IMPLEMENT_TEST_SUITE_UNPROTECTED_PVK"
+ - "IMPLEMENT_tls_meth_func"
+ - "IMPLEMENT_var_keylen_cipher"
+ - "IMPLEMENT_var_keylen_cipher_func"
+ - "IMPLEMENT_WRAP_CIPHER"
+ - "ASN1_ADB_END"
+ - "ASN1_CHOICE_END"
+ - "ASN1_CHOICE_END_cb"
+ - "ASN1_CHOICE_END_name"
+ - "ASN1_CHOICE_END_selector"
+ - "ASN1_F_ASN1_FIND_END 0"
+ - "ASN1_ITEM_TEMPLATE_END"
+ - "ASN1_NDEF_SEQUENCE_END"
+ - "ASN1_NDEF_SEQUENCE_END_cb"
+ - "ASN1_SEQUENCE_END"
+ - "ASN1_SEQUENCE_END_cb"
+ - "ASN1_SEQUENCE_END_enc"
+ - "ASN1_SEQUENCE_END_name"
+ - "ASN1_SEQUENCE_END_ref"
+ # This isn't quite right, but it causes clang-format to do a slightly better
+ # job formatting this macro.
+ - "ASN1_EX_TEMPLATE_TYPE"
+ - "LAZY"
+#
+# Include sorting should be disabled until post 4.0
+#
+#SortIncludes:
+# Enabled: false
+# IgnoreCase: false
+# IgnoreExtension: false
+SortIncludes: Never
+IncludeBlocks: Preserve
+IncludeCategories:
+# # deprecated must always be first
+# - Regex: '^"internal/deprecated.h"'
+# Priority: -10
+# SortPriority: 0
+# CaseSensitive: false
+# # bio_local is special
+# - Regex: '^"bio_local.h"'
+# Priority: -1
+# SortPriority: 0
+# CaseSensitive: false
+# - Regex: '^"crypto/.*\.h"'
+# Priority: 5
+# SortPriority: 0
+# CaseSensitive: false
+# - Regex: '^"internal/.*\.h"'
+# Priority: 4
+# SortPriority: 0
+# CaseSensitive: false
+# - Regex: '^<openssl/.*\.h>'
+# Priority: 3
+# SortPriority: 0
+# CaseSensitive: false
+# - Regex: '^<.*\.h>'
+# Priority: 1
+# SortPriority: 0
+# CaseSensitive: false
+# # we do not currently include C++ style files, in case we ever do?
+# - Regex: '^<.*'
+# Priority: 2
+# SortPriority: 0
+# CaseSensitive: false
+# - Regex: '.*'
+# Priority: 6
+# SortPriority: 0
+# CaseSensitive: false
+...
+