1
0
mirror of https://github.com/rkd77/elinks.git synced 2024-12-04 14:46:47 -05:00
elinks/doc/Makefile
Jonas Fonseca ba6221c6f6 Redo the whole doc/ build thing
You can now use: make {all-docs,pdf,html,man,api,update-man}
     instead of: make {all-docs,pdf-docs,html-docs,man-docs}

Away is building into separate dirs. This makes make able to actually get
dependencies right, since there are now a collection of 'common' build
rules, some of which have even been moved to use the cmd infrastructure.

To update the man pages there is a new update-man rule. It builds the
manual pages and copies them to their proper place under man/ while doing
the final preformatting.

As good thing is that the (two) man pages are moved to .txt files and
include the generated content.

The API building thing is also refined. It builds into api/ and builds it's
list of files dynamically by searching throught the .h files in the src/
directory. Documented header files must contain a comment like this:

	/* API Doc :: <api-name> */

where <api-name> is the name used for the file under api/, for example
dom-scanner.
2006-01-11 11:02:43 +01:00

188 lines
4.4 KiB
Makefile

top_builddir=..
include $(top_builddir)/Makefile.config
SUBDIRS = man
VPATH = $(builddir):$(srcdir):$(top_srcdir)/contrib/perl
#export PATH="tools:$(PATH)"
# TODO: perl.pod should be pod2ized during make install. --pasky
### Script Dependencies
#
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
### Scripts
#
CODE2DOC = $(top_srcdir)/doc/tools/code2doc
HELP2DOC = $(top_srcdir)/doc/tools/help2doc
IMPORT_FEATURES_CONF = $(top_srcdir)/doc/tools/import-features.conf
TXT_DOCS = \
bookmarks.txt \
ecmascript.txt \
elinks.1.txt \
elinkskeys.5.txt \
exmode.txt \
faq.txt \
installation.txt \
introduction.txt \
lua-scripting.txt \
mailcap.txt \
manual.txt \
marks.txt \
mime.txt \
remote.txt \
small.txt \
tabs.txt \
terminals.txt \
urlshortcuts.txt
GEN_TXT_DOCS = \
command-options.txt \
import-features.conf.txt \
keymap-defaults.txt \
keymap-actions.txt
TXT_DOCS += $(GEN_TXT_DOCS)
HTML_DOCS-$(CONFIG_ASCIIDOC) += \
elinks.1.html \
elinkskeys.5.html \
hacking.html \
manual.html
HTML_DOCS-$(CONFIG_XMLTO) += \
manual.html-chunked
HTML_DOCS-$(CONFIG_POD2HTML) += \
perl.html \
perl-hooks.html \
MAN_DOCS-$(CONFIG_XMLTO) += \
elinks.1 \
elinkskeys.5
# Only jw is used for generating PDF.
PDF_DOCS-$(CONFIG_JW) += \
manual.pdf
MAN_DOCS += elinks.conf.5
## API Docs
#
API = $(shell find $(top_srcdir)/src/ -name '*.h' -exec grep -q 'API Doc' \{\} \; -printf "%p " | sort)
define api_doc
api/$(2).txt: $(1)
@$(CODE2DOC) $(1) > $$@
API_TXT += api/$(2).txt
endef
$(foreach api,$(API),$(eval $(call api_doc,$(api),$(shell sed -n 's/.*API Doc\s*::\s*\([^ ]*\).*/\1/p' < $(api)),)))
## Se the default doc rules
MAN_DOCS = elinks.conf.5 $(MAN_DOCS-yes)
HTML_DOCS = $(HTML_DOCS-yes)
PDF_DOCS = $(PDF_DOCS-yes)
API_DOCS = $(patsubst %.txt,%.html,$(API_TXT))
api-dir:
@test -d api || $(MKINSTALLDIRS) api
txt: $(addprefix $(srcdir),$(TXT_DOCS))
html: txt $(HTML_DOCS)
pdf: txt $(PDF_DOCS)
man: txt $(MAN_DOCS) man-update
api: api-dir $(API_DOCS)
all-docs: man html pdf
man-update: $(MAN_DOCS)
@test "$(CONFIG_XMLTO)" = yes && \
sed 's/^\.TH "ELINKS" 1 .*/.TH "ELINKS" 1 "The ELinks text-browser" "$(shell date -I)" "The ELinks text-browser"/' \
< elinks.1 > $(srcdir)man/man1/elinks.1.in && \
$(RM) $(MAN_DIR)/man1/elinks.1
@test "$(CONFIG_XMLTO)" = yes && \
sed -e 's/\\fI\\fR'\''/\\fI\\'\''\\fR/' < elinkskeys.5 | \
sed 's/^\.TH "ELINKSKEYS" 5 .*/.TH "ELINKSKEYS" 5 "ELinks keybindings" "$(shell date -I)" "ELinks keybindings"/' \
> $(srcdir)man/man5/elinkskeys.5
@$(INSTALL) elinks.conf.5 $(srcdir)man/man5
clean-local:
@$(RM) -r api $(GEN_TXT_DOCS) $(MAN_DOCS) $(HTML_DOCS) $(PDF_DOCS) *.tmp
# Autogenerated files.
# FIXME: Keep generated .txt files relative to the source directory and files
# they are included in.
import-features.conf.txt: $(FEATURES) $(IMPORT_FEATURES_CONF)
$(IMPORT_FEATURES_CONF) > $@
keymap-defaults.txt keymap-actions.txt: $(MAKE_ELINKSKEYS_MANPAGE) $(KBDBIND)
$(LOCALES) $(srcdir)tools/make-elinkskeys-manpage $(KBDBIND)
command-options.txt: $(ELINKS) $(HELP2DOC)
$(LOCALES) $(HELP2DOC) --cmdoptions --elinks=$(ELINKS) > $@
elinks.conf.5: $(ELINKS) $(HELP2DOC)
$(LOCALES) $(HELP2DOC) --elinksconf --elinks=$(ELINKS) > $@
## Default build rules
#
quiet_cmd_asciidoc = ' [$(LINK_COLOR)ASCIIDOC$(END_COLOR)] $(RELPATH)$@'
cmd_asciidoc = $(ASCIIDOC) -f asciidoc.conf -b $(2) -d $(call doctype,$<) -o $@ $<
quiet_cmd_xmlto = ' [$(LINK_COLOR)XMLTO$(END_COLOR)] $(RELPATH)$@'
cmd_xmlto = $(XMLTO) $(3) $(2) $<
quiet_cmd_jw = ' [$(LINK_COLOR)JW$(END_COLOR)] $(RELPATH)$@'
cmd_jw = $(JW) -b $(2) $<
quiet_cmd_pod2html = ' [$(LINK_COLOR)POD2HTML$(END_COLOR)] $(RELPATH)$@'
cmd_pod2html = $(POD2HTML) --outfile=$@ < $<
doctype = $(if $(findstring .1.,$(1)),manpage,$(if $(findstring .5.,$(1)),manpage,book))
%.html: %.txt asciidoc.conf
$(call mcmd,asciidoc,xhtml11)
%.xml: %.txt asciidoc.conf
$(call mcmd,asciidoc,docbook)
%.1: %.1.xml
$(call mcmd,xmlto,man)
%.5: %.5.xml
$(call mcmd,xmlto,man)
%.html-chunked: %.xml
$(call mcmd,xmlto,html,-o $@)
%.pdf: %.xml
$(call mcmd,jw,pdf)
%.html: %.pod
$(call mcmd,pod2html)
perl-%.html: %.pl
$(call mcmd,pod2html)
include $(top_srcdir)/Makefile.lib