# Makefile for GNU tar documentation.
-# Copyright (C) 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2003 Free
-# Software Foundation, Inc.
+# Copyright (C) 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2003, 2006,
+# 2007 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 2, or (at your option)
+## the Free Software Foundation; either version 3, or (at your option)
## any later version.
## This program is distributed in the hope that it will be useful,
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software Foundation,
-## Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+## Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
info_TEXINFOS = tar.texi
-tar_TEXINFOS = fdl.texi freemanuals.texi getdate.texi header.texi
-EXTRA_DIST = convtexi.pl
-
-CLEANFILES = tmp-* tmp2-* index.html
+tar_TEXINFOS = \
+ dumpdir.texi\
+ tar-snapshot-edit.texi\
+ fdl.texi\
+ freemanuals.texi\
+ genfile.texi\
+ getdate.texi\
+ header.texi\
+ intern.texi\
+ rendition.texi\
+ snapshot.texi\
+ sparse.texi\
+ value.texi
+EXTRA_DIST = gendocs_template mastermenu.el texify.sed untabify.el
# The rendering level is anyone of PUBLISH, DISTRIB or PROOF.
-# Just call `make dvi RENDITION=PROOF' if you want PROOF rendition.
+# Just call `make RENDITION=PROOF [target]' if you want PROOF rendition.
RENDITION = DISTRIB
-$(srcdir)/tar.info: tar.texi fdl.texi freemanuals.texi getdate.texi \
- $(srcdir)/header.texi version.texi
- $(MAKEINFO) --no-split -D$(RENDITION) -I$(srcdir) tar.texi -o $@
-
-tmp-tar.texi: tar.texi getdate.texi $(srcdir)/header.texi version.texi
- $(MAKEINFO) -D$(RENDITION) -Etmp-tar.tmp -otmp-tar.info \
- -I$(srcdir) tar.texi
- rm -f tmp-tar.sed tmp-tar.info*
- test $(RENDITION) = DISTRIB \
- || echo >>tmp-tar.sed 's/^@set DISTRIB/@set $(RENDITION)/'
- test $(RENDITION) = PUBLISH \
- || echo >>tmp-tar.sed '/^@smallbook/d'
- sed -f tmp-tar.sed tmp-tar.tmp > tmp-tar.texi
- rm -f tmp-tar.sed tmp-tar.tmp
-
-tar.dvi: tmp-tar.texi
- TEXINPUTS=$(top_srcdir)/config:$$TEXINPUTS \
- MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
- $(TEXI2DVI) tmp-tar.texi
- mv tmp-tar.dvi $@
-
-$(srcdir)/header.texi: $(top_srcdir)/src/tar.h
- sed -n '/Archive Format/,/End of Format/p' $(top_srcdir)/src/tar.h \
- | expand | sed 's/\([{}]\)/@\1/g' >$@
-
-##
-PROJECT=$(PACKAGE_TARNAME)
-BASE_URL="http://www.gnu.org/software/$(PROJECT)/manual/"
-TEXI2HTML=${SHELL} `cd $(top_srcdir); pwd`/config/missing --run texi2html
-INFO=${SHELL} `cd $(top_srcdir); pwd`/config/missing --run info
-DVIPDF=${SHELL} `cd $(top_srcdir); pwd`/config/missing --run dvipdf
+MAKEINFOFLAGS=-D$(RENDITION)
+
+header.texi: $(top_srcdir)/src/tar.h
+ sed -f $(srcdir)/texify.sed $(top_srcdir)/src/tar.h \
+ | expand >$@
+
+master-menu: $(tar_TEXINFOS)
+ emacs -batch -l mastermenu.el -f make-master-menu $(info_TEXINFOS)
+
+untabify:
+ emacs -batch -l untabify.el $(info_TEXINFOS) $(tar_TEXINFOS)
+
+final: untabify master-menu
+
+# Checking
+check-format:
+ @if test -n "`cat $(info_TEXINFOS) $(tar_TEXINFOS) | tr -d -c '\t'`"; then \
+ echo "Sources contain tabs; run make untabify"; \
+ false; \
+ fi
+
+check-options:
+ @ARGP_HELP_FMT='usage-indent=0,short-opt-col=0,long-opt-col=0,doc-opt-col=0,opt-doc-col=0,header-col=0,rmargin=1' \
+ $(top_builddir)/src/tar --usage | \
+ sed -n 's/^\[--\([^]\=\[]*\).*/\1/p' | sort | uniq > opts.$$$$;\
+ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -E - \
+ $(info_TEXINFOS) | \
+ sed -n '/^@macro/,/^@end macro/d;s/@opindex *\([^@,]*\).*/\1/p' \
+ | sort | uniq > docs.$$$$;\
+ status=0;\
+ join -v1 opts.$$$$ docs.$$$$ > report.$$$$;\
+ if test -s report.$$$$; then \
+ echo 'Not documented options:'; \
+ cat report.$$$$; \
+ status=1; \
+ fi; \
+ join -v2 opts.$$$$ docs.$$$$ > report.$$$$;\
+ if test -s report.$$$$; then \
+ echo 'Non-existing options:';\
+ cat report.$$$$; \
+ status=1; \
+ fi; \
+ rm opts.$$$$ docs.$$$$ report.$$$$;\
+ test $$status -ne 0 && exit $$status
+
+check-refs:
+ @for file in $(info_TEXINFOS) $(tar_TEXINFOS); \
+ do \
+ sed -e = $$file | \
+ sed -n 'N;/@FIXME-.*ref/{s/\(^[0-9][0-9]*\).*@FIXME-.*ref{\([^}]*\).*/'$$file':\1: \2/gp}'; \
+ done > $@-t; \
+ if [ -s $@-t ]; then \
+ echo "Unresolved cross-references:"; \
+ cat $@-t;\
+ rm $@-t; \
+ else \
+ rm -f $@-t; \
+ fi
+
+check-fixmes:
+ @for file in $(info_TEXINFOS); \
+ do \
+ sed -e = $$file | \
+ sed -n 'N;/@FIXME{/{s/\(^[0-9][0-9]*\).*@FIXME{\([^}]*\).*/'$$file':\1: \2/gp}'; \
+ done > $@-t; \
+ if [ -s $@-t ]; then \
+ echo "Unresolved FIXMEs:"; \
+ cat $@-t; \
+ rm $@-t; \
+ false; \
+ else \
+ rm -f $@-t; \
+ fi
+
+check-unrevised:
+ @grep -Hn @UNREVISED $(info_TEXINFOS) > $@-t; \
+ if [ -s $@-t ]; then \
+ echo "Unrevised nodes:"; \
+ cat $@-t; \
+ rm $@-t; \
+ false;\
+ else \
+ rm $@-t; \
+ fi
+
+all-check-docs: check-format check-options check-refs check-fixmes check-unrevised
+
+check-docs:
+ $(MAKE) -k all-check-docs
+
+#
clean-local:
- rm -rf $(WEBDOC) $(WEB_HTML_STAMPS)
-
-html: html_mono.stamp html_node.stamp html_chapter.stamp
-
-tmp2-$(PROJECT).texi: Makefile tmp-$(PROJECT).texi
- echo '/@copying/,/@end copying/{H;x;s/@copying//;s/@end copying//;x;}' > tmp2.sed
- echo '/@insertcopying/{x;h;}' >> tmp2.sed
- echo 's/\(.\)@ifset/\1\' >> tmp2.sed
- echo '@ifset/' >> tmp2.sed
- sed -f tmp2.sed tmp-$(PROJECT).texi > tmp2-$(PROJECT).texi
- rm -f tmp2.sed
-
-html_node.stamp: tmp2-$(PROJECT).texi
- texi2html="$(TEXI2HTML)";\
- if ! test -d html_node; then mkdir html_node; fi; \
- cd html_node; \
- $$texi2html -menu -split_node -prefix $(PROJECT) ../tmp2-$(PROJECT).texi; \
- cd ..; \
- touch html_node.stamp
-
-html_chapter.stamp: tmp2-$(PROJECT).texi
- texi2html="$(TEXI2HTML)";\
- if ! test -d html_chapter; then mkdir html_chapter; fi; \
- cd html_chapter; \
- $$texi2html -menu -split_chapter -prefix $(PROJECT) ../tmp2-$(PROJECT).texi; \
- cd ..; \
- touch html_chapter.stamp
-
-html_mono.stamp: tmp2-$(PROJECT).texi
- texi2html="$(TEXI2HTML)";\
- if ! test -d html_mono; then mkdir html_mono; fi; \
- cd html_mono; \
- $$texi2html -menu -monolithic -prefix $(PROJECT) ../tmp2-$(PROJECT).texi; \
- cd ..; \
- touch html_mono.stamp
-
-ps: $(PROJECT).ps
-
-$(PROJECT).ps: $(PROJECT).dvi
- $(DVIPS) -o$(PROJECT).ps $(PROJECT).dvi
-
-# Override the default rule. The texinfo <= 4.5 is unable to cope with
-# tar docs.
-$(PROJECT).pdf: $(PROJECT).dvi
- $(DVIPDF) $(PROJECT).dvi
-
-text: $(PROJECT).text
-
-$(PROJECT).text: Makefile $(PROJECT).info
- $(INFO) --node=Top --subnodes --out $(PROJECT).text -f ./$(PROJECT).info
-
-$(PROJECT).info.tar.gz: Makefile
- rm -f $(PROJECT).info.tar.gz
- tar cf $(PROJECT).info.tar $(PROJECT).info*
- gzip -f $(PROJECT).info.tar
-
-$(PROJECT).dvi.gz: Makefile $(PROJECT).dvi
- gzip -c $(PROJECT).dvi > $(PROJECT).dvi.gz
-
-$(PROJECT).ps.gz: Makefile $(PROJECT).ps
- gzip -c $(PROJECT).ps > $(PROJECT).ps.gz
-
-$(PROJECT).pdf.gz: Makefile $(PROJECT).pdf
- gzip -c $(PROJECT).pdf > $(PROJECT).pdf.gz
-
-$(PROJECT).texi.tar.gz: Makefile $(info_TEXINFOS) $(tar_TEXINFOS)
- tar cfz $(PROJECT).texi.tar.gz $(info_TEXINFOS) $(tar_TEXINFOS)
-
-WEB_HTML=\
- html_mono\
- html_node\
- html_chapter
-
-WEB_HTML_STAMPS=$(patsubst %,%.stamp,$(WEB_HTML))
-
-WEB_BIN=\
- $(PROJECT).info.tar.gz\
- $(PROJECT).dvi.gz\
- $(PROJECT).pdf.gz\
- $(PROJECT).ps.gz\
- $(PROJECT).texi.tar.gz\
- $(PROJECT).text
-
-WEBDOC=$(WEB_HTML) $(WEB_BIN)
-
-webdocdir: $(WEB_HTML_STAMPS) $(WEB_BIN) index.html
- if ! test -d $(WEBDOCDIR); then mkdir $(WEBDOCDIR); fi; \
- here=`cd $(srcdir) && pwd`; \
- webdocdir=`cd $(WEBDOCDIR) && pwd`; \
- for file in $(WEB_HTML) index.html; do \
- if test -d $$here/$$file; then \
- cp -pr $$here/$$file $$webdocdir/$$file; \
- else \
- test -f $$webdocdir/$$file \
- || ln $$here/$$file $$webdocdir/$$file 2> /dev/null \
- || cp -p $$here/$$file $$webdocdir/$$file || :; \
- fi; \
- done; \
- if ! test -d $(WEBDOCDIR)/other; then mkdir $(WEBDOCDIR)/other; fi;\
- for file in $(WEB_BIN); do \
- if test -d $$here/$$file; then \
- cp -pr $$here/$$file $$webdocdir/other/$$file; \
- else \
- test -f $$webdocdir/other/$$file \
- || ln $$here/$$file $$webdocdir/other/$$file 2> /dev/null \
- || cp -p $$here/$$file $$webdocdir/other/$$file || :; \
- fi; \
- done
-
-index.html: index.html.in $(WEBDOC)
- @echo "s^%BASE_URL%^$(BASE_URL)^;" > .webdoc
- @echo "s/%DATE%/`date`/;" >> .webdoc
- @echo "s/%UPDATED%/`date +'%B, %d'`/;" >> .webdoc
- @echo "s/%PACKAGE_NAME%/$(PACKAGE_NAME)/" >> .webdoc
- @echo "s/%PACKAGE%/$(PACKAGE)/" >> .webdoc
- @echo "s/%VERSION%/$(VERSION)/" >> .webdoc
- @for file in `sed -n 's,.*"other/%PACKAGE%\(.*\)".*,$(PACKAGE)\1,pg;s,.*"\(.*\)%PACKAGE%\(.*\)".*,\1$(PACKAGE)\2,pg' index.html.in`; \
- do\
- ls -sk $$file; \
- done |\
- $(AWK) -vPACKAGE=$(PACKAGE) \
- 'BEGIN { len = length(PACKAGE) } \
- { gsub("\\.", "_", $$2); \
- if (match($$2,"/")) \
- $$2=substr($$2,RSTART+1); \
- print "s/%" toupper(substr($$2,len+2)) "_SIZE%/" $$1 "/;" }' >> .webdoc
- sed -f .webdoc index.html.in > index.html
- rm -f .webdoc
-
-webdocname=$(PACKAGE)-$(VERSION)-doc
-WEBDOCDIR=$(webdocname)
-
-webdoc:
- $(MAKE) RENDITION=PUBLISH WEBDOCDIR=$(top_builddir)/doc/$(webdocname) webdocdir
- cd $(top_builddir)/doc &&\
- tar cfz $(webdocname).tar.gz $(webdocname) &&\
- rm -r $(webdocname)
-
-## End of webdoc
+ rm -rf manual
+
+GENDOCS=gendocs.sh
+
+TEXI2DVI=texi2dvi -t '@set $(RENDITION)' -E
+# Make sure you set TEXINPUTS
+# Usual value is:
+# /usr/share/texmf/pdftex/plain/misc:/usr/share/texmf/pdftex/config
+manual:
+ TEXINPUTS=$(srcdir):$(top_srcdir)/build-tex:$(TEXINPUTS) \
+ MAKEINFO="$(MAKEINFO) $(MAKEINFOFLAGS)" \
+ TEXI2DVI="$(TEXI2DVI) -t @finalout" \
+ $(GENDOCS) --texi2html tar 'GNU tar manual'