clang-format generated code for easier debugging
authorNicolas Williams <nico@twosigma.com>
Tue, 19 Jan 2021 20:23:58 +0000 (14:23 -0600)
committerNicolas Williams <nico@twosigma.com>
Thu, 21 Jan 2021 00:56:03 +0000 (18:56 -0600)
cf/Makefile.am.common
configure.ac

index 72b22d304ce0bc3c234b56175078bd354e6d5de3..e79bb62eeee689ca81df424f5c97e0e5b4988684 100644 (file)
@@ -143,11 +143,20 @@ check-local::
 
 SUFFIXES += .x .z .hx
 
+# It's useful for debugging to format generated sources.  The default for all
+# clang-format styles is to sort includes, but in many cases in-tree we really
+# don't want to do that.
 .x.c:
-       @cmp -s $< $@ 2> /dev/null || cp $< $@
+       @if [ -z "$(CLANG_FORMAT)" ]; then \
+           cmp -s $< $@ 2> /dev/null || cp $< $@; \
+       else \
+           cp $< $@.tmp.c; \
+            $(CLANG_FORMAT) -style='{BasedOnStyle: Chromium, SortIncludes: false}' -i $@.tmp.c; \
+           cmp -s $@.tmp.c $@ 2> /dev/null || mv $@.tmp.c $@; \
+       fi
 
 .hx.h:
-       @cmp -s $< $@ 2> /dev/null || cp $< $@
+       @cmp -s $< $@ 2> /dev/null || cp $< $@;
 
 SUFFIXES += .1 .3 .5 .7 .8 .cat1 .cat3 .cat5 .cat7 .cat8
 
index 396d978ee035fc35cbc702a2f1df0b24ebb88c2b..1c4267179ff2d6336ac295550e4d09681e64634a 100644 (file)
@@ -18,6 +18,7 @@ dnl Checks for programs.
 AC_PROG_CC
 AM_PROG_CC_C_O
 AC_PROG_CPP
+AC_CHECK_PROG(CLANG_FORMAT, clang-format, [clang-format], [no])
 
 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])