Add a note about mode_t and S_I???? macros.
[elinks.git] / doc / Makefile
blob2ac3778e9affdbee8b4e8bfde79662f8c163ecca
1 top_builddir=..
2 include $(top_builddir)/Makefile.config
4 SUBDIRS = man
6 HTML_DIR = $(DESTDIR)html
7 MAN_DIR = $(DESTDIR)man
8 PDF_DIR = $(DESTDIR)pdf
9 XML_DIR = $(DESTDIR)xml
11 # Keep generated .txt files relative to the source directory
12 # and files they are included in.
13 TXT_DIR = $(top_srcdir)/doc/txt
15 DOC_DIRS = \
16 $(HTML_DIR) \
17 $(HTML_DIR)/api \
18 $(MAN_DIR)/man1 \
19 $(MAN_DIR)/man5 \
20 $(TXT_DIR) \
21 $(XML_DIR)
23 # TODO: perl.pod should be pod2ized during make install. --pasky
25 # XXX: manual.txt is the master document and must be first.
26 MANUAL_FILES = \
27 manual.txt \
29 bookmarks.txt \
30 ecmascript.txt \
31 exmode.txt \
32 faq.txt \
33 installation.txt \
34 introduction.txt \
35 lua-scripting.txt \
36 mailcap.txt \
37 marks.txt \
38 mime.txt \
39 remote.txt \
40 small.txt \
41 tabs.txt \
42 terminals.txt \
43 urlshortcuts.txt
45 ### Script Dependencies
48 ELINKS = $(top_builddir)/src/elinks
49 KBDBIND = $(top_srcdir)/src/config/kbdbind.c
50 FEATURES = $(top_srcdir)/features.conf
52 ### Locale env vars to override system one to ensure commands
53 # using elinks binary will generate texts in english
55 LOCALES = LC_ALL=C LANGUAGE=en
57 ### Scripts
60 CODE2DOC = $(top_srcdir)/doc/tools/code2doc
61 HELP2DOC = $(top_srcdir)/doc/tools/help2doc
62 IMPORT_FEATURES_CONF = $(top_srcdir)/doc/tools/import-features.conf
63 MAKE_ELINKS_MANPAGE = $(top_srcdir)/doc/tools/make-elinks-manpage
64 MAKE_ELINKSKEYS_MANPAGE = $(top_srcdir)/doc/tools/make-elinkskeys-manpage
66 HTML_DOCS-$(CONFIG_ASCIIDOC) += \
67 api/dom.html \
68 elinks.1.html \
69 elinkskeys.5.html \
70 hacking.html \
71 manual.html
73 HTML_DOCS-$(CONFIG_XMLTO) += \
74 manual.html-chunked
76 HTML_DOCS-$(CONFIG_POD2HTML) += \
77 perl.html \
78 perl-hooks.html
80 MAN_DOCS-$(CONFIG_XMLTO) += \
81 man1/elinks.1.in \
82 man5/elinkskeys.5
84 # Only jw is used for generating PDF.
85 PDF_DOCS-$(CONFIG_JW) += \
86 manual.pdf
88 MAN_DOCS += man5/elinks.conf.5
90 MAN_DOCS += $(MAN_DOCS-yes)
91 HTML_DOCS += $(HTML_DOCS-yes)
92 PDF_DOCS += $(PDF_DOCS-yes)
94 man-docs: doc-dirs $(addprefix $(MAN_DIR)/,$(MAN_DOCS))
95 html-docs: doc-dirs $(addprefix $(HTML_DIR)/,$(HTML_DOCS))
96 pdf-docs: doc-dirs $(addprefix $(PDF_DIR)/,$(PDF_DOCS))
98 all-docs: man-docs html-docs pdf-docs
100 ### Build Rules
103 doc-dirs:
104 $(INSTALL) -d $(DOC_DIRS)
106 # $(MAN_DIR) intentionally left out
107 clean-local:
108 @$(RM) -r $(HTML_DIR) $(XML_DIR) $(TXT_DIR) $(PDF_DIR) *.tmp
111 # Autogenerated asciidoc files.
113 $(TXT_DIR)/import-features.conf.txt: $(FEATURES) $(IMPORT_FEATURES_CONF)
114 $(IMPORT_FEATURES_CONF) > $@
116 $(TXT_DIR)/elinks.1.%.txt: $(MAKE_ELINKS_MANPAGE) $(ELINKS) $(HELP2DOC) Makefile
117 $(LOCALES) $(MAKE_ELINKS_MANPAGE) $@ $(ELINKS) $(HELP2DOC) > $@
119 $(TXT_DIR)/elinkskeys.5.%.txt: $(MAKE_ELINKSKEYS_MANPAGE) $(KBDBIND) Makefile
120 $(LOCALES) $(MAKE_ELINKSKEYS_MANPAGE) $@ $(KBDBIND) > $@
123 # Man Pages
125 $(XML_DIR)/%.man.xml: $(TXT_DIR)/%.man.txt
126 $(ASCIIDOC) -b docbook -d manpage -o $@ $<
128 $(MAN_DIR)/man1/elinks.1.in: $(XML_DIR)/elinks.1.man.xml
129 $(XMLTO) -o $(MAN_DIR)/man1 man $<
130 sed 's/^\.TH "ELINKS" 1 .*/.TH "ELINKS" 1 "The ELinks text-browser" "$(shell date -I)" "The ELinks text-browser"/' \
131 < $(MAN_DIR)/man1/elinks.1 > $@
132 rm $(MAN_DIR)/man1/elinks.1
134 $(MAN_DIR)/man5/elinkskeys.5: $(XML_DIR)/elinkskeys.5.man.xml
135 $(XMLTO) -o $(MAN_DIR)/man5 man $<
136 sed -e 's/\\fI\\fR'\''/\\fI\\'\''\\fR/' < $@ > $@.tmp
137 sed 's/^\.TH "ELINKSKEYS" 5 .*/.TH "ELINKSKEYS" 5 "ELinks keybindings" "$(shell date -I)" "ELinks keybindings"/' \
138 < $@.tmp > $@
139 rm $@.tmp
141 $(MAN_DIR)/man5/elinks.conf.5: $(ELINKS) $(HELP2DOC) Makefile
142 $(LOCALES) $(HELP2DOC) --elinks=$(ELINKS) --elinksconf > $@
144 # XHTML/CSS Man Pages
146 $(HTML_DIR)/%.html: $(TXT_DIR)/%.html.txt
147 $(ASCIIDOC) -b xhtml11 -d manpage -o $@ $<
149 # The Manual
151 MANUAL_EXTRA_FILES = \
152 $(TXT_DIR)/import-features.conf.txt \
153 $(TXT_DIR)/elinks.1.html.txt \
154 $(TXT_DIR)/elinkskeys.5.html.txt
156 $(HTML_DIR)/manual.html: $(MANUAL_FILES) $(MANUAL_EXTRA_FILES)
157 $(ASCIIDOC) -b xhtml11 -d book -o $@ -n $<
159 $(HTML_DIR)/hacking.html: $(top_srcdir)/doc/hacking.txt
160 $(ASCIIDOC) -b xhtml11 -d book -o $@ -n $<
162 $(HTML_DIR)/dev-intro.html: $(top_srcdir)/doc/dev-intro.txt
163 $(ASCIIDOC) -b xhtml11 -d book -o $@ -n $<
165 $(XML_DIR)/manual.xml: $(MANUAL_FILES) $(MANUAL_EXTRA_FILES)
166 $(ASCIIDOC) -b docbook -d book -o $@ $<
168 $(HTML_DIR)/manual.html-chunked: $(XML_DIR)/manual.xml
169 $(XMLTO) -o $@ html $<
171 $(PDF_DIR)/manual.pdf: $(XML_DIR)/manual.xml
172 $(JW) -o $(PDF_DIR) -b pdf $<
174 $(HTML_DIR)/perl.html: $(top_srcdir)/doc/perl.pod
175 $(POD2HTML) --outfile=$@ < $<
177 $(HTML_DIR)/perl-hooks.html: $(top_srcdir)/contrib/perl/hooks.pl
178 $(POD2HTML) --outfile=$@ < $<
180 ## API Docs
183 DOM_API = \
184 $(top_srcdir)/src/dom/scanner.h \
185 $(top_srcdir)/src/dom/stack.h \
186 $(top_srcdir)/src/dom/sgml/parser.h
188 $(HTML_DIR)/api/dom.html: $(DOM_API)
189 $(CODE2DOC) $(DOM_API) | $(ASCIIDOC) -f code2doc.conf -b xhtml11 -d book -o $@ -n -
191 include $(top_srcdir)/Makefile.lib