doc/Makefile
author Giorgos Keramidas <keramida@ceid.upatras.gr>
Thu, 07 May 2009 15:08:25 +0300
changeset 8311 e0eb03bfa5af
parent 7686 fa584d23e3cc
child 8822 1027da7d2fb9
permissions -rw-r--r--
manpage build: fail early when xmlto is not available When we try to build manpages with xmlto and sed, but xmlto is missing fail at the xmlto stage. Otherwise, one may run `cd doc; make' and miss the warnings like: xmlto: not found sed: hg.1: No such file or directory and end up with empty files installed as manpages.

SOURCES=$(wildcard *.[0-9].txt)
MAN=$(SOURCES:%.txt=%)
HTML=$(SOURCES:%.txt=%.html)
PREFIX=/usr/local
MANDIR=$(PREFIX)/share/man
INSTALL=install -c -m 644
PYTHON=python
ASCIIDOC=asciidoc

all: man html

man: $(MAN)

html: $(HTML)

hg.1.txt: hg.1.gendoc.txt
	touch hg.1.txt

hg.1.gendoc.txt: ../mercurial/commands.py ../mercurial/help.py
	${PYTHON} gendoc.py > $@

%: %.xml
	xmlto man $*.xml && \
	sed -e 's/^\.hg/\\\&.hg/' $* > $*~ && \
	mv $*~ $*

%.xml: %.txt
	$(ASCIIDOC) -d manpage -b docbook $*.txt

%.html: %.txt
	$(ASCIIDOC) -b html4 $*.txt || $(ASCIIDOC) -b html $*.txt

MANIFEST: man html
	# tracked files are already in the main MANIFEST
	$(RM) $@
	for i in $(MAN) $(HTML) hg.1.gendoc.txt; do \
	  echo "doc/$$i" >> $@ ; \
	done

install: man
	for i in $(MAN) ; do \
	  subdir=`echo $$i | sed -n 's/..*\.\([0-9]\)$$/man\1/p'` ; \
	  mkdir -p $(DESTDIR)$(MANDIR)/$$subdir ; \
	  $(INSTALL) $$i $(DESTDIR)$(MANDIR)/$$subdir ; \
	done

clean:
	$(RM) $(MAN) $(MAN:%=%.xml) $(MAN:%=%.html) *.[0-9].gendoc.txt MANIFEST