]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/GNUmakefile
Docs: restore CSS files in directories that use lysdoc template
[lilypond.git] / Documentation / GNUmakefile
1 depth = ..
2
3 ########################
4 #  Documentation build #
5 ########################
6
7 #############
8 ### Variables
9
10 NAME = documentation
11 LANGS = $(shell $(PYTHON) $(top-src-dir)/python/langdefs.py)
12 MANUALS_SUBDIRS = application contributor learning notation
13 SUBDIRS = $(MANUALS_SUBDIRS) snippets bibliography pictures misc po $(LANGS)
14 STEPMAKE_TEMPLATES = documentation texinfo tex omf
15 LOCALSTEPMAKE_TEMPLATES = lilypond ly
16
17 ### Extra flags
18
19 LILYPOND_BOOK_FLAGS = --extra-options '-e "(ly:set-option (quote internal-type-checking) \#t)"'
20 TEXI2PDF_FLAGS = \
21   -I $(outdir) \
22   -I $(top-build-dir)/Documentation/$(outconfbase)
23 $(outdir)/snippets-big-page.html: TEXI2HTML_FLAGS += -D short_toc
24 $(outdir)/snippets/index..html: TEXI2HTML_FLAGS += -D short_toc
25
26 ### Extra source files
27
28 README_TOP_FILES= DEDICATION THANKS
29 LATEX_FILES =$(call src-wildcard,*.latex)
30 IMAGES=$(call src-wildcard,*.png)
31 EPS_ILLUSTRATIONS=context-example.eps
32
33 IN_ITELY_FILES = $(call src-wildcard,snippets/*-intro.itely)
34 SNIPPET_LY_FILES = $(call src-wildcard,snippets/*.ly)
35
36 ### Out files
37
38 # Dependencies
39 GENERATED_ITELY_FILES = $(IN_ITELY_FILES:snippets/%-intro.itely=$(outdir)/%.itely)
40
41 OUT_PDF_IMAGES = $(IMAGES:%.png=$(outdir)/%.pdf)
42 OUT_PDF_IMAGES += $(EPS_ILLUSTRATIONS:%.eps=$(outdir)/%.pdf)
43 OUT_PNG_IMAGES = $(OUT_PDF_IMAGES:%.pdf=%.png)
44
45 XREF_MAPS_FILES += $(XREF_MAPS_DIR)/internals.xref-map
46 OMF_FILES += $(outdir)/internals.html.omf $(outdir)/internals.pdf.omf
47
48 # Main manuals
49 TEXINFO_MANUALS = internals\
50  $(TELY_FILES:%.tely=%)\
51  $(TEXI_FILES:%.texi=%)
52
53 PDF_FILES = $(TEXINFO_MANUALS:%=$(outdir)/%.pdf)
54
55 UNSPLITTED_HTML_MANUALS = changes
56 SPLITTED_HTML_MANUALS = $(foreach manual, $(TEXINFO_MANUALS),\
57 $(if $(findstring $(manual), $(UNSPLITTED_HTML_MANUALS)),, $(manual)))
58
59 OUT_HTML_FILES = $(UNSPLITTED_HTML_MANUALS:%=$(outdir)/%.html)\
60  $(SPLITTED_HTML_MANUALS:%=$(outdir)/%-big-page.html)
61 DEEP_HTML_FILES = $(SPLITTED_HTML_MANUALS:%=$(outdir)/%/index.html)
62
63 # Symlinks to refer to external source documents from split and non-split HTML
64 source-links = $(outdir)/source\
65  $(foreach manual, $(SPLITTED_HTML_MANUALS), $(outdir)/$(manual)/source)
66
67 # Other out files
68 HTML_PAGE_NAMES= index translations devel
69 OUT_HTML_FILES += $(HTML_PAGE_NAMES:%=$(outdir)/%.html)
70 OUT_CSS_FILES = $(CSS_FILES:%.css=$(outdir)/%.css)
71
72 MAIN_INFO_DOC = lilypond-notation
73 INFO_DOCS = lilypond-application lilypond-changes lilypond-contributor lilypond-internals \
74  lilypond-learning lilypond-notation music-glossary
75 ifeq ($(out),www)
76 INFO_DOCS += lilypond-snippets 
77 endif
78 INFO_FILES = $(INFO_DOCS:%=$(outdir)/%.info)
79
80 ifeq ($(out),www)
81 INFO_IMAGES_DIR = lilypond
82 DEST_INFO_IMAGES_SUBDIR = Documentation/
83 endif
84
85 include $(depth)/make/stepmake.make
86
87 OUT_TXT_FILES = $(addprefix $(outdir)/, $(addsuffix .txt, $(README_TOP_FILES)))
88
89 ###########
90 ### Targets
91
92 default: local-doc
93
94 local-help: extra-local-help
95
96 extra-local-help:
97         @echo -e "\
98   check-xrefs [ISOLANG=LL] validate Texinfo cross-references\n\
99   fix-xrefs [ISOLANG=LL]   interactively fix Texinfo cross-references (use with caution)\n\
100   info        update info pages\n\
101   xml         update Docbook xml documentation\n\
102 \n\
103 Translations specific targets (see TRANSLATION for details):\n\
104   new-lang ISOLANG=LL  create and initialize subdirectory \'LL' for language \'LL\n\
105   po-update            update and replace PO files for documentation with msgmerged versions\n\
106   check-translation ISOLANG=LL   show changes in English docs since last translation update\n\
107   update-translation ISOLANG=LL  call $$$$EDITOR to help updating the translation\n\
108   skeleton-update ISOLANG=LL     update Texinfo skeleton files\n\
109   snippet-update ISOLANG=LL      update ly snippets in Texinfo translation according to\n\
110                               docs in English (use with caution)\n\
111 \n\
112 LL refers to the desired locale (most often only the ISO 639 language code).\n"
113
114 info: $(INFO_FILES)
115         @echo export LILYPOND_DATADIR=$(LILYPOND_DATADIR)
116         @echo export PYTHONPATH=$(PYTHONPATH)
117
118 xml: $(outdir)/notation/notation.xml $(outdir)/internals/internals.xml
119
120
121 local-clean:
122         rm -f $(INFO_IMAGES_DIR)
123
124 ### Web targets
125
126 ifeq ($(out),www)
127 local-WWW-1: $(TEXINFO_MANUALS:%=$(outdir)/%.texi) $(PDF_FILES) info
128
129 local-WWW-2: txt-to-html $(OUT_HTML_FILES) $(DEEP_HTML_FILES) $(source-links) $(OMF_FILES)
130 endif
131
132
133 #########
134 ### Rules
135
136 # cd $(outdir) rule gets bit hairy for --srcdir configure builds
137 txt-to-html:
138         $(foreach a, $(README_TOP_FILES), cp $(top-src-dir)/$(a) $(outdir)/$(a).txt && ) true
139         $(PYTHON) $(step-bindir)/text2html.py $(OUT_TXT_FILES)
140
141
142 $(outdir)/%.css: %.css
143         ln -f $< $@
144
145 ## Extra images dependencies
146 $(outdir)/learning/index.html: $(OUT_PNG_IMAGES) $(OUT_EPS_IMAGES)
147 $(outdir)/notation/index.html: $(OUT_PNG_IMAGES) $(OUT_EPS_IMAGES)
148 $(outdir)/learning-big-page.html: $(OUT_PNG_IMAGES)
149 $(outdir)/notation-big-page.html: $(OUT_PNG_IMAGES)
150
151 # Ugh, using '%' twice not possible
152 $(outdir)/notation/notation.xml: $(outdir)/notation.texi
153         mkdir -p $(dir $@)
154         $(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$(dir $@) --docbook $<
155
156 $(outdir)/internals/internals.xml: $(outdir)/internals.texi
157         mkdir -p $(dir $@)
158         $(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$(dir $@) --docbook $<
159
160 $(outdir)/learning.texi $(outdir)/notation.texi: $(OUT_PDF_IMAGES)
161
162 $(foreach manual, $(MANUAL_SUBDIRS),\
163 $(eval $(outdir)/(manual).texi: $(call src-wildcard,$(manual)/*.ite??)))
164
165 $(outdir)/%.png: %.png
166         convert -depth 8 -geometry 50x50% $< $@
167
168 $(outdir)/%.png: %.eps
169         gs -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -q -sOutputFile=$@ -sDEVICE=png16m -dEPSCrop -dNOPAUSE -f $< -c quit
170
171 $(outdir)/%.pdf: %.png
172         convert -depth 8 $< $@
173
174 $(outdir)/%.pdf: %.eps
175         gs -dAutoRotatePages=/None -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -sOutputFile=$@ -dEPSCrop -c .setpdfwrite -f $<
176
177
178 $(outdir)/source:
179         @rm -f $(@)
180         ln -sf $(depth) $(@)
181
182 $(outdir)/%/source:
183         @rm -f $(@)
184         mkdir -p $(dir $@)
185         ln -sf $(depth)/.. $(@)
186
187
188 ## Snippets rules idiosyncrases
189 $(outdir)/%.itely: snippets/%-intro.itely snippets/%.snippet-list
190         xargs $(LYS_TO_TELY) -f doctitle,texidoc,verbatim --name=$@ --template=$< < $(filter %.snippet-list, $^)
191
192 $(outdir)/snippets.texi: $(GENERATED_ITELY_FILES) $(SNIPPET_LY_FILES)
193
194 $(outdir)/%.bib: %.bib
195         ln -f $< $@
196
197 ## notation.texi deps
198 $(top-build-dir)/mf/$(outconfbase)/feta16list.ly:
199         $(MAKE) -C $(top-src-dir)/mf
200
201 $(outdir)/notation.texi: $(outdir)/ly-grammar.txt
202
203 ## Rules for the automatically generated documentation
204 $(outdir)/ly-grammar.txt: $(top-src-dir)/lily/parser.yy
205         cd $(outdir) && $(BISON) -v $<
206         $(auxscript-dir)/yyout2grammar.py $(outdir)/parser.output $@
207
208 # There used to be a dependency on a dummy target, to force a rebuild
209 # of internals every time.  however, this triggers
210 # compilation during install, which is a bad thing (tm).
211
212 $(outdir)/internals.texi: $(LILYPOND_BINARY)
213         cd $(outdir) && $(LILYPOND_BINARY) --verbose $(top-src-dir)/ly/generate-documentation
214
215
216 ###############################################
217 #  Documentation and translations maintenance #
218 ###############################################
219 po-update:
220         make -C po po-update
221
222 all-translations-update: po-update translation-status
223         $(foreach lang, $(LANGS), make ISOLANG=$(lang) skeleton-update snippet-update &&) true
224
225 ifneq ($(NO_COLOR),)
226 CHECK_TRANSLATION_FLAGS = --no-color
227 endif
228
229 ifneq ($(ISOLANG),)
230 new-lang:
231         @if (( $$(file -b $(ISOLANG)) == directory )) 2>/dev/null; \
232         then echo "Error: $(ISOLANG) directory already exists. Exiting." ; \
233         exit 3 ; \
234         fi
235         mkdir -p $(ISOLANG)/learning
236         cp fr/GNUmakefile $(ISOLANG)
237         cp fr/learning/GNUmakefile $(ISOLANG)/learning
238         sed -i -e 's/ISOLANG *= *fr/ISOLANG = $(ISOLANG)/' $(ISOLANG)/GNUmakefile $(ISOLANG)/learning/GNUmakefile
239         $(auxscript-dir)/texi-langutils.py -d $(outdir) -l $(ISOLANG) -o doc.pot --skeleton --gettext ../learning.tely
240         mv $(outdir)/*.*tely $(ISOLANG)/learning
241         msgmerge -U po/lilypond-doc.pot $(outdir)/doc.pot
242         cp po/lilypond-doc.pot po/$(ISOLANG).po
243         @echo "***  Please add a language definition for $(ISOLANG) in python/langdefs.py  ***"
244
245 CHECKED_FILES = $(ISOLANG)/index.html.in $(foreach i,learning notation application, \
246   $(shell find $(ISOLANG)/$(manual) -name '*.*te??' -not -wholename '*out-www*')) \
247   $(shell find $(ISOLANG)/texidocs/ -name '*.texidoc')
248
249 TELY_FILES = $(call src-wildcard,$(ISOLANG)/*.tely)
250 skeleton-update:
251         $(auxscript-dir)/texi-langutils.py -d $(outdir) -l $(ISOLANG) --skeleton $(TELY_FILES:$(ISOLANG)/%.tely=../%.tely)
252         $(auxscript-dir)/texi-skeleton-update.py $(ISOLANG) $(outdir)
253
254 snippet-update:
255         $(auxscript-dir)/update-snippets.py user $(ISOLANG) '*.itely'
256
257 DOCUMENTS_INCLUDES:=-I $(ISOLANG) \
258 -I $(top-build-dir)/Documentation/$(ISOLANG)/out-www \
259 -I $(top-src-dir)/Documentation/snippets \
260 -I $(top-build-dir)/Documentation/out-www
261
262 else # ISOLANG is empty
263
264 DOCUMENTS_INCLUDES:=-I . \
265 -I $(top-build-dir)/Documentation/out-www \
266 -I $(top-src-dir)/Documentation/snippets \
267 -I $(top-build-dir)/Documentation/snippets/out-www
268
269 endif # ISOLANG
270
271 check-xrefs:
272         $(auxscript-dir)/check_texi_refs.py --batch \
273         $(DOCUMENTS_INCLUDES) $(auxpython-dir)/manuals_definitions.py
274
275 fix-xrefs:
276         $(auxscript-dir)/check_texi_refs.py --auto-fix \
277         $(DOCUMENTS_INCLUDES) $(auxpython-dir)/manuals_definitions.py
278
279 check-translation:
280         ISOLANG=$(ISOLANG) $(auxscript-dir)/check_translation.py $(CHECK_TRANSLATION_FLAGS) $(CHECKED_FILES)
281
282 update-translation:
283         ISOLANG=$(ISOLANG) $(auxscript-dir)/check_translation.py --update $(CHECK_TRANSLATION_FLAGS) $(CHECKED_FILES)
284
285 translation-status:
286         make -C po out=www messages
287         $(auxscript-dir)/translations-status.py
288
289 .SECONDARY: