1 ### These are all generic; we set all the variables we need
3 # intermediary build path
4 BUILDDIR = build
5 # same for images
6 BUILDIMAGESDIR = $(BUILDDIR)/images
8 # images
9 # right now, we only allow .png and .fig as source
10 # we might add more later if we feel the need
12 # PNG's can be source or built from .fig
13 PNG = $(strip $(PNG_SRC) $(FIG_SRC:.fig=.png))
14 # EPS .ps files can be built from .png or .fig
15 EPS = $(strip $(FIG_SRC:.fig=.ps) $(PNG_SRC:.png=.ps))
16 # PDF .pdf files can be built from .png or .fig
17 PDF = $(strip $(FIG_SRC:.fig=.pdf) $(PNG_SRC:.png=.pdf))
19 # where we expect to find images during building, whether by copying
20 # or by generating them
21 PNG_BUILT = $(foreach file, $(PNG), $(BUILDIMAGESDIR)/$(file))
22 EPS_BUILT = $(foreach file, $(EPS), $(BUILDIMAGESDIR)/$(file))
23 PDF_BUILT = $(foreach file, $(PDF), $(BUILDIMAGESDIR)/$(file))
25 SRC = $(XML) $(PNG_SRC) $(FIG_SRC) $(CSS) $(EXTRA_SRC)
27 # generate A4 docs
28 PAPER_LOCALE = nl_NL
30 ### generate all documentation by default
31 # hook in html generation
32 all-local: html
34 # can we generate HTML ?
35 if DOC_HTML
36 HTML_DAT = html
37 HTML_TARGET = html/index.html
38 else #!DOC_HTML
39 HTML_DAT =
40 HTML_TARGET =
41 endif #DOC_HTML
42 html: $(HTML_TARGET)
44 # can we generate PS ?
45 if DOC_PS
46 PS_DAT = $(DOC).ps
47 else #!DOC_PS
48 PS_DAT =
49 endif #DOC_PS
50 ps: $(PS_DAT)
52 # can we generate PDF ?
53 if DOC_PDF
54 PDF_DAT = $(DOC).pdf
55 else #!DOC_PDF
56 PDF_DAT =
57 endif #DOC_PDF
58 pdf: $(PDF_DAT)
60 debug:
61 @echo "outputting some useful debug information"
62 @echo "Source XML:"
63 @echo "XML: '$(XML)'"
64 @echo "CSS: '$(CSS)'"
65 @echo "Source image files:"
66 @echo "PNG_SRC: '$(PNG_SRC)'"
67 @echo "FIG_SRC: '$(FIG_SRC)'"
68 @echo "All used image files:"
69 @echo "PNG: '$(PNG)'"
70 @echo "EPS: '$(EPS)'"
71 @echo "PDF: '$(PDF)'"
72 @echo "All used image files in their built path:"
73 @echo "PNG_BUILT: '$(PNG_BUILT)'"
74 @echo "EPS_BUILT: '$(EPS_BUILT)'"
75 @echo "PDF_BUILT: '$(PDF_BUILT)'"
76 @echo "End result products:"
77 @echo "HTML_DAT: '$(HTML_DAT)'"
78 @echo "PS_DAT: '$(PS_DAT)'"
79 @echo "PDF_DAT: '$(PDF_DAT)'"
81 # a rule to copy all of the source for docs into $(builddir)/build
82 $(BUILDDIR)/$(MAIN): $(XML) $(CSS) $(EXTRA_SRC)
83 @-mkdir -p $(BUILDDIR); \
84 if test "x$(EXTRA_SRC)" != "x"; then for a in $(EXTRA_SRC); do cp $(srcdir)/$$a $(BUILDDIR); done; fi ; \
85 for a in $(XML); do cp $(srcdir)/$$a $(BUILDDIR); done ; \
86 for a in $(CSS); do cp $(srcdir)/$$a $(BUILDDIR); done ; \
87 cp ../version.entities $(BUILDDIR) ; \
88 cp $(top_srcdir)/docs/url.entities $(BUILDDIR)
90 # we should switch to xsltproc
91 # docbook2html aka jade can't add the encoding easily to the html meta
92 # (but we are lazy and just abuse sed to add it)
93 # jw -f docbook -b html -d pwg.dsl -o ../html -V '%use-id-as-filename%' $(MAIN)
94 # this is a starting point
95 # xsltproc --nonet /usr/share/xml/docbook/stylesheet/nwalsh/html/docbook.xsl pwg.xml
96 #
97 html/index.html: $(BUILDDIR)/$(MAIN) $(PNG_BUILT) $(FIG_SRC)
98 @$(MAKE) check-local
99 @echo "*** Generating HTML output ***"
100 @-mkdir -p html
101 @cp -f $(srcdir)/../image-png $(BUILDDIR)/image.entities
102 @cd $(BUILDDIR) && SP_ENCODING="UTF-8" docbook2html -o ../html -V '%use-id-as-filename%' $(MAIN)
103 @$(SED) -i -e 's/\(^CONTENT.*\)\(.>\)/\1;charset=UTF-8\2/' html/*html
104 @test "x$(CSS)" != "x" && \
105 echo "Copying .css files: $(CSS)" && \
106 cp $(srcdir)/$(CSS) html
107 @test "x$(PNG)" != "x" && \
108 echo "Copying .png images: $(PNG_BUILT)" && \
109 mkdir -p html/images && \
110 cp $(PNG_BUILT) html/images || true
112 $(DOC).ps: $(BUILDDIR)/$(MAIN) $(EPS_BUILT) $(PNG_SRC) $(FIG_SRC)
113 @$(MAKE) check-local
114 @echo "*** Generating PS output ***"
115 @cp -f $(srcdir)/../image-eps $(BUILDDIR)/image.entities
116 cd $(BUILDDIR) && SP_ENCODING="UTF-8" docbook2ps -o .. $(MAIN)
117 # export LC_PAPER=$(PAPER_LOCALE) && cd $(BUILDDIR) && xmlto ps -o .. $(MAIN)
119 $(DOC).pdf: $(DOC).ps
120 @$(MAKE) check-local
121 @echo "*** Generating PDF output ***"
122 @ps2pdf $(DOC).ps
124 #$(DOC).pdf: $(MAIN) $(PDF) $(FIG_SRC)
125 # @echo "*** Generating PDF output ***"
126 # @cp -f $(srcdir)/../image-pdf image.entities
127 # @export LC_PAPER=$(PAPER_LOCALE) && xmlto pdf $(MAIN)
128 # @rm image.entities
130 clean-local:
131 -$(RM) -r $(BUILDDIR)
132 -$(RM) -r html
133 -$(RM) $(DOC).ps
134 -$(RM) $(DOC).pdf
135 -$(RM) -r www
137 ### image generation
139 # copy png from source dir png
140 $(BUILDIMAGESDIR)/%.png: $(srcdir)/%.png
141 @echo "Copying $< to $@"
142 @mkdir -p $(BUILDIMAGESDIR)
143 @cp $< $@
144 # make png from fig
145 $(BUILDIMAGESDIR)/%.png: %.fig
146 @echo "Generating $@ from $<"
147 @mkdir -p $(BUILDIMAGESDIR)
148 @fig2dev -Lpng $< $@
150 # make ps(EPS) from fig
151 $(BUILDIMAGESDIR)/%.ps: %.fig
152 @echo "Generating $@ from $<"
153 @mkdir -p $(BUILDIMAGESDIR)
154 @fig2dev -Leps $< $@
156 # make pdf from fig
157 $(BUILDIMAGESDIR)/%.pdf: %.fig
158 @echo "Generating $@ from $<"
159 @mkdir -p $(BUILDIMAGESDIR)
160 @fig2dev -Lpdf $< $@
162 # make pdf from png
163 $(BUILDIMAGESDIR)/%.pdf: %.png
164 @echo "Generating $@ from $<"
165 @mkdir -p $(BUILDIMAGESDIR)
166 @cat $< | pngtopnm | pnmtops -noturn 2> /dev/null | epstopdf --filter --outfile $@ 2> /dev/null
168 # make ps(EPS) from png
169 $(BUILDIMAGESDIR)/%.ps: %.png
170 @echo "Generating $@ from $<"
171 @mkdir -p $(BUILDIMAGESDIR)
172 @cat $< | pngtopnm | pnmtops -noturn > $@ 2> /dev/null
174 # make sure xml validates properly
175 check-local: $(BUILDDIR)/$(MAIN)
176 @cp -f $(srcdir)/../image-png $(BUILDDIR)/image.entities
177 cd $(BUILDDIR) && xmllint -noout -valid $(MAIN)
179 # avoid 'cp: cannot create regular file `build/image.entities': File exists'
180 # errors during 'make distcheck' by disabling parallel builds
181 .NOTPARALLEL: