summaryrefslogtreecommitdiffstats
path: root/source-builder/sb/asciidoc/doc/main.aap
blob: 7e42be4012611e29348b3c7c74a4c0dc18dcba9a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
#####################################################################
#
# A-A-P file for making AsciiDoc distribution documentation.
# (you can obtain A-A-P from http://www.a-a-p.org)
#
# Stuart Rackham <srackham@gmail.com>
#####################################################################

:execute ../common.aap

ASCIIDOC = python ../asciidoc.py -a revnumber=$(VERS)@ -a revdate="$(DATE)@"
A2X = python ../a2x.py

:syseval which fop | :assign FOP
@if not _no.FOP:
    :syseval which fop.sh | :assign FOP
:syseval which lynx | :assign LYNX          # Converts HTML to text.
:syseval which xmllint | :assign XMLLINT    # Validates XML.
:syseval which dblatex | :assign DBLATEX    # Converts DocBook XML to PDF.
:syseval which aspell | :assign ASPELL
:syseval which xsltproc | :assign XSLTPROC

ROOT = asciidoc asciidoc.1
INFILES = $*(ROOT).txt
CHUNK_DIR = ./asciidoc.chunked
HTMLHELP_DIR = ./asciidoc.htmlhelp
HTMLHELP_FILE = asciidoc

OUTFILES = $*(ROOT).html $*(ROOT).css.html $*(ROOT).css-embedded.html \
        asciidoc.pdf asciidoc.1.man a2x.1.man \
        article.html book.html book-multi.html asciidoc.xml asciidoc.1.xml \
        ../BUGS ../CHANGELOG ../README ../INSTALL \
        latex-backend.html \
        $HTMLHELP_DIR/index.html \
        $CHUNK_DIR/index.html \
        article.pdf \
        latexmath.pdf \
        latex-filter.pdf \
        source-highlight-filter.pdf \
        music-filter.pdf \
        book.epub \
        article-standalone.html \
        article-html5-toc2.html

TEST_FILES = $*(ROOT).css-embedded.html 
        article.css-embedded.html book.css-embedded.html \
        article.xml book.xml book-multi.xml asciidoc.xml asciidoc.1.xml \
        asciidoc.1.html a2x.1.xml music-filter.xml \
        book.epub asciidoc.epub \


#####################################################################
# Filetype build rules.
#####################################################################

:rule %.epub : %.txt
    :sys $A2X -f epub -d book --epubcheck --icons $source

:rule %.text : %.txt
    # Convert AsciiDoc to HTML then use lynx(1) to convert HTML to text.
    @if not _no.LYNX:
        :print WARNING: lynx(1) unavailable: skipping $target file generation
    @else:
        opt = -f ../text.conf
        @if source_list[0] == 'asciidoc.1.txt':
            opt += -d manpage
        @else:
            opt += -n
        :sys $ASCIIDOC $opt -b html4 -o - $source | \
            lynx -dump -stdin > $target

:rule %.css.html : %.txt
    opt =
    @if source_list[0] == 'asciidoc.1.txt':
        opt += -d manpage
    @else:
        opt += -n
        opt += -a toc -a toclevels=2 -a scriptsdir=../javascripts
    :sys $ASCIIDOC $opt -b xhtml11 -a linkcss -a icons -a stylesdir=../stylesheets -o $target $(source[0])
    @if _no.XMLLINT:
        :sys $XMLLINT --nonet --noout --valid $target
    @else:
        :print WARNING: xmllint(1) unavailable: skipping validation

:rule %.css-embedded.html : %.txt
    opt =
    @if source_list[0] == 'asciidoc.1.txt':
        opt += -d manpage
    @else:
        opt += -n
        opt += -a toc -a toclevels=2
    :sys $ASCIIDOC -b xhtml11 $opt -o $target $(source[0])
    @if _no.XMLLINT:
        :sys $XMLLINT --nonet --noout --valid $target
    @else:
        :print WARNING: xmllint(1) unavailable: skipping validation

:rule %.xml : %.txt
    opt =
    @if source_list[0] in ('asciidoc.1.txt','a2x.1.txt'):
        opt += -d manpage
    @else:
        opt += -n
    @if source_list[0] == 'asciidoc.txt' or source_list[0].startswith('book'):
        opt += -d book
    :sys $ASCIIDOC $opt -b docbook $(source[0])
    @if _no.XMLLINT:
        :sys $XMLLINT --nonet --noout --valid $target
    @else:
        :print WARNING: xmllint(1) unavailable: skipping validation

:rule %.sgml : %.txt
    opt =
    @if source_list[0] in ('asciidoc.1.txt','a2x.1.txt'):
        opt += -d manpage
    @if source_list[0] == 'asciidoc.txt' or source_list[0].startswith('book'):
        opt += -d book
    :sys $ASCIIDOC $opt -b docbook-sgml $(source[0])

:rule %.html: %.xml
    :sys $XSLTPROC --nonet --stringparam admon.textlabel 0 --stringparam html.stylesheet ./docbook-xsl.css ../docbook-xsl/xhtml.xsl $source >$target

:rule %.man : %.xml
    :sys $XSLTPROC --nonet ../docbook-xsl/manpage.xsl $source
    :sys touch $target  # Dummy target.

:rule %.fo: %.xml
    :sys $XSLTPROC --nonet --stringparam admon.textlabel 0 ../docbook-xsl/fo.xsl $source >$target

# This kludge forces the User Guide and LaTeX related PDFs to be generated
# using dblatex so we include a dblatex example in the distribution.
@if _no.DBLATEX:
    asciidoc.pdf: asciidoc.txt
        :sys $ASCIIDOC -b docbook $(source[0])
        :sys $DBLATEX -p ../dblatex/asciidoc-dblatex.xsl -s ../dblatex/asciidoc-dblatex.sty -o $target asciidoc.xml
    latexmath.pdf: latexmath.xml
        :sys $DBLATEX -p ../dblatex/asciidoc-dblatex.xsl -s ../dblatex/asciidoc-dblatex.sty -o $target $source
    latex-filter.pdf: latex-filter.xml
        :sys $DBLATEX -p ../dblatex/asciidoc-dblatex.xsl -s ../dblatex/asciidoc-dblatex.sty -o $target $source

# Force the Source Highlighter PDF to be generated using dblatex
# because dblatex has builtin source code highlighting.
@if _no.DBLATEX:
    source-highlight-filter.pdf: source-highlight-filter.xml
        :sys $DBLATEX -p ../dblatex/asciidoc-dblatex.xsl -s ../dblatex/asciidoc-dblatex.sty -o $target $source

@if _no.FOP:
    :rule %.pdf: %.fo
        :sys $FOP $source $target
@elif _no.DBLATEX:
    # Fall back to dblatex if no FOP.
    :rule %.pdf: %.xml
        :sys $DBLATEX -p ../dblatex/asciidoc-dblatex.xsl -s ../dblatex/asciidoc-dblatex.sty -o $target $source
@else:
    :rule %.pdf:
        :print WARNING: PDF processor  unavailable: skipping $target file generation


#####################################################################
# Explicit file generation (cases that don't fit the rules).
#####################################################################

article-standalone.html: article.txt
    :sys $ASCIIDOC -a data-uri -a icons -a toc -a max-width=55em -o $target $source

article-html5-toc2.html: article.txt
    :sys $ASCIIDOC -b html5 -a icons -a toc2 -a theme=flask -o $target $source

asciidoc.1.html: asciidoc.1.txt
    :sys $ASCIIDOC -d manpage -b html4 $source
    @if _no.XMLLINT:
        :sys $XMLLINT --nonet --noout --valid --html $target
    @else:
        :print WARNING: xmllint(1) unavailable: skipping validation

# User Guide 'chunked' into linked HTML pages.
$CHUNK_DIR/index.html: asciidoc.txt
    :sys $A2X -fchunked -dbook --icons -D ./ asciidoc.txt

# HTML Help formatted User Guide.
$HTMLHELP_DIR/index.html: asciidoc.xml
    :sys $A2X -fhtmlhelp -dbook --icons -D ./ asciidoc.txt

../BUGS: ../BUGS.text
    # Make BUGS.text and copy to BUGS.
    :copy ../BUGS.text ../BUGS

../CHANGELOG: ../CHANGELOG.text
    # Make CHANGELOG.text and copy to CHANGELOG.
    :copy ../CHANGELOG.text ../CHANGELOG

../README: ../README.text
    # Make README.text and copy to README.
    :copy ../README.text ../README

../INSTALL: ../INSTALL.text
    # Make INSTALL.text and copy to INSTALL.
    :copy ../INSTALL.text ../INSTALL

asciimathml.html: asciimathml.txt
    :sys $ASCIIDOC -a asciimath $source
    # No xmllint(1) checking -- fails on embedded JavaScript.

latexmathml.html: latexmathml.txt
    :sys $ASCIIDOC -a latexmath $source
    # No xmllint(1) checking -- fails on embedded JavaScript.


#####################################################################
# Build commands.
#####################################################################

all: $OUTFILES

clean:
    :del {f} $OUTFILES $TEST_FILES
    :del {f} *.bak          # Remove aspell backups.

spell: $INFILES ../CHANGELOG.txt ../README.txt ../BUGS.txt ../INSTALL.txt \
        a2x.1.txt faq.txt asciidocapi.txt testasciidoc.txt \
        epub-notes.txt publishing-ebooks-with-asciidoc.txt \
        source-highlight-filter.txt \
        slidy.txt slidy-example.txt
    # Interactively spell check all files.
    @for s in source_list:
        :sys {i} $ASPELL check -p ./asciidoc.dict $s

clean_testfiles:
    :del {f} $TEST_FILES
    :del {f} music*.png     # Force Lilypond to run.

test: clean_testfiles $TEST_FILES
    # Force generation and validation of .html and Docbook (.xml) files.