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 idiosyncrases
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
)/engravingbib.itexi
:
115 BSTINPUTS
=$(src-dir
)/essay
$(buildscript-dir
)/bib2html \
116 -o
$(outdir
)/colorado.html \
117 $(src-dir
)/essay
/colorado.bib
118 $(buildscript-dir
)/html-to-texi \
119 < $(outdir
)/colorado.html
> $(outdir
)/colorado.itexi
120 BSTINPUTS
=$(src-dir
)/essay
$(buildscript-dir
)/bib2html \
121 -o
$(outdir
)/computer-notation.html \
122 $(src-dir
)/essay
/computer-notation.bib
123 $(buildscript-dir
)/html-to-texi \
124 < $(outdir
)/computer-notation.html
> $(outdir
)/computer-notation.itexi
125 BSTINPUTS
=$(src-dir
)/essay
$(buildscript-dir
)/bib2html \
126 -o
$(outdir
)/engravingbib.html \
127 $(src-dir
)/essay
/engravingbib.bib
128 $(buildscript-dir
)/html-to-texi \
129 < $(outdir
)/engravingbib.html
> $(outdir
)/engravingbib.itexi
131 $(outdir
)/essay.texi
: $(outdir
)/engravingbib.itexi
137 default
: local-txt-doc
139 local-help
: extra-local-help
142 @echo
" check-xrefs [ISOLANG=LL] validate Texinfo cross-references"
143 @echo
" fix-xrefs [ISOLANG=LL] interactively fix Texinfo cross-references"
144 @echo
" (use with caution)"
145 @echo
" info update info pages"
146 @echo
" xml update Docbook xml documentation"
148 @echo
"Translations specific targets (see TRANSLATION for details):"
149 @echo
" new-lang ISOLANG=LL create and initialize"
150 @echo
" subdirectory \'LL' for language \'LL"
151 @echo
" (if \'LL exists, update missing file)"
152 @echo
" po-update update and replace PO files for"
153 @echo
" documentation with msgmerged versions"
154 @echo
" check-translation ISOLANG=LL show changes in English docs since"
155 @echo
" last translation update"
156 @echo
" update-translation ISOLANG=LL call $$$$EDITOR to help updating"
157 @echo
" the translation"
158 @echo
" snippet-update ISOLANG=LL update ly snippets in Texinfo translation"
159 @echo
" according to docs in English"
160 @echo
" (use with caution)"
162 @echo
" LL refers to the desired locale"
163 @echo
" (most often only the ISO 639 language code)."
167 @echo
export LILYPOND_DATADIR
=$(LILYPOND_DATADIR
)
168 @echo
export PYTHONPATH
=$(PYTHONPATH
)
170 xml
: $(outdir
)/notation
/notation.xml
$(outdir
)/internals
/internals.xml
174 rm -f
$(INFO_IMAGES_DIR
)
179 local-WWW-1
: $(OUT_TEXINFO_MANUALS
) $(PDF_FILES
) info
181 ifeq ($(AJAX_SEARCH
),1)
182 local-WWW-2
: txt-to-html
$(OUT_HTML_FILES
) $(DEEP_HTML_FILES
) $(OUT_JS_FILES
) $(OUT_PHP_FILES
) $(source-links
) $(OMF_FILES
)
184 local-WWW-2
: txt-to-html
$(OUT_HTML_FILES
) $(DEEP_HTML_FILES
) $(source-links
) $(OMF_FILES
)
193 $(outdir
)/lilypond-
%.
info: $(outdir
)/%.texi
$(outdir
)/$(INFO_IMAGES_DIR
).info-images-dir-dep
$(outdir
)/version.itexi
$(outdir
)/weblinks.itexi
194 $(MAKEINFO
) -I
$(src-dir
) -I
$(outdir
) --output
=$@
$<
196 # cd $(outdir) rule gets bit hairy for --srcdir configure builds
198 $(foreach a
, $(README_TOP_FILES
), cp
$(top-src-dir
)/$(a
) $(outdir
)/$(a
).txt
&& ) true
199 $(PYTHON
) $(step-bindir
)/text2html.py
$(OUT_TXT_FILES
)
202 ## Extra images dependencies
203 $(OUT_TEXINFO_MANUALS
): $(outdir
)/pictures
206 $(MAKE
) -C pictures WWW-1
207 ln
-sf ..
/pictures
/$(outdir
) $@
209 $(outdir
)/web.texi
: $(outdir
)/ly-examples
211 $(outdir
)/ly-examples
:
212 $(MAKE
) -C web
/ly-examples
213 ln
-sf ..
/web
/ly-examples
/$(outdir
) $@
216 # Ugh, using '%' twice not possible
217 $(outdir
)/notation
/notation.xml
: $(outdir
)/notation.texi
219 $(MAKEINFO
) -I
$(src-dir
) -I
$(outdir
) --output
=$(dir $@
) --docbook
$<
221 $(outdir
)/internals
/internals.xml
: $(outdir
)/internals.texi
223 $(MAKEINFO
) -I
$(src-dir
) -I
$(outdir
) --output
=$(dir $@
) --docbook
$<
225 $(outdir
)/learning.texi
$(outdir
)/notation.texi
: $(OUT_PDF_IMAGES
)
227 $(foreach manual
, $(MANUAL_SUBDIRS
),\
228 $(eval
$(outdir
)/(manual
).texi
: $(call src-wildcard
,$(manual
)/*.ite??
)))
239 ln
-sf
$(depth
)/..
$(@
)
242 ## Snippets rules idiosyncrases
243 $(outdir
)/%.itely
: snippets
/%-intro.itely snippets
/%.snippet-list
244 xargs
$(LYS_TO_TELY
) -f doctitle
,texidoc
,verbatim
--name
=$@
--template
=$< < $(filter %.snippet-list
, $^
)
246 $(outdir
)/snippets.texi
: $(GENERATED_ITELY_FILES
) $(SNIPPET_LY_FILES
)
248 $(outdir
)/%.bib
: %.bib
254 $(outdir
)/%.php
: %.php
257 ## notation.texi deps
258 $(top-build-dir
)/mf
/$(outconfbase
)/feta16list.ly
:
259 $(MAKE
) -C
$(top-src-dir
)/mf
261 $(outdir
)/notation.texi
: $(outdir
)/ly-grammar.txt
263 ## Rules for the automatically generated documentation
264 $(outdir
)/ly-grammar.txt
: $(top-src-dir
)/lily
/parser.yy
265 cd
$(outdir
) && $(BISON
) -v
$<
266 $(buildscript-dir
)/yyout2grammar
$(outdir
)/parser.output
$@
268 # There used to be a dependency on a dummy target, to force a rebuild
269 # of internals every time. however, this triggers
270 # compilation during install, which is a bad thing (tm).
272 $(outdir
)/internals.texi
: $(LILYPOND_BINARY
)
273 cd
$(outdir
) && $(LILYPOND_BINARY
) --verbose
$(top-src-dir
)/ly
/generate-documentation
276 ###############################################
277 # Documentation and translations maintenance #
278 ###############################################
282 all-translations-update
: po-update translation-status
283 $(foreach lang
, $(LANGS
), make ISOLANG
=$(lang
) skeleton-update snippet-update
&&) true
286 CHECK_TRANSLATION_FLAGS
= --no-color
291 mkdir
-p
$(ISOLANG
)/$(DIR
)
292 cp fr
/GNUmakefile
$(ISOLANG
)
293 cp fr
/$(DIR
)/GNUmakefile
$(ISOLANG
)/$(DIR
)
294 sed
-i
-e
's/ISOLANG *= *fr/ISOLANG = $(ISOLANG)/' $(ISOLANG
)/GNUmakefile
$(ISOLANG
)/$(DIR
)/GNUmakefile
295 rm -f
$(outdir
)/*.
*tely
$(outdir
)/*.
*texi
296 $(PYTHON
) $(auxscript-dir
)/texi-langutils.py
-d
$(outdir
) -l
$(ISOLANG
) -o doc.pot
--skeleton
--gettext
$$(cd
$(ISOLANG
) && ls
-1 ..
/$(DIR
).tely ..
/$(DIR
).texi
)
297 for i in
$$(cd
$(outdir
) && ls
-1 $(DIR
).tely
$(DIR
).texi
); do\
298 test -e
$(ISOLANG
)/$$i || mv
$(outdir
)/$$i $(ISOLANG
)/$$i;\
300 rm -f
$(outdir
)/$(DIR
).tely
$(outdir
)/$(DIR
).texi
301 for i in
$$(cd
$(outdir
) && ls
-1 *.
*tely
*.
*texi
); do\
302 test -e
$(ISOLANG
)/$(DIR
)/$$i\
303 ||
test -e
$(ISOLANG
)/$$i\
304 || mv
$(outdir
)/$$i $(ISOLANG
)/$(DIR
)/$$i;\
308 # Also for updating/adding missing files
310 $(foreach i
,$(TRANSLATION_DIRS
),$(MAKE
) new-lang-dir DIR
=$(i
) &&) :
311 msgmerge
-U po
/lilypond-doc.pot
$(outdir
)/doc.pot
312 test -e po
/$(ISOLANG
).po || cp po
/lilypond-doc.pot po
/$(ISOLANG
).po
313 @echo
"*** Please add a language definition for $(ISOLANG) in python/langdefs.py ***"
315 TRANSLATION_DIRS
= web texidocs
316 TRANSLATION_FILES
= $(shell git ls-files
$(ISOLANG
) | grep
-v GNUmakefile
)
317 TEXI_LANGUTIL_FLAGS
+= --skeleton
319 TELY_FILES
= $(call src-wildcard
,$(ISOLANG
)/*.tely
)
321 @echo
"$@ has been discontinued"
322 @echo
"simply copy .texi, .itexi files you want to translate"
325 $(PYTHON
) $(auxscript-dir
)/texi-langutils.py
-d
$(outdir
) -l
$(ISOLANG
) $(TEXI_LANGUTIL_FLAGS
) $(TELY_FILES
:$(ISOLANG
)/%.tely
=..
/%.tely
)
326 $(PYTHON
) $(auxscript-dir
)/texi-skeleton-update.py
$(ISOLANG
) $(outdir
)
329 $(PYTHON
) $(auxscript-dir
)/update-snippets.py user
$(ISOLANG
) '*.itely'
331 DOCUMENTS_INCLUDES
:=-I
$(ISOLANG
) \
332 -I
$(top-build-dir
)/Documentation
/$(ISOLANG
)/out-www \
333 -I
$(top-src-dir
)/Documentation
/snippets \
334 -I
$(top-build-dir
)/Documentation
/out-www \
335 -I
$(top-build-dir
)/Documentation
/out
337 else # ISOLANG is empty
339 DOCUMENTS_INCLUDES
:=-I . \
340 -I
$(top-build-dir
)/Documentation
/out-www \
341 -I
$(top-src-dir
)/Documentation
/snippets \
342 -I
$(top-build-dir
)/Documentation
/snippets
/out-www \
343 -I
$(top-build-dir
)/Documentation
/out
348 $(PYTHON
) $(auxscript-dir
)/check_texi_refs.py
--batch \
349 $(DOCUMENTS_INCLUDES
) $(auxpython-dir
)/manuals_definitions.py
352 $(PYTHON
) $(auxscript-dir
)/check_texi_refs.py
--auto-fix \
353 $(DOCUMENTS_INCLUDES
) $(auxpython-dir
)/manuals_definitions.py
356 ISOLANG
=$(ISOLANG
) $(PYTHON
) $(auxscript-dir
)/check_translation.py
$(CHECK_TRANSLATION_FLAGS
) $(TRANSLATION_FILES
)
359 ISOLANG
=$(ISOLANG
) $(PYTHON
) $(auxscript-dir
)/check_translation.py
--update
$(CHECK_TRANSLATION_FLAGS
) $(TRANSLATION_FILES
)
361 # what's it gonna be, boy...tranlationS-/translation-
363 PYTHONPATH
=$(top-src-dir
)/python
:$(top-src-dir
)/python
/auxiliar
$(PYTHON
) $(top-src-dir
)/scripts
/auxiliar
/translations-status.py