diff options
author | Stefano Lattarini <stefano.lattarini@gmail.com> | 2012-08-29 16:37:24 +0200 |
---|---|---|
committer | Jim Meyering <meyering@redhat.com> | 2012-08-30 15:22:00 +0200 |
commit | 44547edd7ca7db128df2666fbb3f080f205582db (patch) | |
tree | fa7474d52dc79594323df43ec458cb0b699df201 /man/local.mk | |
parent | 34e2473f412bfa66d55c969ae1757510e371ea9a (diff) | |
download | coreutils-44547edd7ca7db128df2666fbb3f080f205582db.tar.xz |
build: don't use recursive make to build the 'man' subdirectory
* Makefile.am: Include 'man/local.mk'.
(SUBDIRS): Remove 'man'.
* configure.ac ($MAN): Adjust so that each of its entries has a leading
'man/' component.
(AC_CONFIG_FILES): Remove 'man/Makefile'.
* man/Makefile.am: Rename ...
* man/local.mk: ... like this. With further adjustments: each 'foo.1'
target renamed like 'man/foo.1', each '../src/foo.c' dependency as
'src/foo.c', and each '$(srcdir)' usage as '$(srcdir)/man'. Also ...
(mandep): Adjust, removing the leading '../' component.
Several whitespace adjustments while at it.
(ASSORT): Remove, it's already defined in the top-level Makefile.am.
* cfg.mk (sc_option_desc_uppercase, sc_man_file_correlation): Remove
the associated recipes, they are now directly available from the
included 'man/local.mk'. Actually, the other changes in this commit
have made these recipes instable and not completely correct, but that
will be fixed in later changes.
Diffstat (limited to 'man/local.mk')
-rw-r--r-- | man/local.mk | 223 |
1 files changed, 223 insertions, 0 deletions
diff --git a/man/local.mk b/man/local.mk new file mode 100644 index 000000000..20bdeb626 --- /dev/null +++ b/man/local.mk @@ -0,0 +1,223 @@ +# Make coreutils man pages. -*-Makefile-*- +# This is included by the top-level Makefile.am. + +# Copyright (C) 2002-2012 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 <http://www.gnu.org/licenses/>. + +dist_man1_MANS = $(MAN) + +man_aux = $(dist_man1_MANS:.1=.x) + +EXTRA_DIST += $(man_aux) man/help2man +MAINTAINERCLEANFILES += $(dist_man1_MANS) + +# The "$(VAR:%=dir/%.x)" idiom is not portable according to POSIX, but in +# practice it works with several make implementation (GNU, BSD, CCS make +# from Solaris 10, Sun distributed make). In addition, since only +# maintainers are expected to build release tarballs (and they should +# use GNU make when doing so), it's not big deal if this won't work with +# some dumber make implementation. +EXTRA_DIST += \ + $(NO_INSTALL_PROGS_DEFAULT:%=man/%.x) \ + $(NO_INSTALL_PROGS_DEFAULT:%=man/%.1) + +# Depend on this to get version number changes. +mandep = .version + +# Note that arch depends on uname.c +man/arch.1: $(mandep) src/uname.c + +man/base64.1: $(mandep) src/base64.c +man/basename.1: $(mandep) src/basename.c +man/cat.1: $(mandep) src/cat.c +man/chcon.1: $(mandep) src/chcon.c +man/chgrp.1: $(mandep) src/chgrp.c +man/chmod.1: $(mandep) src/chmod.c +man/chown.1: $(mandep) src/chown.c +man/chroot.1: $(mandep) src/chroot.c +man/cksum.1: $(mandep) src/cksum.c +man/comm.1: $(mandep) src/comm.c +man/cp.1: $(mandep) src/cp.c +man/csplit.1: $(mandep) src/csplit.c +man/cut.1: $(mandep) src/cut.c +man/date.1: $(mandep) src/date.c +man/dd.1: $(mandep) src/dd.c +man/df.1: $(mandep) src/df.c + +# Note that dir depends on ls.c, since that's where its --help text is. +man/dir.1: $(mandep) src/ls.c + +man/dircolors.1: $(mandep) src/dircolors.c +man/dirname.1: $(mandep) src/dirname.c +man/du.1: $(mandep) src/du.c +man/echo.1: $(mandep) src/echo.c +man/env.1: $(mandep) src/env.c +man/expand.1: $(mandep) src/expand.c +man/expr.1: $(mandep) src/expr.c +man/factor.1: $(mandep) src/factor.c +man/false.1: $(mandep) src/false.c +man/fmt.1: $(mandep) src/fmt.c +man/fold.1: $(mandep) src/fold.c +man/groups.1: $(mandep) src/groups.c +man/head.1: $(mandep) src/head.c +man/hostid.1: $(mandep) src/hostid.c +man/hostname.1: $(mandep) src/hostname.c +man/id.1: $(mandep) src/id.c +man/install.1: $(mandep) src/install.c +man/join.1: $(mandep) src/join.c +man/kill.1: $(mandep) src/kill.c +man/link.1: $(mandep) src/link.c +man/ln.1: $(mandep) src/ln.c +man/logname.1: $(mandep) src/logname.c +man/ls.1: $(mandep) src/ls.c +man/md5sum.1: $(mandep) src/md5sum.c +man/mkdir.1: $(mandep) src/mkdir.c +man/mkfifo.1: $(mandep) src/mkfifo.c +man/mknod.1: $(mandep) src/mknod.c +man/mktemp.1: $(mandep) src/mktemp.c +man/mv.1: $(mandep) src/mv.c +man/nice.1: $(mandep) src/nice.c +man/nl.1: $(mandep) src/nl.c +man/nohup.1: $(mandep) src/nohup.c +man/nproc.1: $(mandep) src/nproc.c +man/od.1: $(mandep) src/od.c +man/paste.1: $(mandep) src/paste.c +man/pathchk.1: $(mandep) src/pathchk.c +man/pinky.1: $(mandep) src/pinky.c +man/pr.1: $(mandep) src/pr.c +man/printenv.1: $(mandep) src/printenv.c +man/printf.1: $(mandep) src/printf.c +man/ptx.1: $(mandep) src/ptx.c +man/pwd.1: $(mandep) src/pwd.c +man/readlink.1: $(mandep) src/readlink.c +man/realpath.1: $(mandep) src/realpath.c +man/rm.1: $(mandep) src/rm.c +man/rmdir.1: $(mandep) src/rmdir.c +man/runcon.1: $(mandep) src/runcon.c +man/seq.1: $(mandep) src/seq.c +man/sha1sum.1: $(mandep) src/md5sum.c +man/sha224sum.1: $(mandep) src/md5sum.c +man/sha256sum.1: $(mandep) src/md5sum.c +man/sha384sum.1: $(mandep) src/md5sum.c +man/sha512sum.1: $(mandep) src/md5sum.c +man/shred.1: $(mandep) src/shred.c +man/shuf.1: $(mandep) src/shuf.c +man/sleep.1: $(mandep) src/sleep.c +man/sort.1: $(mandep) src/sort.c +man/split.1: $(mandep) src/split.c +man/stat.1: $(mandep) src/stat.c +man/stdbuf.1: $(mandep) src/stdbuf.c +man/stty.1: $(mandep) src/stty.c +man/sum.1: $(mandep) src/sum.c +man/sync.1: $(mandep) src/sync.c +man/tac.1: $(mandep) src/tac.c +man/tail.1: $(mandep) src/tail.c +man/tee.1: $(mandep) src/tee.c +man/test.1: $(mandep) src/test.c +man/timeout.1: $(mandep) src/timeout.c +man/touch.1: $(mandep) src/touch.c +man/tr.1: $(mandep) src/tr.c +man/true.1: $(mandep) src/true.c +man/truncate.1: $(mandep) src/truncate.c +man/tsort.1: $(mandep) src/tsort.c +man/tty.1: $(mandep) src/tty.c +man/uname.1: $(mandep) src/uname.c +man/unexpand.1: $(mandep) src/unexpand.c +man/uniq.1: $(mandep) src/uniq.c +man/unlink.1: $(mandep) src/unlink.c +man/uptime.1: $(mandep) src/uptime.c +man/users.1: $(mandep) src/users.c +man/vdir.1: $(mandep) src/ls.c +man/wc.1: $(mandep) src/wc.c +man/who.1: $(mandep) src/who.c +man/whoami.1: $(mandep) src/whoami.c +man/yes.1: $(mandep) src/yes.c + +# This is required so that changes to e.g., emit_bug_reporting_address +# provoke regeneration of all $(MAN) files. +$(MAN): $(top_srcdir)/src/system.h + +.x.1: + $(AM_V_GEN)case '$(PERL)' in \ + *"/missing "*) \ + echo 'WARNING: cannot update man page $@ since perl is missing' \ + 'or inadequate' 1>&2 \ + exit 0;; \ + esac; \ + name=`echo $@ | sed -e 's|.*/||' -e 's|\.1$$||'` || exit 1; \ +## Ensure that help2man runs the 'src/ginstall' binary as 'install' when +## creating 'install.1'. Similarly, ensure that it uses the 'src/[' binary +## to create 'test.1'. + case $$name in \ + install) prog='ginstall';; \ + test) prog='[';; \ + *) prog=$$name;; \ + esac; \ +## Note the use of $$t/$*, rather than just '$*' as in other packages. +## That is necessary to avoid failures for programs that are also shell +## built-in functions like echo, false, printf, pwd. + rm -f $@ $@-t \ + && t=$*.td \ + && rm -rf $$t \ + && mkdir $$t \ + && (cd $$t && $(LN_S) $(abs_top_builddir)/src/$$prog $$name) \ + && $(PERL) -- $(srcdir)/man/help2man \ + --source='$(PACKAGE_STRING)' \ + --include=$(srcdir)/man/$$name.x \ + --output=$$t/$$name.1 $$t/$$name \ + && sed 's|$*\.td/||g' $$t/$$name.1 > $@-t \ + && rm -rf $$t \ + && chmod -w $@-t \ + && mv $@-t $@ + +# Option descriptions should not start with a capital letter +.PHONY: sc_option_desc_uppercase +sc_option_desc_uppercase: $(dist_man1_MANS) $(NO_INSTALL_PROGS_DEFAULT:%=%.1) + @grep '^\\fB\\-' -A1 *.1 | LC_ALL=C grep '\.1.[A-Z][a-z]' && \ + { echo 1>&2 '$@: found initial capitals in --help'; \ + exit 1; } || :; + +.PHONY: sc_man_file_correlation +sc_man_file_correlation: check-x-vs-1 check-programs-vs-x + +# Ensure that for each .x file in this directory, there is a +# corresponding .1 file in the definition of $(dist_man1_MANS) above. +# 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 '\[' + +.PHONY: check-programs-vs-x +check-programs-vs-x: + @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 |