mirror of
https://github.com/rkd77/elinks.git
synced 2024-12-04 14:46:47 -05:00
ba6221c6f6
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.
188 lines
4.4 KiB
Makefile
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
|