summaryrefslogtreecommitdiffstats
path: root/doc/local.mk
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 16:58:41 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 16:58:41 +0000
commite1908ae95dd4c9d19ee4dfabfc8bf8a7f85943fe (patch)
treef5cc731bedcac0fb7fe14d952e4581e749f8bb87 /doc/local.mk
parentInitial commit. (diff)
downloadcoreutils-upstream.tar.xz
coreutils-upstream.zip
Adding upstream version 9.4.upstream/9.4upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'doc/local.mk')
-rw-r--r--doc/local.mk132
1 files changed, 132 insertions, 0 deletions
diff --git a/doc/local.mk b/doc/local.mk
new file mode 100644
index 0000000..b5a6c33
--- /dev/null
+++ b/doc/local.mk
@@ -0,0 +1,132 @@
+# Make coreutils documentation. -*-Makefile-*-
+# This is included by the top-level Makefile.am.
+
+# Copyright (C) 1995-2023 Free Software Foundation, Inc.
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+info_TEXINFOS = doc/coreutils.texi
+
+doc_coreutils_TEXINFOS = \
+ doc/perm.texi \
+ doc/parse-datetime.texi \
+ doc/constants.texi \
+ doc/fdl.texi \
+ doc/sort-version.texi
+
+# The customization variable CHECK_NORMAL_MENU_STRUCTURE is necessary with
+# makeinfo versions ≥ 6.8.
+MAKEINFO = @MAKEINFO@ -c CHECK_NORMAL_MENU_STRUCTURE=1
+
+# The following is necessary if the package name is 8 characters or longer.
+# If the info documentation would be split into 10 or more separate files,
+# then this is necessary even if the package name is 7 characters long.
+#
+# Tell makeinfo to put everything in a single info file: <package>.info.
+# Otherwise, it would also generate files with names like <package>.info-[123],
+# and those names all map to one 14-byte name (<package>.info-) on some crufty
+# old systems.
+AM_MAKEINFOFLAGS = --no-split
+
+doc/constants.texi: $(top_srcdir)/src/tail.c $(top_srcdir)/src/shred.c
+ $(AM_V_GEN)LC_ALL=C; export LC_ALL; \
+ $(MKDIR_P) doc && \
+ { sed -n -e 's/^#define \(DEFAULT_MAX[_A-Z]*\) \(.*\)/@set \1 \2/p' \
+ $(top_srcdir)/src/tail.c && \
+ sed -n -e \
+ 's/.*\(DEFAULT_PASSES\)[ =]* \([0-9]*\).*/@set SHRED_\1 \2/p'\
+ $(top_srcdir)/src/shred.c; } > $@-t \
+ && { cmp $@-t $@ >/dev/null 2>&1 || mv $@-t $@; rm -f $@-t; }
+
+MAINTAINERCLEANFILES += doc/constants.texi
+
+# Extended regular expressions to match word starts and ends.
+_W = (^|[^A-Za-z0-9_])
+W_ = ([^A-Za-z0-9_]|$$)
+
+syntax_checks = \
+ sc-avoid-builtin \
+ sc-avoid-io \
+ sc-avoid-non-zero \
+ sc-avoid-path \
+ sc-avoid-timezone \
+ sc-avoid-zeroes \
+ sc-exponent-grouping \
+ sc-lower-case-var
+
+texi_files = $(srcdir)/doc/*.texi
+
+.PHONY: $(syntax_checks) check-texinfo
+
+# List words/regexps here that should not appear in the texinfo documentation.
+check-texinfo: $(syntax_checks)
+ $(AM_V_GEN)fail=0; \
+ grep '@url{' $(texi_files) && fail=1; \
+ grep '\$$@"' $(texi_files) && fail=1; \
+ grep -n '[^[:punct:]]@footnote' $(texi_files) && fail=1; \
+ grep -n filename $(texi_files) \
+ | $(EGREP) -v 'setfilename|[{]filename[}]' \
+ && fail=1; \
+ exit $$fail
+
+sc-avoid-builtin:
+ $(AM_V_GEN)$(EGREP) -i '$(_W)builtins?$(W_)' $(texi_files) \
+ && exit 1 || :
+
+sc-avoid-path:
+ $(AM_V_GEN)fail=0; \
+ $(EGREP) -i '$(_W)path(name)?s?$(W_)' $(texi_files) \
+ | $(EGREP) -v \
+ 'PATH=|path search|search path|@vindex PATH$$|@env[{]PATH[}]' \
+ && fail=1; \
+ exit $$fail
+
+# Use "time zone", not "timezone".
+sc-avoid-timezone:
+ $(AM_V_GEN)$(EGREP) timezone $(texi_files) && exit 1 || :
+
+# Check for insufficient exponent grouping, e.g.,
+# @math{2^64} should be @math{2^{64}}.
+sc-exponent-grouping:
+ $(AM_V_GEN)$(EGREP) '\{.*\^[0-9][0-9]' $(texi_files) && exit 1 || :
+
+# Say I/O, not IO.
+sc-avoid-io:
+ $(AM_V_GEN)$(EGREP) '$(_W)IO$(W_)' $(texi_files) && exit 1 || :
+
+# I prefer nonzero over non-zero.
+sc-avoid-non-zero:
+ $(AM_V_GEN)$(EGREP) non-zero $(texi_files) && exit 1 || :
+
+# Use "zeros", not "zeroes" (nothing wrong with "zeroes"; just be consistent).
+sc-avoid-zeroes:
+ $(AM_V_GEN)$(EGREP) -i '$(_W)zeroes$(W_)' $(texi_files) \
+ && exit 1 || :
+
+# The quantity inside @var{...} should not contain upper case letters.
+# The leading backslash exemption is to permit in-macro uses like
+# @var{\varName\} where the upper case letter is part of a parameter name.
+find_upper_case_var = \
+ '/\@var\{/ or next; \
+ while (/\@var\{(.+?)}/g) \
+ { \
+ $$v = $$1; \
+ $$v =~ /[A-Z]/ && $$v !~ /^\\/ and (print "$$ARGV:$$.:$$_"), $$m = 1 \
+ } \
+ END {$$m and (warn "$@: do not use upper case in \@var{...}\n"), exit 1}'
+sc-lower-case-var:
+ $(AM_V_GEN)$(PERL) -e 1 || { echo $@: skipping test; exit 0; }; \
+ $(PERL) -lne $(find_upper_case_var) $(texi_files)
+
+check-local: check-texinfo