]> git.sur5r.net Git - glabels/blob - gnome-doc-utils.make
We need dpkg-dev >= 1.16.1~ (Thanks lintian)
[glabels] / gnome-doc-utils.make
1 # gnome-doc-utils.make - make magic for building documentation
2 # Copyright (C) 2004-2005 Shaun McCance <shaunm@gnome.org>
3 #
4 # This program is free software; you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License as published by
6 # the Free Software Foundation; either version 2 of the License, or
7 # (at your option) any later version.
8 #
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 # GNU General Public License for more details.
13 #
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software Foundation,
16 # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17 #
18 # As a special exception to the GNU General Public License, if you
19 # distribute this file as part of a program that contains a
20 # configuration script generated by Autoconf, you may include it under
21 # the same distribution terms that you use for the rest of that program.
22
23 ################################################################################
24 ## @@ Generating Header Files
25
26 ## @ DOC_H_FILE
27 ## The name of the header file to generate
28 DOC_H_FILE ?=
29
30 ## @ DOC_H_DOCS
31 ## The input DocBook files for generating the header file
32 DOC_H_DOCS ?=
33
34 $(DOC_H_FILE): $(DOC_H_DOCS);
35         @rm -f $@.tmp; touch $@.tmp;
36         echo 'const gchar* documentation_credits[] = {' >> $@.tmp
37         list='$(DOC_H_DOCS)'; for doc in $$list; do \
38           xmlpath="`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`:$(srcdir)/`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`"; \
39           if ! test -f "$$doc"; then doc="$(srcdir)/$$doc"; fi; \
40           xsltproc --path "$$xmlpath" $(_credits) $$doc; \
41         done | sort | uniq \
42           | awk 'BEGIN{s=""}{n=split($$0,w,"<");if(s!=""&&s!=substr(w[1],1,length(w[1])-1)){print s};if(n>1){print $$0;s=""}else{s=$$0}};END{if(s!=""){print s}}' \
43           | sed -e 's/\\/\\\\/' -e 's/"/\\"/' -e 's/\(.*\)/\t"\1",/' >> $@.tmp
44         echo '  NULL' >> $@.tmp
45         echo '};' >> $@.tmp
46         echo >> $@.tmp
47         list='$(DOC_H_DOCS)'; for doc in $$list; do \
48           xmlpath="`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`:$(srcdir)/`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`"; \
49           if ! test -f "$$doc"; then doc="$(srcdir)/$$doc"; fi; \
50           docid=`echo "$$doc" | sed -e 's/.*\/\([^/]*\)\.xml/\1/' \
51             | sed -e 's/[^a-zA-Z_]/_/g' | tr 'a-z' 'A-Z'`; \
52           echo $$xmlpath; \
53           ids=`xsltproc --xinclude --path "$$xmlpath" $(_ids) $$doc`; \
54           for id in $$ids; do \
55             echo '#define HELP_'`echo $$docid`'_'`echo $$id \
56               | sed -e 's/[^a-zA-Z_]/_/g' | tr 'a-z' 'A-Z'`' "'$$id'"' >> $@.tmp; \
57           done; \
58           echo >> $@.tmp; \
59         done;
60         cp $@.tmp $@ && rm -f $@.tmp
61
62 dist-check-gdu:
63 if !HAVE_GNOME_DOC_UTILS
64         @echo "*** GNOME Doc Utils must be installed in order to make dist"
65         @false
66 endif
67
68 .PHONY: dist-doc-header
69 dist-doc-header: $(DOC_H_FILE)
70         @if test -f "$(DOC_H_FILE)"; then d=; else d="$(srcdir)/"; fi; \
71         echo "$(INSTALL_DATA) $${d}$(DOC_H_FILE) $(distdir)/$(DOC_H_FILE)"; \
72         $(INSTALL_DATA) "$${d}$(DOC_H_FILE)" "$(distdir)/$(DOC_H_FILE)";
73
74 doc-dist-hook: dist-check-gdu $(if $(DOC_H_FILE),dist-doc-header)
75
76 .PHONY: clean-doc-header
77 _clean_doc_header = $(if $(DOC_H_FILE),clean-doc-header)
78 clean-local: $(_clean_doc_header)
79 distclean-local: $(_clean_doc_header)
80 mostlyclean-local: $(_clean_doc_header)
81 maintainer-clean-local: $(_clean_doc_header)
82 clean-doc-header:
83         rm -f $(DOC_H_FILE)
84
85 all: $(DOC_H_FILE)
86
87
88 ################################################################################
89 ## @@ Generating Documentation Files
90
91 ## @ DOC_MODULE
92 ## The name of the document being built
93 DOC_MODULE ?=
94
95 ## @ DOC_ID
96 ## The unique identifier for a Mallard document
97 DOC_ID ?=
98
99 ## @ DOC_PAGES
100 ## Page files in a Mallard document
101 DOC_PAGES ?=
102
103 ## @ DOC_ENTITIES
104 ## Files included with a SYSTEM entity
105 DOC_ENTITIES ?=
106
107 ## @ DOC_INCLUDES
108 ## Files included with XInclude
109 DOC_INCLUDES ?=
110
111 ## @ DOC_FIGURES
112 ## Figures and other external data
113 DOC_FIGURES ?=
114
115 ## @ DOC_FORMATS
116 ## The default formats to be built and installed
117 DOC_FORMATS ?= docbook
118 _DOC_REAL_FORMATS = $(if $(DOC_USER_FORMATS),$(DOC_USER_FORMATS),$(DOC_FORMATS))
119
120 ## @ DOC_LINGUAS
121 ## The languages this document is translated into
122 DOC_LINGUAS ?=
123 _DOC_REAL_LINGUAS = $(if $(filter environment,$(origin LINGUAS)),               \
124         $(filter $(LINGUAS),$(DOC_LINGUAS)),                                    \
125         $(DOC_LINGUAS))
126
127 _DOC_ABS_SRCDIR = @abs_srcdir@
128
129
130 ################################################################################
131 ## Variables for Bootstrapping
132
133 _xml2po ?= `which xml2po`
134 _xml2po_mode = $(if $(DOC_ID),mallard,docbook)
135
136 _db2html ?= `$(PKG_CONFIG) --variable db2html gnome-doc-utils`
137 _db2omf  ?= `$(PKG_CONFIG) --variable db2omf gnome-doc-utils`
138 _chunks  ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/chunks.xsl
139 _credits ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/credits.xsl
140 _ids ?= $(shell $(PKG_CONFIG) --variable xmldir gnome-doc-utils)/gnome/xslt/docbook/utils/ids.xsl
141
142 if ENABLE_SK
143 _ENABLE_SK = true
144 _skpkgdatadir ?= `scrollkeeper-config --pkgdatadir`
145 _sklocalstatedir ?= `scrollkeeper-config --pkglocalstatedir`
146 _skcontentslist ?= $(_skpkgdatadir)/Templates/C/scrollkeeper_cl.xml
147 endif
148
149
150 ################################################################################
151 ## Support for automake silent-rules
152 GDU_V_XML2PO=$(GDU__v_XML2PO_$(V))
153 GDU__v_XML2PO_=$(GDU__v_XML2PO_$(AM_DEFAULT_VERBOSITY))
154 GDU__v_XML2PO_0=@echo "  XML2PO" $@;
155
156 GDU_V_MSGFMT=$(GDU__v_MSGFMT_$(V))
157 GDU__v_MSGFMT_=$(GDU__v_MSGFMT_$(AM_DEFAULT_VERBOSITY))
158 GDU__v_MSGFMT_0=@echo "  MSGFMT" $@;
159
160 GDU_V_DB2OMF=$(GDU__v_DB2OMF_$(V))
161 GDU__v_DB2OMF_=$(GDU__v_DB2OMF_$(AM_DEFAULT_VERBOSITY))
162 GDU__v_DB2OMF_0=@echo "  DB2OMF" $@;
163
164 GDU_V_DB2HTM=$(GDU__v_DB2HTM_$(V))
165 GDU__v_DB2HTM_=$(GDU__v_DB2HTM_$(AM_DEFAULT_VERBOSITY))
166 GDU__v_DB2HTM_0=@echo "  DB2HTM" $@;
167
168 ################################################################################
169 ## @@ Rules for OMF Files
170
171 db2omf_args =                                                                   \
172         --stringparam db2omf.basename $(DOC_MODULE)                             \
173         --stringparam db2omf.format $(3)                                        \
174         --stringparam db2omf.dtd                                                \
175         $(shell xmllint --format $(2) | grep -h PUBLIC | head -n 1              \
176                 | sed -e 's/.*PUBLIC \(\"[^\"]*\"\).*/\1/')                     \
177         --stringparam db2omf.lang $(notdir $(patsubst %/$(notdir $(2)),%,$(2))) \
178         --stringparam db2omf.omf_dir "$(OMF_DIR)"                               \
179         --stringparam db2omf.help_dir "$(HELP_DIR)"                             \
180         --stringparam db2omf.omf_in "$(_DOC_OMF_IN)"                            \
181         $(if $(_ENABLE_SK),                                                     \
182           --stringparam db2omf.scrollkeeper_cl "$(_skcontentslist)")            \
183         $(_db2omf) $(2)
184
185 ## @ _DOC_OMF_IN
186 ## The OMF input file
187 _DOC_OMF_IN = $(if $(DOC_MODULE),$(wildcard $(_DOC_ABS_SRCDIR)/$(DOC_MODULE).omf.in))
188
189 ## @ _DOC_OMF_DB
190 ## The OMF files for DocBook output
191 _DOC_OMF_DB = $(if $(_DOC_OMF_IN),                                              \
192         $(foreach lc,C $(_DOC_REAL_LINGUAS),$(DOC_MODULE)-$(lc).omf))
193
194 $(_DOC_OMF_DB) : $(_DOC_OMF_IN)
195 $(_DOC_OMF_DB) : $(DOC_MODULE)-%.omf : %/$(DOC_MODULE).xml
196         @test "x$(_ENABLE_SK)" != "xtrue" -o -f "$(_skcontentslist)" || {       \
197           echo "The file '$(_skcontentslist)' does not exist." >&2;             \
198           echo "Please check your ScrollKeeper installation." >&2;              \
199           exit 1; }
200         $(GDU_V_DB2OMF)xsltproc -o $@ $(call db2omf_args,$@,$<,'docbook') || { rm -f "$@"; exit 1; }
201
202 ## @ _DOC_OMF_HTML
203 ## The OMF files for HTML output
204 _DOC_OMF_HTML = $(if $(_DOC_OMF_IN),                                            \
205         $(foreach lc,C $(_DOC_REAL_LINGUAS),$(DOC_MODULE)-html-$(lc).omf))
206
207 $(_DOC_OMF_HTML) : $(_DOC_OMF_IN)
208 $(_DOC_OMF_HTML) : $(DOC_MODULE)-html-%.omf : %/$(DOC_MODULE).xml
209 if ENABLE_SK
210         @test "x$(_ENABLE_SK)" != "xtrue" -o -f "$(_skcontentslist)" || {       \
211           echo "The file '$(_skcontentslist)' does not exist" >&2;              \
212           echo "Please check your ScrollKeeper installation." >&2;              \
213           exit 1; }
214 endif
215         $(GDU_V_DB2OMF)xsltproc -o $@ $(call db2omf_args,$@,$<,'xhtml') || { rm -f "$@"; exit 1; }
216
217 ## @ _DOC_OMF_ALL
218 ## All OMF output files to be built
219 # FIXME
220 _DOC_OMF_ALL =                                                                  \
221         $(if $(filter docbook,$(_DOC_REAL_FORMATS)),$(_DOC_OMF_DB))             \
222         $(if $(filter html HTML,$(_DOC_REAL_FORMATS)),$(_DOC_OMF_HTML))
223
224 .PHONY: omf
225 omf: $(_DOC_OMF_ALL)
226
227
228 ################################################################################
229 ## @@ C Locale Documents
230
231 ## @ _DOC_C_MODULE
232 ## The top-level documentation file in the C locale
233 _DOC_C_MODULE = $(if $(DOC_MODULE),C/$(DOC_MODULE).xml)
234
235 ## @ _DOC_C_PAGES
236 ## Page files in a Mallard document in the C locale
237 _DOC_C_PAGES = $(foreach page,$(DOC_PAGES),C/$(page))
238
239 ## @ _DOC_C_ENTITIES
240 ## Files included with a SYSTEM entity in the C locale
241 _DOC_C_ENTITIES = $(foreach ent,$(DOC_ENTITIES),C/$(ent))
242
243 ## @ _DOC_C_XINCLUDES
244 ## Files included with XInclude in the C locale
245 _DOC_C_INCLUDES = $(foreach inc,$(DOC_INCLUDES),C/$(inc))
246
247 ## @ _DOC_C_DOCS
248 ## All documentation files in the C locale
249 _DOC_C_DOCS =                                                           \
250         $(_DOC_C_ENTITIES)      $(_DOC_C_INCLUDES)                      \
251         $(_DOC_C_PAGES)         $(_DOC_C_MODULE)
252
253 ## @ _DOC_C_DOCS_NOENT
254 ## All documentation files in the C locale,
255 ## except files included with a SYSTEM entity
256 _DOC_C_DOCS_NOENT =                                                     \
257         $(_DOC_C_MODULE)        $(_DOC_C_INCLUDES)                      \
258         $(_DOC_C_PAGES)
259
260 ## @ _DOC_C_FIGURES
261 ## All figures and other external data in the C locale
262 _DOC_C_FIGURES = $(if $(DOC_FIGURES),                                   \
263         $(foreach fig,$(DOC_FIGURES),C/$(fig)),                         \
264         $(patsubst $(srcdir)/%,%,$(wildcard $(srcdir)/C/figures/*.png)))
265
266 ## @ _DOC_C_HTML
267 ## All HTML documentation in the C locale
268 # FIXME: probably have to shell escape to determine the file names
269 _DOC_C_HTML = $(foreach f,                                              \
270         $(shell xsltproc --xinclude                                     \
271           --stringparam db.chunk.basename "$(DOC_MODULE)"               \
272           $(_chunks) "C/$(DOC_MODULE).xml"),                            \
273         C/$(f).xhtml)
274
275 ###############################################################################
276 ## @@ Other Locale Documentation
277
278 ## @ _DOC_POFILES
279 ## The .po files used for translating the document
280 _DOC_POFILES = $(if $(DOC_MODULE)$(DOC_ID),                                     \
281         $(foreach lc,$(_DOC_REAL_LINGUAS),$(lc)/$(lc).po))
282
283 .PHONY: po
284 po: $(_DOC_POFILES)
285
286 ## @ _DOC_MOFILES
287 ## The .mo files used for translating the document
288 _DOC_MOFILES = $(patsubst %.po,%.mo,$(_DOC_POFILES))
289
290 .PHONY: mo
291 mo: $(_DOC_MOFILES)
292
293 ## @ _DOC_LC_MODULES
294 ## The top-level documentation files in all other locales
295 _DOC_LC_MODULES = $(if $(DOC_MODULE),                                           \
296         $(foreach lc,$(_DOC_REAL_LINGUAS),$(lc)/$(DOC_MODULE).xml))
297
298 ## @ _DOC_LC_PAGES
299 ## Page files in a Mallard document in all other locales
300 _DOC_LC_PAGES =                                                                 \
301         $(foreach lc,$(_DOC_REAL_LINGUAS),$(foreach page,$(_DOC_C_PAGES),       \
302                 $(lc)/$(notdir $(page)) ))
303
304 ## @ _DOC_LC_XINCLUDES
305 ## Files included with XInclude in all other locales
306 _DOC_LC_INCLUDES =                                                              \
307         $(foreach lc,$(_DOC_REAL_LINGUAS),$(foreach inc,$(_DOC_C_INCLUDES),     \
308                 $(lc)/$(notdir $(inc)) ))
309
310 ## @ _DOC_LC_HTML
311 ## All HTML documentation in all other locales
312 # FIXME: probably have to shell escape to determine the file names
313 _DOC_LC_HTML =                                                                  \
314         $(foreach lc,$(_DOC_REAL_LINGUAS),$(foreach doc,$(_DOC_C_HTML),         \
315                 $(lc)/$(notdir $(doc)) ))
316
317 ## @ _DOC_LC_DOCS
318 ## All documentation files in all other locales
319 _DOC_LC_DOCS =                                                                  \
320         $(_DOC_LC_MODULES)      $(_DOC_LC_INCLUDES)     $(_DOC_LC_PAGES)        \
321         $(if $(filter html HTML,$(_DOC_REAL_FORMATS)),$(_DOC_LC_HTML))
322
323 ## @ _DOC_LC_FIGURES
324 ## All figures and other external data in all other locales
325 _DOC_LC_FIGURES = $(foreach lc,$(_DOC_REAL_LINGUAS),                            \
326         $(patsubst C/%,$(lc)/%,$(_DOC_C_FIGURES)) )
327
328 _DOC_SRC_FIGURES =                                                              \
329         $(foreach fig,$(_DOC_C_FIGURES), $(foreach lc,C $(_DOC_REAL_LINGUAS),   \
330                 $(wildcard $(srcdir)/$(lc)/$(patsubst C/%,%,$(fig))) ))
331
332 $(_DOC_POFILES):
333         @if ! test -d $(dir $@); then \
334           echo "mkdir $(dir $@)"; \
335           mkdir "$(dir $@)"; \
336         fi
337         @if test ! -f $@ -a -f $(srcdir)/$@; then \
338           echo "cp $(srcdir)/$@ $@"; \
339           cp "$(srcdir)/$@" "$@"; \
340         fi;
341         @docs=; \
342         list='$(_DOC_C_DOCS_NOENT)'; for doc in $$list; do \
343           docs="$$docs $(_DOC_ABS_SRCDIR)/$$doc"; \
344         done; \
345         if ! test -f $@; then \
346           echo "(cd $(dir $@) && \
347             $(_xml2po) -m $(_xml2po_mode) -e $$docs > $(notdir $@).tmp && \
348             cp $(notdir $@).tmp $(notdir $@) && rm -f $(notdir $@).tmp)"; \
349           (cd $(dir $@) && \
350             $(_xml2po) -m $(_xml2po_mode) -e $$docs > $(notdir $@).tmp && \
351             cp $(notdir $@).tmp $(notdir $@) && rm -f $(notdir $@).tmp); \
352         else \
353           echo "(cd $(dir $@) && \
354             $(_xml2po) -m $(_xml2po_mode) -e -u $(notdir $@) $$docs)"; \
355           (cd $(dir $@) && \
356             $(_xml2po) -m $(_xml2po_mode) -e -u $(notdir $@) $$docs); \
357         fi
358
359 $(_DOC_MOFILES): %.mo: %.po
360         $(AM_V_at)if ! test -d $(dir $@); then mkdir "$(dir $@)"; fi
361         $(GDU_V_MSGFMT)msgfmt -o $@ $<
362
363 # FIXME: fix the dependancy
364 # FIXME: hook xml2po up
365 $(_DOC_LC_DOCS) : $(_DOC_MOFILES)
366 $(_DOC_LC_DOCS) : $(_DOC_C_DOCS)
367         $(AM_V_at)if ! test -d $(dir $@); then mkdir $(dir $@); fi
368         $(GDU_V_XML2PO)if [ -f "C/$(notdir $@)" ]; then d="../"; else d="$(_DOC_ABS_SRCDIR)/"; fi; \
369         mo="$(dir $@)$(patsubst %/$(notdir $@),%,$@).mo"; \
370         if [ -f "$${mo}" ]; then mo="../$${mo}"; else mo="$(_DOC_ABS_SRCDIR)/$${mo}"; fi; \
371         (cd $(dir $@) && \
372           $(_xml2po) -m $(_xml2po_mode) -e -t "$${mo}" \
373             "$${d}C/$(notdir $@)" > $(notdir $@).tmp && \
374             cp $(notdir $@).tmp $(notdir $@) && rm -f $(notdir $@).tmp)
375
376 ## @ _DOC_POT
377 ## A pot file
378 _DOC_POT = $(if $(DOC_MODULE),$(DOC_MODULE).pot,$(if $(DOC_ID),$(DOC_ID).pot))
379 .PHONY: pot
380 pot: $(_DOC_POT)
381 $(_DOC_POT): $(_DOC_C_DOCS_NOENT)
382         $(GDU_V_XML2PO)$(_xml2po) -m $(_xml2po_mode) -e -o $@ $^
383
384
385 ################################################################################
386 ## @@ All Documentation
387
388 ## @ _DOC_HTML_ALL
389 ## All HTML documentation, only if it's built
390 _DOC_HTML_ALL = $(if $(filter html HTML,$(_DOC_REAL_FORMATS)), \
391         $(_DOC_C_HTML) $(_DOC_LC_HTML))
392
393 _DOC_HTML_TOPS = $(foreach lc,C $(_DOC_REAL_LINGUAS),$(lc)/$(DOC_MODULE).xhtml)
394
395 $(_DOC_HTML_TOPS): $(_DOC_C_DOCS) $(_DOC_LC_DOCS)
396         $(GDU_V_DB2HTM)xsltproc -o $@ --xinclude --param db.chunk.chunk_top "false()" --stringparam db.chunk.basename "$(DOC_MODULE)" --stringparam db.chunk.extension ".xhtml" $(_db2html) $(patsubst %.xhtml,%.xml,$@)
397
398
399 ################################################################################
400 ## All
401
402 all:                                                    \
403         $(_DOC_C_DOCS)          $(_DOC_LC_DOCS)         \
404         $(_DOC_OMF_ALL)         $(_DOC_DSK_ALL)         \
405         $(_DOC_HTML_ALL)        $(_DOC_POFILES)
406
407
408 ################################################################################
409 ## Clean
410
411 .PHONY: clean-doc-omf clean-doc-dsk clean-doc-lc clean-doc-dir
412
413 clean-doc-omf: ; rm -f $(_DOC_OMF_DB) $(_DOC_OMF_HTML)
414 clean-doc-dsk: ; rm -f $(_DOC_DSK_DB) $(_DOC_DSK_HTML)
415 clean-doc-lc:
416         rm -f $(_DOC_LC_DOCS)
417         rm -f $(_DOC_MOFILES)
418         @list='$(_DOC_POFILES)'; for po in $$list; do \
419           if ! test "$$po" -ef "$(srcdir)/$$po"; then \
420             echo "rm -f $$po"; \
421             rm -f "$$po"; \
422           fi; \
423         done
424 #       .xml2.po.mo cleaning is obsolete as of 0.18.1 and could be removed in 0.20.x
425         @for lc in C $(_DOC_REAL_LINGUAS); do \
426           if test -f "$$lc/.xml2po.mo"; then \
427             echo "rm -f $$lc/.xml2po.mo"; \
428             rm -f "$$lc/.xml2po.mo"; \
429           fi; \
430         done
431 clean-doc-dir: clean-doc-lc
432         @for lc in C $(_DOC_REAL_LINGUAS); do \
433           for dir in `find $$lc -depth -type d`; do \
434             if ! test $$dir -ef $(srcdir)/$$dir; then \
435               echo "rmdir $$dir"; \
436               rmdir "$$dir"; \
437            fi; \
438           done; \
439         done
440
441 _clean_omf = $(if $(_DOC_OMF_IN),clean-doc-omf)
442 _clean_dsk = $(if $(_DOC_DSK_IN),clean-doc-dsk)
443 _clean_lc  = $(if $(_DOC_REAL_LINGUAS),clean-doc-lc)
444 _clean_dir = $(if $(DOC_MODULE)$(DOC_ID),clean-doc-dir)
445
446 clean-local:                                            \
447         $(_clean_omf)           $(_clean_dsk)           \
448         $(_clean_lc)            $(_clean_dir)
449 distclean-local:                                        \
450         $(_clean_omf)           $(_clean_dsk)           \
451         $(_clean_lc)            $(_clean_dir)
452 mostlyclean-local:                                      \
453         $(_clean_omf)           $(_clean_dsk)           \
454         $(_clean_lc)            $(_clean_dir)
455 maintainer-clean-local:                                 \
456         $(_clean_omf)           $(_clean_dsk)           \
457         $(_clean_lc)            $(_clean_dir)
458
459
460
461 ################################################################################
462 ## Dist
463
464 .PHONY: dist-doc-docs dist-doc-pages dist-doc-figs dist-doc-omf dist-doc-dsk
465 doc-dist-hook:                                          \
466         $(if $(DOC_MODULE)$(DOC_ID),dist-doc-docs)      \
467         $(if $(_DOC_C_FIGURES),dist-doc-figs)           \
468         $(if $(_DOC_OMF_IN),dist-doc-omf)
469 #       $(if $(_DOC_DSK_IN),dist-doc-dsk)
470
471 dist-doc-docs: $(_DOC_C_DOCS) $(_DOC_LC_DOCS) $(_DOC_POFILES)
472         @for lc in C $(_DOC_REAL_LINGUAS); do \
473           echo " $(mkinstalldirs) $(distdir)/$$lc"; \
474           $(mkinstalldirs) "$(distdir)/$$lc"; \
475         done
476         @list='$(_DOC_C_DOCS)'; \
477         for doc in $$list; do \
478           if test -f "$$doc"; then d=; else d="$(srcdir)/"; fi; \
479             docdir=`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \
480             if ! test -d "$(distdir)/$$docdir"; then \
481               echo "$(mkinstalldirs) $(distdir)/$$docdir"; \
482               $(mkinstalldirs) "$(distdir)/$$docdir"; \
483             fi; \
484           echo "$(INSTALL_DATA) $$d$$doc $(distdir)/$$doc"; \
485           $(INSTALL_DATA) "$$d$$doc" "$(distdir)/$$doc"; \
486         done
487         @list='$(_DOC_LC_DOCS)'; \
488         for doc in $$list; do \
489           if test -f "$$doc"; then d=; else d="$(srcdir)/"; fi; \
490             docdir=`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \
491             if ! test -d "$(distdir)/$$docdir"; then \
492               echo "$(mkinstalldirs) $(distdir)/$$docdir"; \
493               $(mkinstalldirs) "$(distdir)/$$docdir"; \
494             fi; \
495           echo "$(INSTALL_DATA) $$d$$doc $(distdir)/$$doc"; \
496           $(INSTALL_DATA) "$$d$$doc" "$(distdir)/$$doc"; \
497         done
498         @list='$(_DOC_POFILES)'; \
499         for doc in $$list; do \
500           if test -f "$$doc"; then d=; else d="$(srcdir)/"; fi; \
501             docdir=`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \
502             if ! test -d "$(distdir)/$$docdir"; then \
503               echo "$(mkinstalldirs) $(distdir)/$$docdir"; \
504               $(mkinstalldirs) "$(distdir)/$$docdir"; \
505             fi; \
506           echo "$(INSTALL_DATA) $$d$$doc $(distdir)/$$doc"; \
507           $(INSTALL_DATA) "$$d$$doc" "$(distdir)/$$doc"; \
508         done
509
510 dist-doc-figs: $(_DOC_SRC_FIGURES)
511         @list='$(_DOC_C_FIGURES) $(_DOC_LC_FIGURES)'; \
512         for fig in $$list; do \
513           if test -f "$$fig"; then d=; else d="$(srcdir)/"; fi; \
514           if test -f "$$d$$fig"; then \
515             figdir=`echo $$fig | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \
516             if ! test -d "$(distdir)/$$figdir"; then \
517               echo "$(mkinstalldirs) $(distdir)/$$figdir"; \
518               $(mkinstalldirs) "$(distdir)/$$figdir"; \
519             fi; \
520             echo "$(INSTALL_DATA) $$d$$fig $(distdir)/$$fig"; \
521             $(INSTALL_DATA) "$$d$$fig" "$(distdir)/$$fig"; \
522           fi; \
523         done;
524
525 dist-doc-omf:
526         @if test -f "$(_DOC_OMF_IN)"; then d=; else d="$(srcdir)/"; fi; \
527         echo "$(INSTALL_DATA) $$d$(_DOC_OMF_IN) $(distdir)/$(notdir $(_DOC_OMF_IN))"; \
528         $(INSTALL_DATA) "$$d$(_DOC_OMF_IN)" "$(distdir)/$(notdir $(_DOC_OMF_IN))"
529
530 dist-doc-dsk:
531         @if test -f "$(_DOC_DSK_IN)"; then d=; else d="$(srcdir)/"; fi; \
532         echo "$(INSTALL_DATA) $$d$(_DOC_DSK_IN) $(distdir)/$(notdir $(_DOC_DSK_IN))"; \
533         $(INSTALL_DATA) "$$d$(_DOC_DSK_IN)" "$(distdir)/$(notdir $(_DOC_DSK_IN))"
534
535
536
537 ################################################################################
538 ## Check
539
540 .PHONY: check-doc-docs check-doc-omf
541 check:                                                  \
542         $(if $(DOC_MODULE),check-doc-docs)              \
543         $(if $(DOC_ID),check-doc-pages)                 \
544         $(if $(_DOC_OMF_IN),check-doc-omf)
545
546 check-doc-docs: $(_DOC_C_DOCS) $(_DOC_LC_DOCS)
547         @for lc in C $(_DOC_REAL_LINGUAS); do \
548           if test -f "$$lc"; \
549             then d=; \
550             xmlpath="$$lc"; \
551           else \
552             d="$(srcdir)/"; \
553             xmlpath="$$lc:$(srcdir)/$$lc"; \
554           fi; \
555           echo "xmllint --noout --noent --path $$xmlpath --xinclude --postvalid $$d$$lc/$(DOC_MODULE).xml"; \
556           xmllint --noout --noent --path "$$xmlpath" --xinclude --postvalid "$$d$$lc/$(DOC_MODULE).xml"; \
557         done
558
559 check-doc-pages: $(_DOC_C_PAGES) $(_DOC_LC_PAGES)
560         for lc in C $(_DOC_REAL_LINGUAS); do \
561           if test -f "$$lc"; \
562             then d=; \
563             xmlpath="$$lc"; \
564           else \
565             d="$(srcdir)/"; \
566             xmlpath="$$lc:$(srcdir)/$$lc"; \
567           fi; \
568           for page in $(DOC_PAGES); do \
569             echo "xmllint --noout --noent --path $$xmlpath --xinclude $$d$$lc/$$page"; \
570             xmllint --noout --noent --path "$$xmlpath" --xinclude "$$d$$lc/$$page"; \
571           done; \
572         done
573
574 check-doc-omf: $(_DOC_OMF_ALL)
575         @list='$(_DOC_OMF_ALL)'; for omf in $$list; do \
576           echo "xmllint --noout --xinclude --dtdvalid 'http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd' $$omf"; \
577           xmllint --noout --xinclude --dtdvalid 'http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd' $$omf; \
578         done
579
580
581
582 ################################################################################
583 ## Install
584
585 .PHONY: install-doc-docs install-doc-html install-doc-figs install-doc-omf install-doc-dsk
586
587 _doc_install_dir = $(if $(DOC_ID),$(DOC_ID),$(DOC_MODULE))
588
589 install-data-local:                                     \
590         $(if $(DOC_MODULE)$(DOC_ID),install-doc-docs)   \
591         $(if $(_DOC_HTML_ALL),install-doc-html)         \
592         $(if $(_DOC_C_FIGURES),install-doc-figs)        \
593         $(if $(_DOC_OMF_IN),install-doc-omf)
594 #       $(if $(_DOC_DSK_IN),install-doc-dsk)
595
596 install-doc-docs:
597         @for lc in C $(_DOC_REAL_LINGUAS); do \
598           echo "$(mkinstalldirs) $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$lc"; \
599           $(mkinstalldirs) $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$lc; \
600         done
601         @list='$(_DOC_C_DOCS)'; for doc in $$list; do \
602           if test -f "$$doc"; then d=; else d="$(srcdir)/"; fi; \
603           docdir="$$lc/"`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \
604           docdir="$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$docdir"; \
605           if ! test -d "$$docdir"; then \
606             echo "$(mkinstalldirs) $$docdir"; \
607             $(mkinstalldirs) "$$docdir"; \
608           fi; \
609           echo "$(INSTALL_DATA) $$d$$doc $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \
610           $(INSTALL_DATA) $$d$$doc $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc; \
611         done
612         @list='$(_DOC_LC_DOCS)'; for doc in $$list; do \
613           if test -f "$$doc"; then d=; else d="$(srcdir)/"; fi; \
614           docdir="$$lc/"`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \
615           docdir="$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$docdir"; \
616           if ! test -d "$$docdir"; then \
617             echo "$(mkinstalldirs) $$docdir"; \
618             $(mkinstalldirs) "$$docdir"; \
619           fi; \
620           echo "$(INSTALL_DATA) $$d$$doc $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \
621           $(INSTALL_DATA) $$d$$doc $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc; \
622         done
623
624 install-doc-figs:
625         @list='$(patsubst C/%,%,$(_DOC_C_FIGURES))'; for fig in $$list; do \
626           for lc in C $(_DOC_REAL_LINGUAS); do \
627             figsymlink=false; \
628             if test -f "$$lc/$$fig"; then \
629               figfile="$$lc/$$fig"; \
630             elif test -f "$(srcdir)/$$lc/$$fig"; then \
631               figfile="$(srcdir)/$$lc/$$fig"; \
632             else \
633               figsymlink=true; \
634             fi; \
635             figdir="$$lc/"`echo $$fig | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \
636             figdir="$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$figdir"; \
637             if ! test -d "$$figdir"; then \
638               echo "$(mkinstalldirs) $$figdir"; \
639               $(mkinstalldirs) "$$figdir"; \
640             fi; \
641             figbase=`echo $$fig | sed -e 's/^.*\///'`; \
642             if $$figsymlink; then \
643               echo "cd $$figdir && $(LN_S) -f ../../C/$$fig $$figbase"; \
644               ( cd "$$figdir" && $(LN_S) -f "../../C/$$fig" "$$figbase" ); \
645             else \
646               echo "$(INSTALL_DATA) $$figfile $$figdir$$figbase"; \
647               $(INSTALL_DATA) "$$figfile" "$$figdir$$figbase"; \
648             fi; \
649           done; \
650         done
651
652 install-doc-html:
653         echo install-html
654
655 install-doc-omf:
656         $(mkinstalldirs) $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)
657         @list='$(_DOC_OMF_ALL)'; for omf in $$list; do \
658           echo "$(INSTALL_DATA) $$omf $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \
659           $(INSTALL_DATA) $$omf $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf; \
660         done
661         @if test "x$(_ENABLE_SK)" = "xtrue"; then \
662           echo "scrollkeeper-update -p $(DESTDIR)$(_sklocalstatedir) -o $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)"; \
663           scrollkeeper-update -p "$(DESTDIR)$(_sklocalstatedir)" -o "$(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)"; \
664         fi;
665
666 install-doc-dsk:
667         echo install-dsk
668
669
670
671 ################################################################################
672 ## Uninstall
673
674 .PHONY: uninstall-doc-docs uninstall-doc-html uninstall-doc-figs uninstall-doc-omf uninstall-doc-dsk
675 uninstall-local:                                        \
676         $(if $(DOC_MODULE)$(DOC_ID),uninstall-doc-docs) \
677         $(if $(_DOC_HTML_ALL),uninstall-doc-html)       \
678         $(if $(_DOC_C_FIGURES),uninstall-doc-figs)      \
679         $(if $(_DOC_OMF_IN),uninstall-doc-omf)
680 #       $(if $(_DOC_DSK_IN),uninstall-doc-dsk)
681
682 uninstall-doc-docs:
683         @list='$(_DOC_C_DOCS)'; for doc in $$list; do \
684           echo " rm -f $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \
685           rm -f "$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \
686         done
687         @list='$(_DOC_LC_DOCS)'; for doc in $$list; do \
688           echo " rm -f $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \
689           rm -f "$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \
690         done
691
692 uninstall-doc-figs:
693         @list='$(_DOC_C_FIGURES) $(_DOC_LC_FIGURES)'; for fig in $$list; do \
694           echo "rm -f $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$fig"; \
695           rm -f "$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$fig"; \
696         done;
697
698 uninstall-doc-omf:
699         @list='$(_DOC_OMF_ALL)'; for omf in $$list; do \
700           if test "x$(_ENABLE_SK)" = "xtrue"; then \
701             echo "scrollkeeper-uninstall -p $(_sklocalstatedir) $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \
702             scrollkeeper-uninstall -p "$(_sklocalstatedir)" "$(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \
703           fi; \
704           echo "rm -f $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \
705           rm -f "$(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \
706         done