+### Web site idiosyncrasies
+$(XREF_MAPS_DIR)/web.xref-map: XREF_MAP_FLAGS += --split=node
+
+### AJAX scripts
+JS_FILES = $(call src-wildcard,*.js)
+PHP_FILES = $(call src-wildcard,*.php)
+
+OUT_JS_FILES = $(JS_FILES:%.js=$(outdir)/%.js)
+OUT_PHP_FILES = $(PHP_FILES:%.php=$(outdir)/%.php)
+
+
+
+### bad hack for badly-integrated roadmap.
+$(outdir)/ROADMAP:
+ cp $(top-src-dir)/ROADMAP $(outdir)
+$(outdir)/contributor.texi: $(outdir)/ROADMAP
+
+### bad hack for badly-integrated bibliography
+$(outdir)/colorado.itexi:
+ BSTINPUTS=$(src-dir)/essay $(buildscript-dir)/bib2texi \
+ -s $(top-src-dir)/Documentation/lily-bib \
+ -o $(outdir)/colorado.itexi \
+ -q \
+ $(src-dir)/essay/colorado.bib
+
+$(outdir)/computer-notation.itexi:
+ BSTINPUTS=$(src-dir)/essay $(buildscript-dir)/bib2texi \
+ -s $(top-src-dir)/Documentation/lily-bib \
+ -o $(outdir)/computer-notation.itexi \
+ -q \
+ $(src-dir)/essay/computer-notation.bib
+
+$(outdir)/engravingbib.itexi:
+ BSTINPUTS=$(src-dir)/essay $(buildscript-dir)/bib2texi \
+ -s $(top-src-dir)/Documentation/lily-bib \
+ -o $(outdir)/engravingbib.itexi \
+ -q \
+ $(src-dir)/essay/engravingbib.bib
+
+$(outdir)/essay.texi: \
+ $(outdir)/colorado.itexi \
+ $(outdir)/computer-notation.itexi \
+ $(outdir)/engravingbib.itexi
+
+
+###########
+### Targets
+
+default: local-txt-doc
+
+local-help: extra-local-help
+
+extra-local-help:
+ @echo " check-xrefs [ISOLANG=LL] validate Texinfo cross-references"
+ @echo " fix-xrefs [ISOLANG=LL] interactively fix Texinfo cross-references"
+ @echo " (use with caution)"
+ @echo " info update info pages"
+ @echo " xml update Docbook xml documentation"
+ @echo
+ @echo "Translations specific targets (see TRANSLATION for details):"
+ @echo " new-lang ISOLANG=LL create and initialize"
+ @echo " subdirectory \'LL' for language \'LL"
+ @echo " (if \'LL exists, update missing file)"
+ @echo " po-update update and replace PO files for"
+ @echo " documentation with msgmerged versions"
+ @echo " check-translation ISOLANG=LL show changes in English docs since"
+ @echo " last translation update"
+ @echo " update-translation ISOLANG=LL call $$$$EDITOR to help updating"
+ @echo " the translation"
+ @echo " snippet-update ISOLANG=LL update ly snippets in Texinfo translation"
+ @echo " according to docs in English"
+ @echo " (use with caution)"
+ @echo
+ @echo " LL refers to the desired locale"
+ @echo " (most often only the ISO 639 language code)."
+ @echo
+
+info: $(INFO_FILES)
+
+xml: $(outdir)/notation/notation.xml $(outdir)/internals/internals.xml
+
+
+local-clean:
+ rm -f $(INFO_IMAGES_DIR)
+
+### Web targets
+
+ifeq ($(out),www)
+local-WWW-1: $(OUT_TEXINFO_MANUALS) $(PDF_FILES) info
+
+ifeq ($(AJAX_SEARCH),1)
+local-WWW-2: txt-to-html $(OUT_HTML_FILES) $(DEEP_HTML_FILES) $(OUT_JS_FILES) $(OUT_PHP_FILES) $(source-links) $(OMF_FILES)
+else
+local-WWW-2: txt-to-html $(OUT_HTML_FILES) $(DEEP_HTML_FILES) $(source-links) $(OMF_FILES)
+endif
+
+endif
+
+
+#########
+### Rules
+
+$(outdir)/lilypond-%.info: $(outdir)/%.texi $(outdir)/$(INFO_IMAGES_DIR).info-images-dir-dep $(outdir)/version.itexi $(outdir)/weblinks.itexi | $(OUT_TEXINFO_MANUALS)
+ $(buildscript-dir)/run-and-check "$(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$@ $<" "$*.makeinfo.log"
+
+txt-to-html: $(OUT_TXT_FILES) $(OUT_TXT_FILES:%.txt=%.html)
+
+$(OUT_TXT_FILES): $(outdir)/%.txt: $(top-src-dir)/%
+ cp -f $< $@
+
+$(OUT_TXT_FILES:%.txt=%.html): $(outdir)/%.html: $(outdir)/%.txt
+ $(buildscript-dir)/text2html $<
+
+# Explicitly list the dependencies on generated content
+$(outdir)/web.texi: $(outdir)/we-wrote.itexi $(outdir)/others-did.itexi $(outdir)/weblinks.itexi $(outdir)/version.itexi
+
+ifeq ($(out),www)
+## Extra images dependencies
+$(OUT_TEXINFO_MANUALS): $(outdir)/pictures
+
+$(outdir)/pictures:
+ $(MAKE) -C pictures out=www WWW-1
+ ln -sf ../pictures/$(outdir) $@
+
+$(outdir)/web.texi: $(outdir)/css $(outdir)/ly-examples
+
+$(outdir)/css:
+ $(MAKE) -C css out=www WWW-1
+ ln -sf ../css/$(outdir) $@
+
+$(outdir)/ly-examples:
+ $(MAKE) -C ly-examples out=www WWW-1
+ ln -sf ../ly-examples/$(outdir) $@
+endif
+
+
+# Ugh, using '%' twice not possible
+$(outdir)/notation/notation.xml: $(outdir)/notation.texi
+ mkdir -p $(dir $@)
+ $(buildscript-dir)/run-and-check "$(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$(dir $@) --docbook $<" "$*.makeinfoxml.log"
+
+$(outdir)/internals/internals.xml: $(outdir)/internals.texi
+ mkdir -p $(dir $@)
+ $(buildscript-dir)/run-and-check "$(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$(dir $@) --docbook $<" "$*.makeinfoxml.log"
+
+$(outdir)/learning.texi $(outdir)/notation.texi: $(OUT_PDF_IMAGES)
+
+$(outdir)/source:
+ @rm -f $(@)
+ ln -sf $(depth) $(@)
+
+$(outdir)/%/source:
+ @rm -f $(@)
+ mkdir -p $(dir $@)
+ ln -sf $(depth)/.. $(@)
+
+
+## Snippets rules idiosyncrasies
+$(outdir)/%.itely: snippets/%-intro.itely snippets/%.snippet-list
+ xargs $(LYS_TO_TELY) -f doctitle,texidoc,verbatim --name=$@ --template=$< < $(filter %.snippet-list, $^)
+
+$(TEXI_FILES_FROM_TELY): $(GENERATED_ITELY_FILES) $(OUT_SNIPPET_LY_FILES)
+
+$(OUT_SNIPPET_LY_FILES): out/ly-snippets.dep
+
+out/ly-snippets.dep: $(SNIPPET_LY_FILES)
+ mkdir -p snippets/out
+ $(buildscript-dir)/makesnippets $(src-dir)/snippets snippets/out $(src-dir)
+ mkdir -p out
+ touch $@
+
+$(outdir)/%.bib: %.bib
+ ln -f $< $@
+
+$(outdir)/%.js: %.js
+ ln -f $< $@
+
+$(outdir)/%.php: %.php
+ ln -f $< $@
+
+## notation.texi deps
+$(top-build-dir)/mf/$(outconfbase)/feta16list.ly:
+ $(MAKE) -C $(top-src-dir)/mf
+
+$(outdir)/contributor.texi: $(outdir)/ly-grammar.txt
+
+## Rules for the automatically generated documentation
+$(outdir)/ly-grammar.txt: $(top-src-dir)/lily/parser.yy
+ cd $(outdir) && $(BISON) -v $<
+ $(buildscript-dir)/yyout2grammar $(outdir)/parser.output $@
+
+# There used to be a dependency on a dummy target, to force a rebuild
+# of internals every time. however, this triggers
+# compilation during install, which is a bad thing (tm).
+
+$(outdir)/internals.texi: $(LILYPOND_BINARY) $(INIT_LY_SOURCES) $(SCHEME_SOURCES)
+ cd $(outdir) && $(buildscript-dir)/run-and-check "$(LILYPOND_BINARY) --verbose $(top-src-dir)/ly/generate-documentation" "generate-documentation.log"
+
+###############################################
+# Documentation and translations maintenance #
+###############################################