lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Issue 5739: Add makefile targets for formatting all C++ code (issue 5656


From: nine . fierce . ballads
Subject: Issue 5739: Add makefile targets for formatting all C++ code (issue 565620043 by address@hidden)
Date: Wed, 05 Feb 2020 08:49:34 -0800

Reviewers: ,

Description:
https://sourceforge.net/p/testlilyissues/issues/5739/

These are not yet intended for routine use by contributors.  They are
meant to help explore the differences between astyle and clang-format.

Please review this at https://codereview.appspot.com/565620043/

Affected files (+48, -0 lines):
  M GNUmakefile.in
  M config.make.in
  M configure.ac


Index: GNUmakefile.in
diff --git a/GNUmakefile.in b/GNUmakefile.in
index 
d63850fde6a4fb163f0b77c6c0abbae3accd3ac3..0d570c65456ea6342cd363795ba0bee7878cf972
 100644
--- a/GNUmakefile.in
+++ b/GNUmakefile.in
@@ -313,6 +313,50 @@ grand-replace:
        PATH=$(buildscript-dir):$(PATH) $(buildscript-dir)/grand-replace
 
 
+################################################################
+# code formatting
+
+## TODO: This condition speeds up make when formatting targets are not
+## going to be run.  Explore alternatives (lazy init?).
+ifneq (,$(filter format%,$(MAKECMDGOALS)))
+
+CXX_STYLE_FILES := \
+       $(wildcard $(top-src-dir)/*/*/*[ch]) \
+       $(wildcard $(top-src-dir)/*/*.cc)
+# end list
+
+# Format updated source files using astyle.
+ASTYLE_STAMP:=$(top-build-dir)/.astyle-done
+.PHONY: format-all-astyle
+format-all-astyle: $(ASTYLE_STAMP)
+$(ASTYLE_STAMP): $(CXX_STYLE_FILES)
+#       format the source files that are newer than the timestamp file
+       $(call ly_progress,Making,$@,($(words $?) files))
+#       TODO: fixcc complains if more than 4 files are given
+       echo $? | xargs -n4 $(top-src-dir)/scripts/auxiliar/fixcc.py
+       touch $@
+
+# Format updated source files using clang-format.
+CLANG_FORMAT_STAMP:=$(top-build-dir)/.clang-format-done
+.PHONY: format-all-clang
+format-all-clang: $(CLANG_FORMAT_STAMP)
+$(CLANG_FORMAT_STAMP): $(CXX_STYLE_FILES)
+#       format the source files that are newer than the timestamp file
+       $(call ly_progress,Making,$@,($(words $?) files))
+       $(CLANG_FORMAT) -i $?
+       touch $@
+
+# Format updated source files using one of multiple approved tools,
+# depending on what is installed.
+.PHONY: format-all
+ifneq ($(CLANG_FORMAT),false)
+format-all: format-all-clang
+else
+format-all: format-all-astyle
+endif
+
+endif
+
 ################################################################
 # testing
 
Index: config.make.in
diff --git a/config.make.in b/config.make.in
index 
8825c909e3fc0de699e5b952b69e1c183d436250..04debde0720a845c2e8847ca1f8dd5ded209fd8e
 100644
--- a/config.make.in
+++ b/config.make.in
@@ -107,6 +107,7 @@ AR = @AR@
 BASH = @BASH@
 BISON = @BISON@
 CC = @CC@
+CLANG_FORMAT = @CLANG_FORMAT@
 CONFIGSUFFIX = @CONFIGSUFFIX@
 CROSS = @cross_compiling@
 CXX = @CXX@
Index: configure.ac
diff --git a/configure.ac b/configure.ac
index 
72bd994740e85f2278ffc6c1368ce6ac0bdcaddd..a87c80339fdfb713d5d812649716c5f9398e5b36
 100644
--- a/configure.ac
+++ b/configure.ac
@@ -363,6 +363,9 @@ fi
 # perl for help2man and for mf2pt1.pl
 STEPMAKE_PERL(REQUIRED)
 
+# code formatting
+STEPMAKE_PROGS(CLANG_FORMAT, clang-format-9 clang-format, OPTIONAL, 9, 9)
+
 # tidy can be used to validate the HTML pages produced during
 # regression testing
 STEPMAKE_PATH_PROG(TIDY, tidy, OPTIONAL)





reply via email to

[Prev in Thread] Current Thread [Next in Thread]