summaryrefslogtreecommitdiff
path: root/cfg.mk
diff options
context:
space:
mode:
authorStefano Lattarini <stefano.lattarini@gmail.com>2012-08-29 17:37:35 +0200
committerJim Meyering <meyering@redhat.com>2012-08-30 15:22:00 +0200
commitb842b88381ee4b73fcb356d841bcaa830efe12ee (patch)
tree72e746e89d605af6efa957b4529d747eb06624f1 /cfg.mk
parent44547edd7ca7db128df2666fbb3f080f205582db (diff)
downloadcoreutils-b842b88381ee4b73fcb356d841bcaa830efe12ee.tar.xz
maint: move man-related syntax checks in cfg.mk
This is more natural, now that the top-level Makefile has access to all the variables and rules once defined only in 'man/Makefile.am' * man/local.mk (all_programs, sc_option_desc_uppercase, sc_man_file_correlation check-x-vs-1, check-programs-vs-x): Move from here ... * cfg.mk: ... to here. Adjust some comments in the process.
Diffstat (limited to 'cfg.mk')
-rw-r--r--cfg.mk50
1 files changed, 45 insertions, 5 deletions
diff --git a/cfg.mk b/cfg.mk
index 5f7193e91..9da6afa08 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -166,16 +166,56 @@ sc_long_lines:
sed -e "s|^|$$file:|" -e '$(FILTER_LONG_LINES)'; \
done | grep . && { msg="$$halt" $(_sc_say_and_exit) } || :
-# Option descriptions should not start with a capital letter
+# Option descriptions should not start with a capital letter.
# One could grep source directly as follows:
# grep -E " {2,6}-.*[^.] [A-Z][a-z]" $$($(VC_LIST_EXCEPT) | grep '\.c$$')
# but that would miss descriptions not on the same line as the -option.
ALL_RECURSIVE_TARGETS += sc_option_desc_uppercase
-sc_option_desc_uppercase: all_programs
-
-# Ensure all man/*.[1x] files are present
+.PHONY: sc_option_desc_uppercase
+sc_option_desc_uppercase:
+ @grep '^\\fB\\-' -A1 *.1 | LC_ALL=C grep '\.1.[A-Z][a-z]' && \
+ { echo 1>&2 '$@: found initial capitals in --help'; \
+ exit 1; } || :;
+sc_option_desc_uppercase: $(dist_man1_MANS) \
+ $(NO_INSTALL_PROGS_DEFAULT:%=%.1) \
+ all_programs
+
+# Ensure all man/*.[1x] files are present.
ALL_RECURSIVE_TARGETS += sc_man_file_correlation
-sc_man_file_correlation: all_programs
+.PHONY: sc_man_file_correlation
+sc_man_file_correlation: check-x-vs-1 check-programs-vs-x
+
+# Ensure that for each .x file in the 'man/' subdirectory, there is a
+# corresponding .1 file in the definition of $(dist_man1_MANS).
+# But since that expansion usually lacks programs like arch and hostname,
+# add them here manually.
+.PHONY: check-x-vs-1
+check-x-vs-1:
+ @PATH=./src$(PATH_SEPARATOR)$$PATH; export PATH; \
+ t=$@-t; \
+ (cd $(srcdir)/man && ls -1 *.x) \
+ | sed 's/\.x$$//' | $(ASSORT) > $$t; \
+ (echo $(dist_man1_MANS) $(NO_INSTALL_PROGS_DEFAULT) \
+ | tr -s ' ' '\n' | sed 's/\.1$$//') \
+ | $(ASSORT) -u | diff - $$t || { rm $$t; exit 1; }; \
+ rm $$t
+
+all_programs = \
+ (cd ./src && MAKEFLAGS= $(MAKE) -s all_programs.list) \
+ | grep -v '\['
+
+# Ensure that for each .x file in the 'man/' subdirectory, there is a
+# corresponding coreutils program.
+.PHONY: check-programs-vs-x
+check-programs-vs-x: all_programs
+ @status=0; \
+ for p in dummy `$(all_programs)`; do \
+ test $$p = dummy && continue; \
+ test $$p = ginstall && p=install || : ; \
+ test -f $(srcdir)/man/$$p.x \
+ || { echo missing $$p.x 1>&2; status=1; }; \
+ done; \
+ exit $$status
# Ensure that the end of each release's section is marked by two empty lines.
sc_NEWS_two_empty_lines: