1
0
mirror of https://github.com/rkd77/elinks.git synced 2024-06-27 01:25:34 +00:00
elinks/doc/Makefile
Kalle Olavi Niemitalo 9cae6a4fa4 update-man: Install manpages to srcdir, not builddir.
elinks.1.in, elinkskeys.5, and elinks.conf.5 are included in the Git tree,
so they are initially in the srcdir, and that's were the new versions must go.
2007-01-06 22:17:54 +02:00

220 lines
6.8 KiB
Makefile

top_builddir=..
include $(top_builddir)/Makefile.config
SUBDIRS = man
# A little trick to simplify some of the rules.
VPATH = $(builddir):$(srcdir):$(top_srcdir)/contrib/perl:$(top_srcdir)/po/perl
docdir = $(datadir)/doc
# Used by install-doc
HTML_DIR = $(DESTDIR)$(docdir)/$(PACKAGE)/html
PDF_DIR = $(DESTDIR)$(docdir)/$(PACKAGE)/pdf
TXT_DIR = $(DESTDIR)$(docdir)/$(PACKAGE)/txt
ASCIIDOC_CONF = $(srcdir)asciidoc.conf
ASCIIDOC_FLAGS += -f $(ASCIIDOC_CONF) -a "builddir=$(CURDIR)/"
#############################################################################
# Build files
TXT_DOCS_NOINSTALL = \
features.txt \
keymap-actions.txt \
keymap-defaults.txt \
option-command.txt \
option-config.txt
TXT_DOCS_ASIS = \
python.txt
HTML_DOCS-$(CONFIG_ASCIIDOC) += \
elinks.1.html \
elinks.conf.5.html \
elinkskeys.5.html \
hacking.html \
manual.html
HTML_DOCS-$(CONFIG_XMLTO) += \
manual.html-chunked
HTML_DOCS-$(CONFIG_POD2HTML) += \
perl.html \
perl-hooks.html
# Don't install these documents, because the corresponding scripts
# are not installed either. However, generating them may be useful.
HTML_DOCS_NOINSTALL-$(CONFIG_POD2HTML) += \
perl-check-accelerator-conflicts.html \
perl-gather-accelerator-contexts.html
MAN_DOCS-$(CONFIG_XMLTO) += \
elinks.1 \
elinks.conf.5 \
elinkskeys.5
# Use jw for generating PDF, since xmlto seems to freak out.
PDF_DOCS-$(CONFIG_JW) += \
manual.pdf
#############################################################################
## Set the default doc rules
MAN_DOCS = $(MAN_DOCS-yes)
HTML_DOCS = $(HTML_DOCS-yes)
HTML_DOCS_NOINSTALL = $(HTML_DOCS_NOINSTALL-yes)
PDF_DOCS = $(PDF_DOCS-yes)
txt: $(TXT_DOCS_NOINSTALL)
html: txt $(HTML_DOCS) $(HTML_DOCS_NOINSTALL)
pdf: txt $(PDF_DOCS)
man: txt $(MAN_DOCS)
all-docs: man html pdf
install-doc: all-docs update-man install
@$(foreach doc,$(HTML_DOCS), \
if test -d $(doc); then \
$(MKINSTALLDIRS) $(DESTDIR)$(docdir)/$(PACKAGE)/html/$(doc); \
$(call ncmd,installdata,$(doc)/*,$(HTML_DIR)/$(doc)); \
else \
$(MKINSTALLDIRS) $(DESTDIR)$(docdir)/$(PACKAGE)/html; \
$(call ncmd,installdata,$(doc),$(HTML_DIR)); \
fi;)
@$(foreach doc,$(PDF_DOCS), \
$(MKINSTALLDIRS) $(DESTDIR)$(docdir)/$(PACKAGE)/pdf; \
$(call ncmd,installdata,$(doc),$(PDF_DIR));)
@$(foreach doc,$(TXT_DOCS_ASIS), \
$(MKINSTALLDIRS) $(DESTDIR)$(docdir)/$(PACKAGE)/txt; \
$(call ncmd,installdata,$(srcdir)$(doc),$(TXT_DIR));)
update-man: man
@$(if $(MAN_DOCS), \
$(call ncmd,installdata,elinks.1,$(srcdir)man/man1/elinks.1.in); \
$(call ncmd,installdata,elinkskeys.5,$(srcdir)man/man5/); \
$(call ncmd,installdata,elinks.conf.5,$(srcdir)man/man5/))
clean-local:
@$(RM) -r api $(TXT_DOCS_NOINSTALL) $(MAN_DOCS) $(HTML_DOCS) $(HTML_DOCS_NOINSTALL) $(PDF_DOCS) *.tmp *.xml
# TODO: perl.pod should be pod2ized during make install. --pasky
install-local:
#############################################################################
# Generated asciidoc files
# Scripts and Dependencies
HELP2DOC = $(srcdir)tools/help2doc
CONF2DOC = $(srcdir)tools/conf2doc
KEYS2DOC = $(srcdir)tools/keys2doc
ELINKS = $(top_builddir)/src/elinks
FEATURES = $(top_srcdir)/features.conf
KBDBIND = $(top_srcdir)/src/config/kbdbind.c
# Locale env vars to override system one to ensure commands
# using elinks binary will generate texts in english
LOCALES = LC_ALL=C LANGUAGE=en
# FIXME: Keep generated .txt files relative to the source directory and files
# they are included in.
quiet_cmd_help2doc = ' [$(LINK_COLOR)HELP2DOC$(END_COLOR)] $(RELPATH)$@'
cmd_help2doc = $(LOCALES) $(HELP2DOC) $(ELINKS) $@ > $@
quiet_cmd_conf2doc = ' [$(LINK_COLOR)CONF2DOC$(END_COLOR)] $(RELPATH)$@'
cmd_conf2doc = $(LOCALES) $(CONF2DOC) $(FEATURES) > $@
quiet_cmd_keys2doc = ' [$(LINK_COLOR)KEYS2DOC$(END_COLOR)] $(RELPATH)$@'
cmd_keys2doc = $(LOCALES) $(KEYS2DOC) $(KBDBIND) $@ > $@
features.txt: $(FEATURES) $(CONF2DOC)
$(call cmd,conf2doc)
keymap-%.txt: $(KBDBIND) $(KEYS2DOC)
$(call cmd,keys2doc)
option-%.txt: $(ELINKS) $(HELP2DOC)
$(call cmd,help2doc)
#############################################################################
# Build commands and macros
quiet_cmd_jw = ' [$(LINK_COLOR)JW$(END_COLOR)] $(RELPATH)$@'
cmd_jw = $(JW) -b $(2) $<
quiet_cmd_xmlto = ' [$(LINK_COLOR)XMLTO$(END_COLOR)] $(RELPATH)$@'
cmd_xmlto = $(XMLTO) -o $(call outdir) $(3) $(2) $<
quiet_cmd_pod2html = ' [$(LINK_COLOR)POD2HTML$(END_COLOR)] $(RELPATH)$@'
cmd_pod2html = $(POD2HTML) --outfile=$@ < $<
quiet_cmd_asciidoc = ' [$(LINK_COLOR)ASCIIDOC$(END_COLOR)] $(RELPATH)$@'
cmd_asciidoc = $(ASCIIDOC) $(ASCIIDOC_FLAGS) -b $(call backend) -d $(call doctype) -o $@ $<
# Based on $@ find out asciidoc doctype or backend + xmlto output dir.
doctype = $(if $(findstring .1.,$@)$(findstring .5.,$@),manpage,book)
backend = $(if $(findstring .xml,$@),docbook,xhtml11)
outdir = $(if $(findstring -chunked,$@),$@,.)
# Loosely track dependencies via asciidoc includes.
asciidoc_dep = sed -n 's/[{]builddir}//g;s@include::\(.*\)\[.*@$@: $< \1@p' < $< > .deps/$(@F).asciidoc
-include .deps/*.asciidoc
# Do a little post-processing of man pages. Inserting title headers and date.
# - Change SYNOPSIS to OVERVIEW in elinkskeys.5 (but not in elinks.1).
# SYNOPSIS isn't supposed to contain running text. But AsciiDoc
# 7.1.2 complains "ERROR: elinkskeys.5.txt: line 10: second section
# must be named SYNOPSIS" so we can't change this in elinkskeys.5.txt.
# - Write backslash as "\e" not "\\", but be careful not to replace
# double-backslashes that actually mean something else. This is
# apparently a bug in db2man, which xmlto runs.
# Run all the hacks together in one sed command so that we get the right
# exit code if there is an error somewhere in the middle.
MAN_DATE = $(shell date -I)
man_desc = `sed -n 's/:Description:\s*\(.*\)/\1/p' < $(srcdir)$(subst .xml,.txt,$(<F))`
man_hack = sed -e "s/^\(\.TH \"ELINKS[^\"]*\" [0-9] \).*/\1\"$(1)\" \"$(MAN_DATE)\" \"$(1)\"/" \
-e 's/\\\\\\\\ /\\e\\e /' \
-e 's/\(\\fI\)\\\\\(\\fR\)/\1\\e\2/' \
-e "s/@squote@/\\\\'/g" \
$(if $(findstring elinkskeys.5,$(<F)),-e 's/^\.SH "SYNOPSIS"$$/.SH "OVERVIEW"/') \
$(2) < $@ > $@.tmp \
&& mv $@.tmp $@
#############################################################################
# Build recipies
%.html: %.txt $(ASCIIDOC_CONF)
$(call cmd,asciidoc,xhtml11)
@-$(call asciidoc_dep)
%.xml: %.txt $(ASCIIDOC_CONF)
$(call cmd,asciidoc,docbook)
@-$(call asciidoc_dep)
%.1: %.1.xml
$(call cmd,xmlto,man)
@$(call man_hack,$(call man_desc))
%.5: %.5.xml
$(call cmd,xmlto,man)
@$(call man_hack,$(call man_desc))
%.html-chunked: %.xml
$(call cmd,xmlto,html)
%.pdf: %.xml
$(call cmd,jw,pdf)
%.html: %.pod
$(call cmd,pod2html)
perl-%.html: %.pl
$(call cmd,pod2html)
include $(top_srcdir)/Makefile.lib