3 ########################
4 # Documentation build #
5 ########################
11 LANGS
= $(shell $(PYTHON
) $(top-src-dir
)/python
/langdefs.py
)
12 MANUALS_SUBDIRS
= usage contributor essay \
13 web learning notation extending
14 SUBDIRS
= $(MANUALS_SUBDIRS
) snippets logo pictures misc po css topdocs \
16 STEPMAKE_TEMPLATES
= documentation texinfo
tex omf
17 LOCALSTEPMAKE_TEMPLATES
= lilypond ly
21 LILYPOND_BOOK_FLAGS
= --extra-options
'-e "(ly:set-option (quote internal-type-checking) \#t)"'
24 -I
$(top-build-dir
)/Documentation
/$(outconfbase
)
25 $(outdir
)/snippets-big-page.html
: TEXI2HTML_FLAGS
+= -D short_toc
26 $(outdir
)/snippets
/index..html
: TEXI2HTML_FLAGS
+= -D short_toc
28 ### Extra source files
30 README_TOP_FILES
= DEDICATION THANKS
32 IN_ITELY_FILES
= $(call src-wildcard
,snippets
/*-intro.itely
)
33 SNIPPET_LY_FILES
= $(call src-wildcard
,snippets
/*.ly
)
35 EXTRA_DIST_FILES
= $(call src-wildcard
,*.init
)
40 GENERATED_ITELY_FILES
= $(IN_ITELY_FILES
:snippets
/%-intro.itely
=$(outdir
)/%.itely
)
42 XREF_MAPS_FILES
+= $(XREF_MAPS_DIR
)/internals.xref-map
43 OMF_FILES
+= $(outdir
)/internals.html.omf
$(outdir
)/internals.pdf.omf
46 TEXINFO_MANUALS
= internals\
47 $(TELY_FILES
:%.tely
=%)\
48 $(TEXI_FILES
:%.texi
=%)
49 OUT_TEXINFO_MANUALS
= $(TEXINFO_MANUALS
:%=$(outdir
)/%.texi
)
51 ## CHAIN_RULE hack: keep the following line *before* including
52 # stepmake.make, so the Internals Reference is built before the
53 # Notation Reference, thus providing automatically generated sections
55 TEXI_FILES_FROM_TELY
= $(outdir
)/internals.texi
57 PDF_FILES
= $(TEXINFO_MANUALS
:%=$(outdir
)/%.pdf
)
60 UNSPLITTED_HTML_MANUALS
=
61 SPLITTED_HTML_MANUALS
= $(foreach manual
, $(TEXINFO_MANUALS
),\
62 $(if
$(findstring $(manual
), $(UNSPLITTED_HTML_MANUALS
)),,$(manual
)))
63 NOT_TOPDIR_HTML_MANUALS
= $(foreach manual
, $(SPLITTED_HTML_MANUALS
),\
64 $(if
$(findstring $(manual
), $(TOPDIR_HTML_MANUALS
)),,$(manual
)))
66 OUT_HTML_FILES
= $(UNSPLITTED_HTML_MANUALS
:%=$(outdir
)/%.html
)\
67 $(SPLITTED_HTML_MANUALS
:%=$(outdir
)/%-big-page.html
)
68 DEEP_HTML_FILES
= $(NOT_TOPDIR_HTML_MANUALS
:%=$(outdir
)/%/index.html
)
70 # Symlinks to refer to external source documents from split and non-split HTML
71 source-links
= $(outdir
)/source\
72 $(foreach manual
, $(SPLITTED_HTML_MANUALS
), $(outdir
)/$(manual
)/source
)
76 MAIN_INFO_DOC
= lilypond-web
77 INFO_DOCS
= lilypond-usage lilypond-changes lilypond-contributor lilypond-internals \
78 lilypond-essay lilypond-learning lilypond-notation music-glossary \
79 lilypond-web lilypond-extending
81 INFO_DOCS
+= lilypond-snippets
83 INFO_FILES
= $(INFO_DOCS
:%=$(outdir
)/%.
info)
86 INFO_IMAGES_DIR
= lilypond
87 DEST_INFO_IMAGES_SUBDIR
= Documentation
/
90 include $(depth
)/make
/stepmake.make
92 OUT_TXT_FILES
= $(addprefix $(outdir
)/, $(addsuffix .txt
, $(README_TOP_FILES
)))
95 ### Web site idiosyncrasies
96 $(XREF_MAPS_DIR
)/web.xref-map
: XREF_MAP_FLAGS
+= --split
=node
99 JS_FILES
= $(call src-wildcard
,*.js
)
100 PHP_FILES
= $(call src-wildcard
,*.php
)
101 EXTRA_DIST_FILES
+= $(JS_FILES
) $(PHP_FILES
)
103 OUT_JS_FILES
= $(JS_FILES
:%.js
=$(outdir
)/%.js
)
104 OUT_PHP_FILES
= $(PHP_FILES
:%.php
=$(outdir
)/%.php
)
108 ### bad hack for badly-integrated roadmap.
110 cp
$(top-src-dir
)/ROADMAP
$(outdir
)
111 $(outdir
)/contributor.texi
: $(outdir
)/ROADMAP
113 ### bad hack for badly-integrated bibliography
114 $(outdir
)/colorado.itexi
:
115 BSTINPUTS
=$(src-dir
)/essay
$(buildscript-dir
)/bib2texi \
116 -o
$(outdir
)/colorado.itexi \
117 $(src-dir
)/essay
/colorado.bib
119 $(outdir
)/computer-notation.itexi
:
120 BSTINPUTS
=$(src-dir
)/essay
$(buildscript-dir
)/bib2texi \
121 -o
$(outdir
)/computer-notation.itexi \
122 $(src-dir
)/essay
/computer-notation.bib
124 $(outdir
)/engravingbib.itexi
:
125 BSTINPUTS
=$(src-dir
)/essay
$(buildscript-dir
)/bib2texi \
126 -o
$(outdir
)/engravingbib.itexi \
127 $(src-dir
)/essay
/engravingbib.bib
129 $(outdir
)/essay.texi
: \
130 $(outdir
)/colorado.itexi \
131 $(outdir
)/computer-notation.itexi \
132 $(outdir
)/engravingbib.itexi
134 $(outdir
)/others-did.itexi
:
135 BSTINPUTS
=$(src-dir
)/web
/ $(buildscript-dir
)/bib2texi \
137 -o
$(outdir
)/others-did.itexi \
138 $(src-dir
)/web
/others-did.bib
140 $(outdir
)/we-wrote.itexi
:
141 BSTINPUTS
=$(src-dir
)/web
/ $(buildscript-dir
)/bib2texi \
143 -o
$(outdir
)/we-wrote.itexi \
144 $(src-dir
)/web
/we-wrote.bib
150 default
: local-txt-doc
152 local-help
: extra-local-help
155 @echo
" check-xrefs [ISOLANG=LL] validate Texinfo cross-references"
156 @echo
" fix-xrefs [ISOLANG=LL] interactively fix Texinfo cross-references"
157 @echo
" (use with caution)"
158 @echo
" info update info pages"
159 @echo
" xml update Docbook xml documentation"
161 @echo
"Translations specific targets (see TRANSLATION for details):"
162 @echo
" new-lang ISOLANG=LL create and initialize"
163 @echo
" subdirectory \'LL' for language \'LL"
164 @echo
" (if \'LL exists, update missing file)"
165 @echo
" po-update update and replace PO files for"
166 @echo
" documentation with msgmerged versions"
167 @echo
" check-translation ISOLANG=LL show changes in English docs since"
168 @echo
" last translation update"
169 @echo
" update-translation ISOLANG=LL call $$$$EDITOR to help updating"
170 @echo
" the translation"
171 @echo
" snippet-update ISOLANG=LL update ly snippets in Texinfo translation"
172 @echo
" according to docs in English"
173 @echo
" (use with caution)"
175 @echo
" LL refers to the desired locale"
176 @echo
" (most often only the ISO 639 language code)."
180 @echo
export LILYPOND_DATADIR
=$(LILYPOND_DATADIR
)
181 @echo
export PYTHONPATH
=$(PYTHONPATH
)
183 xml
: $(outdir
)/notation
/notation.xml
$(outdir
)/internals
/internals.xml
187 rm -f
$(INFO_IMAGES_DIR
)
192 local-WWW-1
: $(OUT_TEXINFO_MANUALS
) $(PDF_FILES
) info
194 ifeq ($(AJAX_SEARCH
),1)
195 local-WWW-2
: txt-to-html
$(OUT_HTML_FILES
) $(DEEP_HTML_FILES
) $(OUT_JS_FILES
) $(OUT_PHP_FILES
) $(source-links
) $(OMF_FILES
)
197 local-WWW-2
: txt-to-html
$(OUT_HTML_FILES
) $(DEEP_HTML_FILES
) $(source-links
) $(OMF_FILES
)
206 $(outdir
)/lilypond-
%.
info: $(outdir
)/%.texi
$(outdir
)/$(INFO_IMAGES_DIR
).info-images-dir-dep
$(outdir
)/version.itexi
$(outdir
)/weblinks.itexi
207 $(MAKEINFO
) -I
$(src-dir
) -I
$(outdir
) --output
=$@
$<
209 # cd $(outdir) rule gets bit hairy for --srcdir configure builds
211 $(foreach a
, $(README_TOP_FILES
), cp
$(top-src-dir
)/$(a
) $(outdir
)/$(a
).txt
&& ) true
212 $(PYTHON
) $(step-bindir
)/text2html.py
$(OUT_TXT_FILES
)
215 ## Extra images dependencies
216 $(OUT_TEXINFO_MANUALS
): $(outdir
)/pictures
219 $(MAKE
) -C pictures WWW-1
220 ln
-sf ..
/pictures
/$(outdir
) $@
222 $(outdir
)/ly-examples
:
223 $(MAKE
) -C web
/ly-examples
224 ln
-sf ..
/web
/ly-examples
/$(outdir
) $@
228 $(outdir
)/web.texi
: $(outdir
)/ly-examples
$(outdir
)/we-wrote.itexi
$(outdir
)/others-did.itexi
230 # duplicate (without ly-examples)
231 $(outdir
)/web.texi
: $(outdir
)/we-wrote.itexi
$(outdir
)/others-did.itexi
235 # Ugh, using '%' twice not possible
236 $(outdir
)/notation
/notation.xml
: $(outdir
)/notation.texi
238 $(MAKEINFO
) -I
$(src-dir
) -I
$(outdir
) --output
=$(dir $@
) --docbook
$<
240 $(outdir
)/internals
/internals.xml
: $(outdir
)/internals.texi
242 $(MAKEINFO
) -I
$(src-dir
) -I
$(outdir
) --output
=$(dir $@
) --docbook
$<
244 $(outdir
)/learning.texi
$(outdir
)/notation.texi
: $(OUT_PDF_IMAGES
)
246 $(foreach manual
, $(MANUAL_SUBDIRS
),\
247 $(eval
$(outdir
)/(manual
).texi
: $(call src-wildcard
,$(manual
)/*.ite??
)))
258 ln
-sf
$(depth
)/..
$(@
)
261 ## Snippets rules idiosyncrasies
262 $(outdir
)/%.itely
: snippets
/%-intro.itely snippets
/%.snippet-list
263 xargs
$(LYS_TO_TELY
) -f doctitle
,texidoc
,verbatim
--name
=$@
--template
=$< < $(filter %.snippet-list
, $^
)
265 $(outdir
)/snippets.texi
: $(GENERATED_ITELY_FILES
) $(SNIPPET_LY_FILES
)
267 $(outdir
)/%.bib
: %.bib
273 $(outdir
)/%.php
: %.php
276 ## notation.texi deps
277 $(top-build-dir
)/mf
/$(outconfbase
)/feta16list.ly
:
278 $(MAKE
) -C
$(top-src-dir
)/mf
280 $(outdir
)/notation.texi
: $(outdir
)/ly-grammar.txt
282 ## Rules for the automatically generated documentation
283 $(outdir
)/ly-grammar.txt
: $(top-src-dir
)/lily
/parser.yy
284 cd
$(outdir
) && $(BISON
) -v
$<
285 $(buildscript-dir
)/yyout2grammar
$(outdir
)/parser.output
$@
287 # There used to be a dependency on a dummy target, to force a rebuild
288 # of internals every time. however, this triggers
289 # compilation during install, which is a bad thing (tm).
291 $(outdir
)/internals.texi
: $(LILYPOND_BINARY
)
292 cd
$(outdir
) && $(LILYPOND_BINARY
) --verbose
$(top-src-dir
)/ly
/generate-documentation
295 ###############################################
296 # Documentation and translations maintenance #
297 ###############################################
301 all-translations-update
: po-update translation-status
302 $(foreach lang
, $(LANGS
), make ISOLANG
=$(lang
) skeleton-update snippet-update
&&) true
305 CHECK_TRANSLATION_FLAGS
= --no-color
310 mkdir
-p
$(ISOLANG
)/$(DIR
)
311 cp fr
/GNUmakefile
$(ISOLANG
)
312 cp fr
/$(DIR
)/GNUmakefile
$(ISOLANG
)/$(DIR
)
313 sed
-i
-e
's/ISOLANG *= *fr/ISOLANG = $(ISOLANG)/' $(ISOLANG
)/GNUmakefile
$(ISOLANG
)/$(DIR
)/GNUmakefile
314 rm -f
$(outdir
)/*.
*tely
$(outdir
)/*.
*texi
315 $(PYTHON
) $(auxscript-dir
)/texi-langutils.py
-d
$(outdir
) -l
$(ISOLANG
) -o doc.pot
--skeleton
--gettext
$$(cd
$(ISOLANG
) && ls
-1 ..
/$(DIR
).tely ..
/$(DIR
).texi
)
316 for i in
$$(cd
$(outdir
) && ls
-1 $(DIR
).tely
$(DIR
).texi
); do\
317 test -e
$(ISOLANG
)/$$i || mv
$(outdir
)/$$i $(ISOLANG
)/$$i;\
319 rm -f
$(outdir
)/$(DIR
).tely
$(outdir
)/$(DIR
).texi
320 for i in
$$(cd
$(outdir
) && ls
-1 *.
*tely
*.
*texi
); do\
321 test -e
$(ISOLANG
)/$(DIR
)/$$i\
322 ||
test -e
$(ISOLANG
)/$$i\
323 || mv
$(outdir
)/$$i $(ISOLANG
)/$(DIR
)/$$i;\
327 # Also for updating/adding missing files
329 $(foreach i
,$(TRANSLATION_DIRS
),$(MAKE
) new-lang-dir DIR
=$(i
) &&) :
330 msgmerge
-U po
/lilypond-doc.pot
$(outdir
)/doc.pot
331 test -e po
/$(ISOLANG
).po || cp po
/lilypond-doc.pot po
/$(ISOLANG
).po
332 @echo
"*** Please add a language definition for $(ISOLANG) in python/langdefs.py ***"
334 TRANSLATION_DIRS
= web texidocs
335 TRANSLATION_FILES
= $(shell git ls-files
$(ISOLANG
) | grep
-v GNUmakefile
)
336 TEXI_LANGUTIL_FLAGS
+= --skeleton
338 TELY_FILES
= $(call src-wildcard
,$(ISOLANG
)/*.tely
)
340 @echo
"$@ has been discontinued"
341 @echo
"simply copy .texi, .itexi files you want to translate"
344 $(PYTHON
) $(auxscript-dir
)/texi-langutils.py
-d
$(outdir
) -l
$(ISOLANG
) $(TEXI_LANGUTIL_FLAGS
) $(TELY_FILES
:$(ISOLANG
)/%.tely
=..
/%.tely
)
345 $(PYTHON
) $(auxscript-dir
)/texi-skeleton-update.py
$(ISOLANG
) $(outdir
)
348 $(PYTHON
) $(auxscript-dir
)/update-snippets.py user
$(ISOLANG
) '*.itely'
350 DOCUMENTS_INCLUDES
:=-I
$(ISOLANG
) \
351 -I
$(top-build-dir
)/Documentation
/$(ISOLANG
)/out-www \
352 -I
$(top-src-dir
)/Documentation
/snippets \
353 -I
$(top-build-dir
)/Documentation
/out-www \
354 -I
$(top-build-dir
)/Documentation
/out
356 else # ISOLANG is empty
358 DOCUMENTS_INCLUDES
:=-I . \
359 -I
$(top-build-dir
)/Documentation
/out-www \
360 -I
$(top-src-dir
)/Documentation
/snippets \
361 -I
$(top-build-dir
)/Documentation
/snippets
/out-www \
362 -I
$(top-build-dir
)/Documentation
/out
367 $(PYTHON
) $(auxscript-dir
)/check_texi_refs.py
--batch \
368 $(DOCUMENTS_INCLUDES
) $(auxpython-dir
)/manuals_definitions.py
371 $(PYTHON
) $(auxscript-dir
)/check_texi_refs.py
--auto-fix \
372 $(DOCUMENTS_INCLUDES
) $(auxpython-dir
)/manuals_definitions.py
375 ISOLANG
=$(ISOLANG
) $(PYTHON
) $(auxscript-dir
)/check_translation.py
$(CHECK_TRANSLATION_FLAGS
) $(TRANSLATION_FILES
)
378 ISOLANG
=$(ISOLANG
) $(PYTHON
) $(auxscript-dir
)/check_translation.py
--update
$(CHECK_TRANSLATION_FLAGS
) $(TRANSLATION_FILES
)
380 # what's it gonna be, boy...tranlationS-/translation-
382 PYTHONPATH
=$(top-src-dir
)/python
:$(top-src-dir
)/python
/auxiliar
$(PYTHON
) $(top-src-dir
)/scripts
/auxiliar
/translations-status.py