aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2023-06-17 17:45:06 +0200
committerJay Berkenbilt <ejb@ql.org>2023-06-17 17:45:06 +0200
commit1d979adde53c3a473c274c39af7f1925ba07e45d (patch)
tree377d0c072faf12f6ab9d9afe744e0b5e6e280ed9
parent21612165c6c1b49b88786c0232215f2e894254ea (diff)
downloadqpdf-1d979adde53c3a473c274c39af7f1925ba07e45d.tar.zst
Bump minimum clang-format version to 16
Also enforce in format-code.
-rw-r--r--.clang-format3
-rwxr-xr-xformat-code13
-rw-r--r--manual/contributing.rst11
3 files changed, 22 insertions, 5 deletions
diff --git a/.clang-format b/.clang-format
index 4f806d16..debe191b 100644
--- a/.clang-format
+++ b/.clang-format
@@ -1,5 +1,6 @@
# -*- yaml -*-
-# This configuration works with clang-format-15.
+# This configuration requires at least clang-format 15.
+# See ./format-code for comments about the minimum version.
# See https://clang.llvm.org/docs/ClangFormatStyleOptions.html
---
Language: Cpp
diff --git a/format-code b/format-code
index 5ec5275d..295c5d05 100755
--- a/format-code
+++ b/format-code
@@ -19,6 +19,19 @@
# Please see "Code Formatting" in the manual for additional notes.
+# If a newer version of clang-format causes changes to the output that
+# are improvements, bump the minimum required version of clang-format
+# here, and update manual/contributing.rst. There's a comment there
+# that refers to this comment. See also .clang-format.
+min_version=16
+
+clang_version=$(clang-format --version | \
+ awk '{for (i=1; i<=NF; i++) if ($i == "version") {print int($(i+1)); exit}}')
+if [ "$clang_version" -lt "$min_version" ]; then
+ echo "clang-format version >= $min_version is required"
+ exit 2
+fi
+
cd $(dirname $0)
for i in $(find . -name 'build*' -prune -o '(' \
-name '*.hh' -o -name '*.h' -o -name '*.cc' -o -name '*.c' \
diff --git a/manual/contributing.rst b/manual/contributing.rst
index 0fb376e6..e0565872 100644
--- a/manual/contributing.rst
+++ b/manual/contributing.rst
@@ -20,11 +20,14 @@ https://github.com/qpdf/qpdf/discussions.
Code Formatting
---------------
-The qpdf source code is formatting using clang-format ≥ version 15
-with a :file:`.clang-format` file at the top of the source tree. The
+.. The minimum clang-format version is also in format-code. There is a
+ comment there that references this file.
+
+The qpdf source code is formatted using clang-format with a
+:file:`.clang-format` file at the top of the source tree. The
:file:`format-code` script reformats all the source code in the
-repository. You must have ``clang-format`` in your path, and it must be
-at least version 15.
+repository. You must have ``clang-format`` in your path, and it must
+be at least version 16.
For emacs users, the :file:`.dir-locals.el` file configures emacs
``cc-mode`` for an indentation style that is similar to but not