top_builddir=..
include $(top_builddir)/Makefile.config

SUBDIRS = man

HTML_DIR = $(DESTDIR)html
MAN_DIR	 = $(DESTDIR)man
PDF_DIR	 = $(DESTDIR)pdf
XML_DIR	 = $(DESTDIR)xml

# Keep generated .txt files relative to the source directory
# and files they are included in.
TXT_DIR	 = $(top_srcdir)/doc/txt

DOC_DIRS = \
 $(HTML_DIR) \
 $(MAN_DIR)/man1 \
 $(MAN_DIR)/man5 \
 $(TXT_DIR) \
 $(XML_DIR)

# TODO: perl.pod should be pod2ized during make install. --pasky

# XXX: manual.txt is the master document and must be first.
MANUAL_FILES = \
 manual.txt \
 \
 bookmarks.txt \
 ecmascript.txt \
 exmode.txt \
 faq.txt \
 installation.txt \
 introduction.txt \
 lua-scripting.txt \
 mailcap.txt \
 marks.txt \
 mime.txt \
 remote.txt \
 small.txt \
 tabs.txt \
 terminals.txt \
 urlshortcuts.txt

### Script Dependencies
#

ELINKS	 = $(top_builddir)/src/elinks
KBDBIND	 = $(top_srcdir)/src/config/kbdbind.c
FEATURES = $(top_srcdir)/features.conf

### Scripts
#

HELP2DOC		= $(top_srcdir)/doc/tools/help2doc
IMPORT_FEATURES_CONF	= $(top_srcdir)/doc/tools/import-features.conf
MAKE_ELINKS_MANPAGE	= $(top_srcdir)/doc/tools/make-elinks-manpage
MAKE_ELINKSKEYS_MANPAGE	= $(top_srcdir)/doc/tools/make-elinkskeys-manpage

HTML_DOCS-$(CONFIG_ASCIIDOC) += \
 $(HTML_DIR)/elinks.1.html \
 $(HTML_DIR)/elinkskeys.5.html \
 $(HTML_DIR)/hacking.html \
 $(HTML_DIR)/manual.html

# Only jw is used for generating PDF.
HTML_DOCS-$(CONFIG_XMLTO) += \
 $(HTML_DIR)/manual.html-chunked

MAN_DOCS-$(CONFIG_XMLTO) += \
 $(MAN_DIR)/man1/elinks.1.in \
 $(MAN_DIR)/man5/elinkskeys.5

# Only jw is used for generating PDF.
PDF_DOCS-$(CONFIG_JW) += \
 $(PDF_DIR)/manual.pdf

HTML_DOCS-$(CONFIG_POD2HTML) += \
 $(HTML_DIR)/perl.html \
 $(HTML_DIR)/perl-hooks.html

MAN_DOCS += $(MAN_DIR)/man5/elinks.conf.5

MAN_DOCS  += $(MAN_DOCS-yes)
HTML_DOCS += $(HTML_DOCS-yes)
PDF_DOCS  += $(PDF_DOCS-yes)

html-asciidoc-yes: doc-dirs $(HTML_DOCS_WITH_ASCIIDOC)
html-asciidoc-no:

html-pod2html-yes: doc-dirs $(HTML_DOCS_WITH_POD2HTML)
html-pod2html-no:

html-xmlto-yes: doc-dirs $(HTML_DOCS_WITH_XMLTO)
html-xmlto-no:

man-xmlto-yes: doc-dirs $(MAN_DOCS_WITH_XMLTO)
man-xmlto-no:

pdf-jw-yes: doc-dirs $(PDF_DOCS_WITH_JW)
pdf-jw-no:

man-docs: $(MAN_DOCS)
html-docs: $(HTML_DOCS)
pdf-docs: $(PDF_DOCS)

all-docs: man-docs html-docs pdf-docs

### Build Rules
#

doc-dirs:
	$(INSTALL) -d $(DOC_DIRS)

# $(MAN_DIR) intentionally left out
clean-local:
	@$(RM) -r $(HTML_DIR) $(XML_DIR) $(TXT_DIR) $(PDF_DIR) *.tmp


# Autogenerated asciidoc files.

$(TXT_DIR)/import-features.conf.txt: $(FEATURES) doc-dirs $(IMPORT_FEATURES_CONF)
	$(IMPORT_FEATURES_CONF) > $@

$(TXT_DIR)/elinks.1.%.txt: $(MAKE_ELINKS_MANPAGE) doc-dirs $(ELINKS)
	$(MAKE_ELINKS_MANPAGE) $@ $(ELINKS) $(HELP2DOC) > $@

$(TXT_DIR)/elinkskeys.5.%.txt: $(MAKE_ELINKSKEYS_MANPAGE) doc-dirs $(KBDBIND)
	$(MAKE_ELINKSKEYS_MANPAGE) $@ $(KBDBIND) > $@


# Man Pages

$(XML_DIR)/%.man.xml: $(TXT_DIR)/%.man.txt doc-dirs
	$(ASCIIDOC) -b docbook -d manpage -o $@ $<

$(MAN_DIR)/man1/elinks.1.in: $(XML_DIR)/elinks.1.man.xml doc-dirs
	$(XMLTO) -o $(MAN_DIR)/man1 man $<
	mv $(MAN_DIR)/man1/elinks.1 $@

$(MAN_DIR)/man5/elinkskeys.5: $(XML_DIR)/elinkskeys.5.man.xml doc-dirs
	$(XMLTO) -o $(MAN_DIR)/man5 man $<
	sed -e 's/\\fI\\fR'\''/\\fI\\'\''\\fR/' < $@ > $@.tmp
	mv $@.tmp $@

$(MAN_DIR)/man5/elinks.conf.5: doc-dirs $(ELINKS)
	$(HELP2DOC) --elinks=$(ELINKS) --elinksconf > $@

# XHTML/CSS Man Pages

$(HTML_DIR)/%.html: $(TXT_DIR)/%.html.txt doc-dirs
	$(ASCIIDOC) -b xhtml11 -d manpage -o $@ $<

# The Manual

MANUAL_EXTRA_FILES = \
 $(TXT_DIR)/import-features.conf.txt \
 $(TXT_DIR)/elinks.1.html.txt \
 $(TXT_DIR)/elinkskeys.5.html.txt

$(HTML_DIR)/manual.html: $(MANUAL_FILES) doc-dirs $(MANUAL_EXTRA_FILES)
	$(ASCIIDOC) -b xhtml11 -d book -o $@ -n $<

$(HTML_DIR)/hacking.html: $(top_srcdir)/doc/hacking.txt doc-dirs
	$(ASCIIDOC) -b xhtml11 -d book -o $@ -n $<

$(HTML_DIR)/dev-intro.html: $(top_srcdir)/doc/dev-intro.txt doc-dirs
	$(ASCIIDOC) -b xhtml11 -d book -o $@ -n $<

$(XML_DIR)/manual.xml: $(MANUAL_FILES) doc-dirs $(MANUAL_EXTRA_FILES)
	$(ASCIIDOC) -b docbook -d book -o $@ $<

$(HTML_DIR)/manual.html-chunked: $(XML_DIR)/manual.xml doc-dirs
	$(XMLTO) -o $@ html $<

$(PDF_DIR)/manual.pdf: $(XML_DIR)/manual.xml doc-dirs
	$(JW) -o $(PDF_DIR) -b pdf $<

$(HTML_DIR)/perl.html: $(top_srcdir)/doc/perl.pod doc-dirs
	$(POD2HTML) --outfile=$@ < $<

$(HTML_DIR)/perl-hooks.html: $(top_srcdir)/contrib/perl/hooks.pl doc-dirs
	$(POD2HTML) --outfile=$@ < $<

include $(top_srcdir)/Makefile.lib