gnome-doc-utils.make
上传用户:ledjyj
上传日期:2014-08-27
资源大小:2639k
文件大小:24k
源码类别:

驱动编程

开发平台:

Unix_Linux

  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. ## @@ Generating Header Files
  24. ## @ DOC_H_FILE
  25. ## The name of the header file to generate
  26. DOC_H_FILE ?=
  27. ## @ DOC_H_DOCS
  28. ## The input DocBook files for generating the header file
  29. DOC_H_DOCS ?=
  30. $(DOC_H_FILE): $(DOC_H_DOCS);
  31. @rm -f $@.tmp; touch $@.tmp;
  32. echo 'const gchar* documentation_credits[] = {' >> $@.tmp
  33. list='$(DOC_H_DOCS)'; for doc in $$list; do 
  34.   xmlpath="`echo $$doc | sed -e 's/^(.*/).*/1/' -e '///!s/.*//'`:$(srcdir)/`echo $$doc | sed -e 's/^(.*/).*/1/' -e '///!s/.*//'`"; 
  35.   if ! test -f "$$doc"; then doc="$(srcdir)/$$doc"; fi; 
  36.   xsltproc --path "$$xmlpath" $(_credits) $$doc; 
  37. done | sort | uniq 
  38.   | 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}}' 
  39.   | sed -e 's/\/\\/' -e 's/"/\"/' -e 's/(.*)/t"1",/' >> $@.tmp
  40. echo ' NULL' >> $@.tmp
  41. echo '};' >> $@.tmp
  42. echo >> $@.tmp
  43. list='$(DOC_H_DOCS)'; for doc in $$list; do 
  44.   xmlpath="`echo $$doc | sed -e 's/^(.*/).*/1/' -e '///!s/.*//'`:$(srcdir)/`echo $$doc | sed -e 's/^(.*/).*/1/' -e '///!s/.*//'`"; 
  45.   if ! test -f "$$doc"; then doc="$(srcdir)/$$doc"; fi; 
  46.   docid=`echo "$$doc" | sed -e 's/.*/([^/]*).xml/1/' 
  47.     | sed -e 's/[^a-zA-Z_]/_/g' | tr 'a-z' 'A-Z'`; 
  48.   echo $$xmlpath; 
  49.   ids=`xsltproc --xinclude --path "$$xmlpath" $(_ids) $$doc`; 
  50.   for id in $$ids; do 
  51.     echo '#define HELP_'`echo $$docid`'_'`echo $$id 
  52.       | sed -e 's/[^a-zA-Z_]/_/g' | tr 'a-z' 'A-Z'`' "'$$id'"' >> $@.tmp; 
  53.   done; 
  54.   echo >> $@.tmp; 
  55. done;
  56. cp $@.tmp $@ && rm -f $@.tmp
  57. .PHONY: dist-doc-header
  58. dist-doc-header: $(DOC_H_FILE)
  59. @if test -f "$(DOC_H_FILE)"; then d=; else d="$(srcdir)/"; fi; 
  60. echo "$(INSTALL_DATA) $${d}$(DOC_H_FILE) $(distdir)/$(DOC_H_FILE)"; 
  61. $(INSTALL_DATA) "$${d}$(DOC_H_FILE)" "$(distdir)/$(DOC_H_FILE)";
  62. doc-dist-hook: $(if $(DOC_H_FILE),dist-doc-header)
  63. .PHONY: clean-doc-header
  64. _clean_doc_header = $(if $(DOC_H_FILE),clean-doc-header)
  65. clean-local: $(_clean_doc_header)
  66. distclean-local: $(_clean_doc_header)
  67. mostlyclean-local: $(_clean_doc_header)
  68. maintainer-clean-local: $(_clean_doc_header)
  69. clean-doc-header:
  70. rm -f $(DOC_H_FILE)
  71. all: $(DOC_H_FILE)
  72. ################################################################################
  73. ## @@ Generating Documentation Files
  74. ## @ DOC_MODULE
  75. ## The name of the document being built
  76. DOC_MODULE ?=
  77. ## @ DOC_ENTITIES
  78. ## Files included with a SYSTEM entity
  79. DOC_ENTITIES ?=
  80. ## @ DOC_INCLUDES
  81. ## Files included with XInclude
  82. DOC_INCLUDES ?=
  83. ## @ DOC_FIGURES
  84. ## Figures and other external data
  85. DOC_FIGURES ?=
  86. ## @ DOC_FORMATS
  87. ## The default formats to be built and installed
  88. DOC_FORMATS ?= docbook
  89. _DOC_REAL_FORMATS = $(if $(DOC_USER_FORMATS),$(DOC_USER_FORMATS),$(DOC_FORMATS))
  90. ## @ DOC_LINGUAS
  91. ## The languages this document is translated into
  92. DOC_LINGUAS ?=
  93. _DOC_REAL_LINGUAS = $(if $(filter environment,$(origin LINGUAS)),
  94. $(filter $(LINGUAS),$(DOC_LINGUAS)),
  95. $(DOC_LINGUAS))
  96. ## @ RNGDOC_DIRS
  97. ## The directories containing RNG files to be documented with rngdoc
  98. RNGDOC_DIRS ?=
  99. ## @ XSLDOC_DIRS
  100. ## The directories containing XSLT files to be documented with xsldoc
  101. XSLDOC_DIRS ?=
  102. ################################################################################
  103. ## Variables for Bootstrapping
  104. _xml2po ?= `which xml2po`
  105. _db2html ?= `$(PKG_CONFIG) --variable db2html gnome-doc-utils`
  106. _db2omf  ?= `$(PKG_CONFIG) --variable db2omf gnome-doc-utils`
  107. _rngdoc  ?= `$(PKG_CONFIG) --variable rngdoc gnome-doc-utils`
  108. _xsldoc  ?= `$(PKG_CONFIG) --variable xsldoc gnome-doc-utils`
  109. _chunks  ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/chunks.xsl
  110. _credits ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/credits.xsl
  111. _ids ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/ids.xsl
  112. _sklocalstatedir ?= `scrollkeeper-config --pkglocalstatedir`
  113. ################################################################################
  114. ## @@ Rules for rngdoc
  115. rngdoc_args =
  116. --stringparam rngdoc.id
  117. $(shell echo $(basename $(notdir $(1))) | sed -e 's/[^A-Za-z0-9_-]/_/g')
  118. $(_rngdoc) $(filter %/$(basename $(notdir $(1))).rng,$(_RNGDOC_RNGS))
  119. ## @ _RNGDOC_RNGS
  120. ## The actual RNG files for which to generate documentation with rngdoc
  121. _RNGDOC_RNGS = $(sort $(patsubst ./%, %, $(foreach dir,$(RNGDOC_DIRS),
  122. $(wildcard $(dir)/*.rng) $(wildcard $(srcdir)/$(dir)/*.rng))))
  123. ## @ _RNGDOC_C_DOCS
  124. ## The generated rngdoc documentation in the C locale
  125. _RNGDOC_C_DOCS = $(foreach rng,$(_RNGDOC_RNGS), C/$(basename $(notdir $(rng))).xml)
  126. # FIXME: Fix the dependancies
  127. $(_RNGDOC_C_DOCS) : $(_RNGDOC_RNGS)
  128. if ! test -d $(dir $@); then mkdir $(dir $@); fi;
  129. xsltproc $(call rngdoc_args,$@,$<) | xmllint --c14n - > $@.tmp && 
  130.   cp $@.tmp $@ && rm -f $@.tmp
  131. .PHONY: rngdoc
  132. rngdoc: $(_RNGDOC_C_DOCS)
  133. ################################################################################
  134. ## @@ Rules for xsldoc
  135. # FIXME: _XSLDOC_XSLS is getting dupes with relative/absolute in some
  136. # cases.  Right now, I'm just taking the first, but that's just a bad
  137. # work-around.  Fix the real problem.
  138. xsldoc_args =
  139. --stringparam xsldoc.id
  140. $(shell echo $(basename $(notdir $(1))) | sed -e 's/[^A-Za-z0-9_-]/_/g')
  141. $(_xsldoc)
  142. $(word 1,$(filter %/$(basename $(notdir $(1))).xsl,$(_XSLDOC_XSLS)))
  143. ## @ _XSLDOC_XSLS
  144. ## The actual XSLT files for which to generate documentation with xsldoc
  145. _XSLDOC_XSLS = $(sort $(patsubst ./%, %, $(foreach dir,$(XSLDOC_DIRS),
  146. $(wildcard $(dir)/*.xsl) $(wildcard $(srcdir)/$(dir)/*.xsl))))
  147. ## @ _XSLDOC_C_DOCS
  148. ## The generated xsldoc documentation in the C locale
  149. _XSLDOC_C_DOCS = $(foreach xsl,$(_XSLDOC_XSLS), C/$(basename $(notdir $(xsl))).xml)
  150. # FIXME: Fix the dependancies
  151. $(_XSLDOC_C_DOCS) : $(_XSLDOC_XSLS)
  152. if ! test -d $(dir $@); then mkdir $(dir $@); fi;
  153. xsltproc $(call xsldoc_args,$@,$<) | xmllint --c14n - > $@.tmp && 
  154.   cp $@.tmp $@ && rm -f $@.tmp
  155. .PHONY: xsldoc
  156. xsldoc: $(_XSLDOC_C_DOCS)
  157. ################################################################################
  158. ## @@ Rules for OMF Files
  159. db2omf_args =
  160. --stringparam db2omf.basename $(DOC_MODULE)
  161. --stringparam db2omf.format $(3)
  162. --stringparam db2omf.dtd
  163. $(shell xmllint --format $(2) | grep -h PUBLIC | head -n 1 
  164. | sed -e 's/.*PUBLIC ("[^"]*").*/1/')
  165. --stringparam db2omf.lang $(notdir $(patsubst %/$(notdir $(2)),%,$(2)))
  166. --stringparam db2omf.omf_dir "$(OMF_DIR)"
  167. --stringparam db2omf.help_dir "$(HELP_DIR)"
  168. --stringparam db2omf.omf_in "`pwd`/$(_DOC_OMF_IN)"
  169. $(_db2omf) $(2)
  170. ## @ _DOC_OMF_IN
  171. ## The OMF input file
  172. _DOC_OMF_IN = $(if $(DOC_MODULE),$(wildcard $(srcdir)/$(DOC_MODULE).omf.in))
  173. ## @ _DOC_OMF_DB
  174. ## The OMF files for DocBook output
  175. _DOC_OMF_DB = $(if $(_DOC_OMF_IN),
  176. $(foreach lc,C $(_DOC_REAL_LINGUAS),$(DOC_MODULE)-$(lc).omf))
  177. $(_DOC_OMF_DB) : $(_DOC_OMF_IN)
  178. $(_DOC_OMF_DB) : $(DOC_MODULE)-%.omf : %/$(DOC_MODULE).xml
  179. xsltproc -o $@ $(call db2omf_args,$@,$<,'docbook')
  180. ## @ _DOC_OMF_HTML
  181. ## The OMF files for HTML output
  182. _DOC_OMF_HTML = $(if $(_DOC_OMF_IN),
  183. $(foreach lc,C $(_DOC_REAL_LINGUAS),$(DOC_MODULE)-html-$(lc).omf))
  184. $(_DOC_OMF_HTML) : $(_DOC_OMF_IN)
  185. $(_DOC_OMF_HTML) : $(DOC_MODULE)-html-%.omf : %/$(DOC_MODULE).xml
  186. xsltproc -o $@ $(call db2omf_args,$@,$<,'xhtml')
  187. ## @ _DOC_OMF_ALL
  188. ## All OMF output files to be built
  189. # FIXME
  190. _DOC_OMF_ALL =
  191. $(if $(filter docbook,$(_DOC_REAL_FORMATS)),$(_DOC_OMF_DB))
  192. $(if $(filter html HTML,$(_DOC_REAL_FORMATS)),$(_DOC_OMF_HTML))
  193. .PHONY: omf
  194. omf: $(_DOC_OMF_ALL)
  195. ################################################################################
  196. ## @@ Rules for .cvsignore Files
  197. ## @ _CVSIGNORE_TOP
  198. ## The .cvsignore file in the top directory
  199. _CVSIGNORE_TOP = $(if $(DOC_MODULE), .cvsignore)
  200. ## @ _CVSIGNORE_C
  201. ## The .cvsignore file in the C directory
  202. _CVSIGNORE_C = $(if $(DOC_MODULE), C/.cvsignore)
  203. ## @ _CVSIGNORE_LC
  204. ## The .cvsignore files in other locale directories
  205. _CVSIGNORE_LC = $(if $(DOC_MODULE),$(foreach lc,$(_DOC_REAL_LINGUAS),$(lc)/.cvsignore))
  206. ## @ _CVSIGNORE_TOP_FILES
  207. ## The list of files to be listed in the top-level .cvsignore file
  208. _CVSIGNORE_TOP_FILES = $(_DOC_OMF_ALL) $(_DOC_DSK_ALL)
  209. ## @ _CVSIGNORE_C_FILES
  210. ## The list of files to be listed in the .cvsignore file in the C directory
  211. _CVSIGNORE_C_FILES = $(_RNGDOC_C_DOCS) $(_XSLDOC_C_DOCS)
  212. ## @ _CVSIGNORE_C_FILES
  213. ## The list of files to be listed in the .cvsignore files in other
  214. ## locale directories
  215. _CVSIGNORE_LC_FILES = $(_DOC_LC_DOCS)
  216. $(_CVSIGNORE_TOP) : $(_CVSIGNORE_TOP_FILES)
  217. if ! test -f $@; then touch $@; fi
  218. cat $@ > $@.tmp
  219. list='$^'; for file in $$list; do 
  220.   echo $$file >> $@.tmp; 
  221. done
  222. cat $@.tmp | sort | uniq > $@
  223. rm $@.tmp
  224. $(_CVSIGNORE_C) : $(_CVSIGNORE_C_FILES)
  225. if ! test -f $@; then touch $@; fi
  226. cat $@ > $@.tmp
  227. list='$^'; for file in $$list; do 
  228.   echo $$file | sed -e 's/.*///' >> $@.tmp; 
  229. done
  230. cat $@.tmp | sort | uniq > $@
  231. rm $@.tmp
  232. $(_CVSIGNORE_LC) : $(_CVSIGNORE_LC_FILES)
  233. if ! test -f $@; then touch $@; fi
  234. cat $@ > $@.tmp
  235. list='$(wildcard $(_CVSIGNORE_LC_FILES),$(dir $@)/*)'; 
  236. for file in $$list; do 
  237.   echo $$file | sed -e 's/.*///' >> $@.tmp; 
  238. done
  239. cat $@.tmp | sort | uniq > $@
  240. rm $@.tmp
  241. .PHONY: cvsignore
  242. cvsignore: $(_CVSIGNORE_TOP) $(_CVSIGNROE_C) $(_CVSIGNORE_LC)
  243. ################################################################################
  244. ## @@ C Locale Documents
  245. ## @ _DOC_C_MODULE
  246. ## The top-level documentation file in the C locale
  247. _DOC_C_MODULE = $(if $(DOC_MODULE),C/$(DOC_MODULE).xml)
  248. ## @ _DOC_C_ENTITIES
  249. ## Files included with a SYSTEM entity in the C locale
  250. _DOC_C_ENTITIES = $(foreach ent,$(DOC_ENTITIES),C/$(ent))
  251. ## @ _DOC_C_XINCLUDES
  252. ## Files included with XInclude in the C locale
  253. _DOC_C_INCLUDES = $(foreach inc,$(DOC_INCLUDES),C/$(inc))
  254. ## @ _DOC_C_DOCS
  255. ## All documentation files in the C locale
  256. _DOC_C_DOCS =
  257. $(_DOC_C_ENTITIES) $(_DOC_C_INCLUDES)
  258. $(_RNGDOC_C_DOCS) $(_XSLDOC_C_DOCS)
  259. $(_DOC_C_MODULE)
  260. ## @ _DOC_C_DOCS_NOENT
  261. ## All documentation files in the C locale,
  262. ## except files included with a SYSTEM entity
  263. _DOC_C_DOCS_NOENT =
  264. $(_DOC_C_MODULE) $(_DOC_C_INCLUDES)
  265. $(_RNGDOC_C_DOCS) $(_XSLDOC_C_DOCS)
  266. ## @ _DOC_C_FIGURES
  267. ## All figures and other external data in the C locale
  268. _DOC_C_FIGURES = $(if $(DOC_FIGURES),
  269. $(foreach fig,$(DOC_FIGURES),C/$(fig)),
  270. $(patsubst $(srcdir)/%,%,$(wildcard $(srcdir)/C/figures/*.png)))
  271. ## @ _DOC_C_HTML
  272. ## All HTML documentation in the C locale
  273. # FIXME: probably have to shell escape to determine the file names
  274. _DOC_C_HTML = $(foreach f,
  275. $(shell xsltproc --xinclude 
  276.   --stringparam db.chunk.basename "$(DOC_MODULE)"
  277.   $(_chunks) "C/$(DOC_MODULE).xml"),
  278. C/$(f).xhtml)
  279. ###############################################################################
  280. ## @@ Other Locale Documentation
  281. ## @ _DOC_POFILES
  282. ## The .po files used for translating the document
  283. _DOC_POFILES = $(if $(DOC_MODULE),
  284. $(foreach lc,$(_DOC_REAL_LINGUAS),$(lc)/$(lc).po))
  285. .PHONY: po
  286. po: $(_DOC_POFILES)
  287. ## @ _DOC_LC_MODULES
  288. ## The top-level documentation files in all other locales
  289. _DOC_LC_MODULES = $(if $(DOC_MODULE),
  290. $(foreach lc,$(_DOC_REAL_LINGUAS),$(lc)/$(DOC_MODULE).xml))
  291. ## @ _DOC_LC_XINCLUDES
  292. ## Files included with XInclude in all other locales
  293. _DOC_LC_INCLUDES =
  294. $(foreach lc,$(_DOC_REAL_LINGUAS),$(foreach inc,$(_DOC_C_INCLUDES),
  295. $(lc)/$(notdir $(inc)) ))
  296. ## @ _RNGDOC_LC_DOCS
  297. ## The generated rngdoc documentation in all other locales
  298. _RNGDOC_LC_DOCS =
  299. $(foreach lc,$(_DOC_REAL_LINGUAS),$(foreach doc,$(_RNGDOC_C_DOCS),
  300. $(lc)/$(notdir $(doc)) ))
  301. ## @ _XSLDOC_LC_DOCS
  302. ## The generated xsldoc documentation in all other locales
  303. _XSLDOC_LC_DOCS =
  304. $(foreach lc,$(_DOC_REAL_LINGUAS),$(foreach doc,$(_XSLDOC_C_DOCS),
  305. $(lc)/$(notdir $(doc)) ))
  306. ## @ _DOC_LC_HTML
  307. ## All HTML documentation in all other locales
  308. # FIXME: probably have to shell escape to determine the file names
  309. _DOC_LC_HTML =
  310. $(foreach lc,$(_DOC_REAL_LINGUAS),$(foreach doc,$(_DOC_C_HTML),
  311. $(lc)/$(notdir $(doc)) ))
  312. ## @ _DOC_LC_DOCS
  313. ## All documentation files in all other locales
  314. _DOC_LC_DOCS =
  315. $(_DOC_LC_MODULES) $(_DOC_LC_INCLUDES)
  316. $(_RNGDOC_LC_DOCS) $(_XSLDOC_LC_DOCS)
  317. $(if $(filter html HTML,$(_DOC_REAL_FORMATS)),$(_DOC_LC_HTML))
  318. ## @ _DOC_LC_FIGURES
  319. ## All figures and other external data in all other locales
  320. _DOC_LC_FIGURES = $(foreach lc,$(_DOC_REAL_LINGUAS),
  321. $(patsubst C/%,$(lc)/%,$(_DOC_C_FIGURES)) )
  322. _DOC_SRC_FIGURES =
  323. $(foreach fig,$(_DOC_C_FIGURES), $(foreach lc,C $(_DOC_REAL_LINGUAS),
  324. $(wildcard $(srcdir)/$(lc)/$(patsubst C/%,%,$(fig))) ))
  325. $(_DOC_POFILES):
  326. @if ! test -d $(dir $@); then 
  327.   echo "mkdir $(dir $@)"; 
  328.   mkdir "$(dir $@)"; 
  329. fi
  330. @if test ! -f $@ -a -f $(srcdir)/$@; then 
  331.   echo "cp $(srcdir)/$@ $@"; 
  332.   cp "$(srcdir)/$@" "$@"; 
  333. fi;
  334. @docs=; 
  335. list='$(_DOC_C_DOCS_NOENT)'; for doc in $$list; do 
  336.   if test -f $$doc; then 
  337.     docs="$$docs ../$$doc"; 
  338.   else 
  339.     docs="$$docs ../$(srcdir)/$$doc"; 
  340.   fi; 
  341. done; 
  342. if ! test -f $@; then 
  343.   echo "(cd $(dir $@) && 
  344.     $(_xml2po) -e $$docs > $(notdir $@).tmp && 
  345.     cp $(notdir $@).tmp $(notdir $@) && rm -f $(notdir $@).tmp)"; 
  346.   (cd $(dir $@) && 
  347.     $(_xml2po) -e $$docs > $(notdir $@).tmp && 
  348.     cp $(notdir $@).tmp $(notdir $@) && rm -f $(notdir $@).tmp); 
  349. else 
  350.   echo "(cd $(dir $@) && 
  351.     $(_xml2po) -e -u $(notdir $@) $$docs)"; 
  352.   (cd $(dir $@) && 
  353.     $(_xml2po) -e -u $(notdir $@) $$docs); 
  354. fi
  355. # FIXME: fix the dependancy
  356. # FIXME: hook xml2po up
  357. $(_DOC_LC_DOCS) : $(_DOC_POFILES)
  358. $(_DOC_LC_DOCS) : $(_DOC_C_DOCS)
  359. if ! test -d $(dir $@); then mkdir $(dir $@); fi
  360. case "$(srcdir)" in /*) sd="$(srcdir)";; *) sd="../$(srcdir)";; esac; 
  361. if [ -f "C/$(notdir $@)" ]; then d="../"; else d="$$sd/"; fi; 
  362. (cd $(dir $@) && 
  363.   $(_xml2po) -e -p 
  364.     "$${d}$(dir $@)$(patsubst %/$(notdir $@),%,$@).po" 
  365.     "$${d}C/$(notdir $@)" > $(notdir $@).tmp && 
  366.     cp $(notdir $@).tmp $(notdir $@) && rm -f $(notdir $@).tmp)
  367. ## @ _DOC_POT
  368. ## A pot file
  369. _DOC_POT = $(if $(DOC_MODULE),$(DOC_MODULE).pot)
  370. .PHONY: pot
  371. pot: $(_DOC_POT)
  372. $(_DOC_POT): $(_DOC_C_DOCS_NOENT)
  373. $(_xml2po) -e -o $@ $^
  374. ################################################################################
  375. ## @@ All Documentation
  376. ## @ _DOC_HTML_ALL
  377. ## All HTML documentation, only if it's built
  378. _DOC_HTML_ALL = $(if $(filter html HTML,$(_DOC_REAL_FORMATS)), 
  379. $(_DOC_C_HTML) $(_DOC_LC_HTML))
  380. _DOC_HTML_TOPS = $(foreach lc,C $(_DOC_REAL_LINGUAS),$(lc)/$(DOC_MODULE).xhtml)
  381. $(_DOC_HTML_TOPS): $(_DOC_C_DOCS) $(_DOC_LC_DOCS)
  382. xsltproc -o $@ --xinclude --param db.chunk.chunk_top "false()" --stringparam db.chunk.basename "$(DOC_MODULE)" --stringparam db.chunk.extension ".xhtml" $(_db2html) $(patsubst %.xhtml,%.xml,$@)
  383. ################################################################################
  384. if ENABLE_SK
  385. _ENABLE_SK = true
  386. else
  387. _ENABLE_SK = false
  388. endif
  389. all:
  390. $(_DOC_C_DOCS) $(_DOC_LC_DOCS)
  391. $(_DOC_OMF_ALL) $(_DOC_DSK_ALL)
  392. $(_DOC_HTML_ALL) $(_DOC_POFILES)
  393. .PHONY: clean-doc-rngdoc clean-doc-xsldoc clean-doc-omf clean-doc-dsk clean-doc-lc clean-doc-dir
  394. clean-doc-rngdoc: ; rm -f $(_RNGDOC_C_DOCS) $(_RNGDOC_LC_DOCS)
  395. clean-doc-xsldoc: ; rm -f $(_XSLDOC_C_DOCS) $(_XSLDOC_LC_DOCS)
  396. clean-doc-omf: ; rm -f $(_DOC_OMF_DB) $(_DOC_OMF_HTML)
  397. clean-doc-dsk: ; rm -f $(_DOC_DSK_DB) $(_DOC_DSK_HTML)
  398. clean-doc-lc:
  399. rm -f $(_DOC_LC_DOCS)
  400. @list='$(_DOC_POFILES)'; for po in $$list; do 
  401.   if ! test "$$po" -ef "$(srcdir)/$$po"; then 
  402.     echo "rm -f $$po"; 
  403.     rm -f "$$po"; 
  404.   fi; 
  405. done
  406. @for lc in C $(_DOC_REAL_LINGUAS); do 
  407.   if test -f "$$lc/.xml2po.mo"; then 
  408.     echo "rm -f $$lc/.xml2po.mo"; 
  409.     rm -f "$$lc/.xml2po.mo"; 
  410.   fi; 
  411. done
  412. clean-doc-dir:
  413. @for lc in C $(_DOC_REAL_LINGUAS); do 
  414.   for dir in `find $$lc -depth -type d`; do 
  415.     if ! test $$dir -ef $(srcdir)/$$dir; then 
  416.       echo "rmdir $$dir"; 
  417.       rmdir "$$dir"; 
  418.    fi; 
  419.   done; 
  420. done
  421. _clean_rngdoc = $(if $(RNGDOC_DIRS),clean-doc-rngdoc)
  422. _clean_xsldoc = $(if $(XSLDOC_DIRS),clean-doc-xsldoc)
  423. _clean_omf = $(if $(_DOC_OMF_IN),clean-doc-omf)
  424. _clean_dsk = $(if $(_DOC_DSK_IN),clean-doc-dsk)
  425. _clean_lc  = $(if $(_DOC_REAL_LINGUAS),clean-doc-lc)
  426. _clean_dir = $(if $(DOC_MODULE),clean-doc-dir)
  427. clean-local:
  428. $(_clean_rngdoc) $(_clean_xsldoc)
  429. $(_clean_omf) $(_clean_dsk)
  430. $(_clean_lc) $(_clean_dir)
  431. distclean-local:
  432. $(_clean_rngdoc) $(_clean_xsldoc)
  433. $(_clean_omf) $(_clean_dsk)
  434. $(_clean_lc) $(_clean_dir)
  435. mostlyclean-local:
  436. $(_clean_rngdoc) $(_clean_xsldoc)
  437. $(_clean_omf) $(_clean_dsk)
  438. $(_clean_lc) $(_clean_dir)
  439. maintainer-clean-local:
  440. $(_clean_rngdoc) $(_clean_xsldoc)
  441. $(_clean_omf) $(_clean_dsk)
  442. $(_clean_lc) $(_clean_dir)
  443. .PHONY: dist-doc-docs dist-doc-figs dist-doc-omf dist-doc-dsk
  444. doc-dist-hook: 
  445. $(if $(DOC_MODULE),dist-doc-docs)
  446. $(if $(_DOC_C_FIGURES),dist-doc-figs)
  447. $(if $(_DOC_OMF_IN),dist-doc-omf)
  448. # $(if $(_DOC_DSK_IN),dist-doc-dsk)
  449. dist-doc-docs: $(_DOC_C_DOCS) $(_DOC_LC_DOCS) $(_DOC_POFILES)
  450. @for lc in C $(_DOC_REAL_LINGUAS); do 
  451.   echo " $(mkinstalldirs) $(distdir)/$$lc"; 
  452.   $(mkinstalldirs) "$(distdir)/$$lc"; 
  453. done
  454. @list='$(_DOC_C_DOCS) $(_DOC_LC_DOCS) $(_DOC_POFILES)'; 
  455. for doc in $$list; do 
  456.   if test -f "$$doc"; then d=; else d="$(srcdir)/"; fi; 
  457.   echo "$(INSTALL_DATA) $$d$$doc $(distdir)/$$doc"; 
  458.   $(INSTALL_DATA) "$$d$$doc" "$(distdir)/$$doc"; 
  459. done
  460. dist-doc-figs: $(_DOC_SRC_FIGURES)
  461. @list='$(_DOC_C_FIGURES) $(_DOC_LC_FIGURES)'; 
  462. for fig in $$list; do 
  463.   if test -f "$$fig"; then d=; else d="$(srcdir)/"; fi; 
  464.   if test -f "$$d$$fig"; then 
  465.     figdir=`echo $$fig | sed -e 's/^(.*/).*/1/' -e '///!s/.*//'`; 
  466.     if ! test -d "$(distdir)/$$figdir"; then 
  467.       echo "$(mkinstalldirs) $(distdir)/$$figdir"; 
  468.       $(mkinstalldirs) "$(distdir)/$$figdir"; 
  469.     fi; 
  470.     echo "$(INSTALL_DATA) $$d$$fig $(distdir)/$$fig"; 
  471.     $(INSTALL_DATA) "$$d$$fig" "$(distdir)/$$fig"; 
  472.   fi; 
  473. done;
  474. dist-doc-omf:
  475. @if test -f "$(_DOC_OMF_IN)"; then d=; else d="$(srcdir)/"; fi; 
  476. echo "$(INSTALL_DATA) $$d$(_DOC_OMF_IN) $(distdir)/$(notdir $(_DOC_OMF_IN))"; 
  477. $(INSTALL_DATA) "$$d$(_DOC_OMF_IN)" "$(distdir)/$(notdir $(_DOC_OMF_IN))"
  478. dist-doc-dsk:
  479. @if test -f "$(_DOC_DSK_IN)"; then d=; else d="$(srcdir)/"; fi; 
  480. echo "$(INSTALL_DATA) $$d$(_DOC_DSK_IN) $(distdir)/$(notdir $(_DOC_DSK_IN))"; 
  481. $(INSTALL_DATA) "$$d$(_DOC_DSK_IN)" "$(distdir)/$(notdir $(_DOC_DSK_IN))"
  482. .PHONY: check-doc-docs check-doc-omf
  483. check:
  484. $(if $(DOC_MODULE),check-doc-docs)
  485. $(if $(_DOC_OMF_IN),check-doc-omf)
  486. check-doc-docs: $(_DOC_C_DOCS) $(_DOC_LC_DOCS)
  487. @for lc in C $(_DOC_REAL_LINGUAS); do 
  488.   if test -f "$$lc"; 
  489.     then d=; 
  490.     xmlpath="$$lc"; 
  491.   else 
  492.     d="$(srcdir)/"; 
  493.     xmlpath="$$lc:$(srcdir)/$$lc"; 
  494.   fi; 
  495.   echo "xmllint --noout --noent --path $$xmlpath --xinclude --postvalid $$d$$lc/$(DOC_MODULE).xml"; 
  496.   xmllint --noout --noent --path "$$xmlpath" --xinclude --postvalid "$$d$$lc/$(DOC_MODULE).xml"; 
  497. done
  498. check-doc-omf: $(_DOC_OMF_ALL)
  499. @list='$(_DOC_OMF_ALL)'; for omf in $$list; do 
  500.   echo "xmllint --noout --dtdvalid 'http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd' $$omf"; 
  501.   xmllint --noout --dtdvalid 'http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd' $$omf; 
  502. done
  503. .PHONY: install-doc-docs install-doc-html install-doc-figs install-doc-omf install-doc-dsk
  504. install-data-local:
  505. $(if $(DOC_MODULE),install-doc-docs)
  506. $(if $(_DOC_HTML_ALL),install-doc-html)
  507. $(if $(_DOC_C_FIGURES),install-doc-figs)
  508. $(if $(_DOC_OMF_IN),install-doc-omf)
  509. # $(if $(_DOC_DSK_IN),install-doc-dsk)
  510. install-doc-docs:
  511. @for lc in C $(_DOC_REAL_LINGUAS); do 
  512.   echo "$(mkinstalldirs) $(DESTDIR)$(HELP_DIR)/$(DOC_MODULE)/$$lc"; 
  513.   $(mkinstalldirs) $(DESTDIR)$(HELP_DIR)/$(DOC_MODULE)/$$lc; 
  514. done
  515. @list='$(_DOC_C_DOCS) $(_DOC_LC_DOCS)'; for doc in $$list; do 
  516.   if test -f "$$doc"; then d=; else d="$(srcdir)/"; fi; 
  517.   echo "$(INSTALL_DATA) $$d$$doc $(DESTDIR)$(HELP_DIR)/$(DOC_MODULE)/$$doc"; 
  518.   $(INSTALL_DATA) $$d$$doc $(DESTDIR)$(HELP_DIR)/$(DOC_MODULE)/$$doc; 
  519. done
  520. install-doc-figs:
  521. @list='$(patsubst C/%,%,$(_DOC_C_FIGURES))'; for fig in $$list; do 
  522.   for lc in C $(_DOC_REAL_LINGUAS); do 
  523.     if test -f "$$lc/$$fig"; then 
  524.       figfile="$$lc/$$fig"; 
  525.     elif test -f "$(srcdir)/$$lc/$$fig"; then 
  526.       figfile="$(srcdir)/$$lc/$$fig"; 
  527.     elif test -f "C/$$fig"; then 
  528.       figfile="C/$$fig"; 
  529.     else 
  530.       figfile="$(srcdir)/C/$$fig"; 
  531.     fi; 
  532.     figdir="$$lc/"`echo $$fig | sed -e 's/^(.*/).*/1/' -e '///!s/.*//'`; 
  533.     figdir="$(DESTDIR)$(HELP_DIR)/$(DOC_MODULE)/$$figdir"; 
  534.     if ! test -d "$$figdir"; then 
  535.       echo "$(mkinstalldirs) $$figdir"; 
  536.       $(mkinstalldirs) "$$figdir"; 
  537.     fi; 
  538.     figbase=`echo $$fig | sed -e 's/^.*///'`; 
  539.     echo "$(INSTALL_DATA) $$figfile $$figdir$$figbase"; 
  540.     $(INSTALL_DATA) "$$figfile" "$$figdir$$figbase"; 
  541.   done; 
  542. done
  543. install-doc-html:
  544. echo install-html
  545. install-doc-omf:
  546. $(mkinstalldirs) $(DESTDIR)$(OMF_DIR)/$(DOC_MODULE)
  547. @list='$(_DOC_OMF_ALL)'; for omf in $$list; do 
  548.   echo "$(INSTALL_DATA) $$omf $(DESTDIR)$(OMF_DIR)/$(DOC_MODULE)/$$omf"; 
  549.   $(INSTALL_DATA) $$omf $(DESTDIR)$(OMF_DIR)/$(DOC_MODULE)/$$omf; 
  550. done
  551. @if test "x$(_ENABLE_SK)" = "xtrue"; then 
  552.   echo "scrollkeeper-update -p $(DESTDIR)$(_sklocalstatedir) -o $(DESTDIR)$(OMF_DIR)/$(DOC_MODULE)"; 
  553.   scrollkeeper-update -p "$(DESTDIR)$(_sklocalstatedir)" -o "$(DESTDIR)$(OMF_DIR)/$(DOC_MODULE)"; 
  554. fi;
  555. install-doc-dsk:
  556. echo install-dsk
  557. .PHONY: uninstall-doc-docs uninstall-doc-html uninstall-doc-figs uninstall-doc-omf uninstall-doc-dsk
  558. uninstall-local:
  559. $(if $(DOC_MODULE),uninstall-doc-docs)
  560. $(if $(_DOC_HTML_ALL),uninstall-doc-html)
  561. $(if $(_DOC_C_FIGURES),uninstall-doc-figs)
  562. $(if $(_DOC_OMF_IN),uninstall-doc-omf)
  563. # $(if $(_DOC_DSK_IN),uninstall-doc-dsk)
  564. uninstall-doc-docs:
  565. @list='$(_DOC_C_DOCS) $(_DOC_LC_DOCS)'; for doc in $$list; do 
  566.   echo " rm -f $(DESTDIR)$(HELP_DIR)/$(DOC_MODULE)/$$doc"; 
  567.   rm -f "$(DESTDIR)$(HELP_DIR)/$(DOC_MODULE)/$$doc"; 
  568. done
  569. uninstall-doc-figs:
  570. @list='$(_DOC_C_FIGURES) $(_DOC_LC_FIGURES)'; for fig in $$list; do 
  571.   echo "rm -f $(DESTDIR)$(HELP_DIR)/$(DOC_MODULE)/$$fig"; 
  572.   rm -f "$(DESTDIR)$(HELP_DIR)/$(DOC_MODULE)/$$fig"; 
  573. done;
  574. uninstall-doc-omf:
  575. @list='$(_DOC_OMF_ALL)'; for omf in $$list; do 
  576.   if test "x$(_ENABLE_SK)" == "xtrue"; then 
  577.     echo "scrollkeeper-uninstall -p $(_sklocalstatedir) $(DESTDIR)$(OMF_DIR)/$(DOC_MODULE)/$$omf"; 
  578.     scrollkeeper-uninstall -p "$(_sklocalstatedir)" "$(DESTDIR)$(OMF_DIR)/$(DOC_MODULE)/$$omf"; 
  579.   fi; 
  580.   echo "rm -f $(DESTDIR)$(OMF_DIR)/$(DOC_MODULE)/$$omf"; 
  581.   rm -f "$(DESTDIR)$(OMF_DIR)/$(DOC_MODULE)/$$omf"; 
  582. done