translation-status:
make -C po out=www messages
$(PYTHON) $(buildscript-dir)/translations-status.py $(buildscript-dir)
+
+local-help: extra-local-help
+
+extra-local-help:
+ @echo -e "\
+ check-xrefs [ISOLANG=LL] validate Texinfo cross-references\n\
+ fix-xrefs [ISOLANG=LL] interactively fix Texinfo cross-references (use with caution)\n\
+\n\
+Translations specific targets (see TRANSLATION for details):\n\
+ new-lang ISOLANG=LL create and initialize subdirectory \'LL' for language \'LL\n\
+ po-update update and replace PO files for documentation with msgmerged versions\n\
+ check-translation ISOLANG=LL show changes in English docs since last translation update\n\
+ update-translation ISOLANG=LL call $$$$EDITOR to help updating the translation\n\
+ skeleton-update ISOLANG=LL update Texinfo skeleton files\n\
+ snippet-update ISOLANG=LL update ly snippets in Texinfo translation according to\n\
+ docs in English (use with caution)\n\
+\n\
+LL refers to the desired locale (most often only the ISO 639 language code).\n"
+
+info:
+ $(MAKE) -C user info
include $(depth)/make/stepmake.make
+default:
+
info: $(INFO_FILES)
@echo export LILYPOND_DATADIR=$(LILYPOND_DATADIR)
@echo export PYTHONPATH=$(PYTHONPATH)
local-install-WWW: local-install-info
local-uninstall-WWW: local-uninstall-info
-default:
-
local-clean:
rm -f $(INFO_IMAGES_DIR)
extra-local-help:
@echo -e "\
info update info pages\n\
- ps update PostScript documents\n\
xml update Docbook xml documentation\n\
"
web-clean: snippets-clean $(tree-share-prefix)/lilypond-force
-default: $(config_h) build-dir-setup
+default: $(config_h) build-dir-setup
build-dir-setup: $(tree-share-prefix)/lilypond-force
+++ /dev/null
-#!@PYTHON
-
-
-
-## make a fonts.scale file.
-
-
-import re
-import sys
-import string
-import os
-
-
-### mftrace/afm.py
-
-# Read some global vars
-class Afm_reader:
- def __init__ (self, filename):
- self.filename = filename
- self.lines = open (self.filename).readlines ()
-
- def get_afm (self):
- afm = Afm_font_metric (self.filename)
- for i in self.lines[:20]:
- m = re.match ('([^ \t\n]*)[ \t]*(.*[^ \t\n])', i)
- if m and m.group (1):
- key = m.group (1)
- value = m.group (2)
- if key != 'Comment':
- afm.__dict__[key] = value
- return afm
-
-class Afm_font_metric:
- def __init__ (self, filename):
- m = re.match ('.*/(.+)', filename)
- self.filename = m.group (1)
- m = re.match ('([-_A-Za-z]*)([0-9]*)', self.filename)
- self.name = m.group (1) + m.group (2)
- self.basename = m.group (1)
- self.designsize = m.group (2)
-
-def read_afm_file (filename):
- reader = Afm_reader (filename)
- return reader.get_afm ()
-
-#if __name__ == '__main__':
-# i = read_afm_file (sys.argv[1])
-# print i, i.FullName, i.FontName
-
-### mftrace
-
-class Font_info:
- cm = {
- 'bx': ('bold', 'roman'),
- 'bxti' : ('bold', 'italic'),
- 'csc' : ('smallcaps', 'roman'),
- 'r' : ('regular', 'roman'),
- 'ss' : ('regular', 'sansserif'),
- 'tt' : ('regular', 'typewriter'),
- 'ti' : ('regular', 'italic'),
- }
-
- def set_defaults (self, name):
- self.FontName = name
- self.FullName = name
- self.EncodingScheme = 'AdobeStandard'
-
- self.foundry = 'GNU'
- self.family = 'LilyPond'
- self.weight = 'Feta'
- self.slant = 'r'
- self.setwidth = 'normal'
- self.style = ''
- self.pixelsize = '0'
- self.pointsize = '0'
- self.xresolution = '0'
- self.yresolution = '0'
- self.spacing = 'p'
- self.averagewidth = '0'
- self.registry = 'GNU'
- self.encoding = 'FontSpecific'
-
- split = string.split (name, '-')
- if len (split) >= 4:
- # Assume
- # Adobe FontName = X11 foundry-family-weight-style
- if 1:
- self.foundry, self.family = split[:2]
- else: # testin'
- self.foundry = split[0]
- self.family = string.join (split[1:-2], ' ')
- self.weight = string.join (split[2:-1], ' ')
- self.style = split[-1:][0]
- self.FamilyName = '%s %s' % (self.family, self.weight)
- self.designsize = self.style
- elif name[:2] == 'cm':
- self.foundry = 'TeX' # Knuth?
- self.FamilyName = 'Computer Modern'
- self.family = self.FamilyName
- m = re.match ('^cm([a-z]*)([0-9]*)', name)
- self.weight = string.join (self.cm[m.group (1)], ' ')
- self.designsize = m.group (2)
- self.style = self.designsize
- else:
- self.FamilyName = name
-
- def __init__ (self, x):
- if type (x) == type ("hallo"):
- m = re.match ('([-_A-Za-z]*)([0-9]*)', x)
- self.name = x
- self.basename = m.group (1)
- self.designsize = m.group (2)
- self.set_defaults (x)
- elif type (x) == type ({}):
- self.set_defaults (x['FontName'])
- for k in x.keys ():
- self.__dict__[k] = x[k]
-
- def __getitem__ (self, key):
- return self.__dict__[key]
-
- def get_X11 (self):
- return (self.foundry, self.family, self.weight,
- self.slant, self.setwidth, self.style,
- self.pixelsize, self.pointsize,
- self.xresolution, self.yresolution,
- self.spacing, self.averagewidth,
- self.registry, self.encoding)
-
-fontinfo = {}
-
-# wat een intervaas...
-ls = sys.stdin.readline ()
-ls = string.split (ls)
-
-sketch_p = 0
-sodipodi_p = 0
-if len (ls) and ls[0] == 'sodipodi':
- ls = ls[1:]
- sodipodi_p = 1
-elif len (ls) and ls[0] == 'sketch':
- ls = ls[1:]
- sketch_p = 1
-
-if not (sketch_p or sodipodi_p):
- print len(ls)
-
-for filename in ls:
- basename = re.sub ('\.pf[ab]', '',filename)
- fontname = re.sub ('-', ' ',basename)
-
- m = re.search ("([0-9]+)$", fontname)
- designsize = 'normal'
-
-
- if m:
- designsize = m.group (1)
- fontbase = re.sub ("([0-9]+)$", "", fontname)
-
-
- # FIXME: Font naming -- what a mess
- # Check sane naming with xfontsel and gtkfontsel
-
- # Adobe's font naming scheme and X11's seem to be conflicting.
- # Adobe's FontFamily seems to be X11's family + weight
- # Also, text selection applets like gtkfontsel, gfontview and
- # GNOME-applications specific ones, display X11's `family'
- # parameter as `Font', and X11's `Weight' parameter as `Style'.
-
- # Using X11 description/convention -- good for xfontsel:
- # 1 foundry: GNU
- # 2 family: LilyPond <basename>
- # 3 weight: <designsize>
- # 4 slant: r(oman) =upright
- # 5 setwidth: normal
- # 6 style:
- # 7 pixelsize: 0
- # 8 pointsize: 0 (20 crashes xfs, moved to style)
- # 9 xresolution: 0
- # 10 yresolution: 0
- # 11 spacing: p(roportional)
- # 12 averagewidth: 0
- # 13 registry: GNU
- # 14 encoding: fonstpecific
-
- # gives:
- # feta20.pfa -GNU-LilyPond feta-20-r-normal--0-0-0-0-p-0-gnu-fontspecific
-
- # However, GNOME (gtkfontsel, gnome apps) seems to want:
-
- # 1 foundry: GNU
- # 2 family: LilyPond
- # 3 weight: <basename>
- # 4 slant: r(oman) =upright
- # 5 setwidth: normal
- # 6 style: <designsize>
- # 7 pixelsize: 0
- # 8 pointsize: 0 (20 crashes xfs, moved to style)
- # 9 xresolution: 0
- # 10 yresolution: 0
- # 11 spacing: p(roportional)
- # 12 averagewidth: 0
- # 13 registry: GNU
- # 14 encoding: fonstpecific
-
- # which gives:
- # feta20.pfa -GNU-LilyPond-feta-r-normal--20-0-0-0-p-0-gnu-fontspecific
- # foundry: GNU
-
- ## ouch, pointsize 20 crashes xfs
- ## XXXfeta20.pfa -GNU-LilyPond Feta-regular-r-normal--0-20-0-0-p-0-gnu-fontspecific
-
- ## feta20.pfa -GNU-LilyPond feta-regular-r-normal-20-0-0-0-0-p-0-gnu-fontspecific
-
- afmfile = ''
- if not afmfile:
- #afmfile = find_file (basename + '.afm')
- afmfile = basename + '.afm'
-
- if afmfile:
- afmfile = os.path.abspath (afmfile)
- if os.path.exists (afmfile):
- afm = read_afm_file (afmfile)
- fontinfo = Font_info (afm.__dict__)
- else:
- fontinfo = Font_info (basename)
-
- family_name = string.join (string.split (fontinfo['FamilyName'],
- '-'), ' ')
-
- if sodipodi_p:
- print string.join ((os.path.abspath (filename),
- fontinfo.FamilyName,
- fontinfo.FamilyName,''
- ),
-
- ',')
-
- elif sketch_p:
- # Sketch's lilypond.sfd map:
- s = string.join ([fontinfo.FontName,
- fontinfo.family,
- '%s %s' % (fontinfo.weight, fontinfo.style),
- string.join (fontinfo.get_X11 ()[:4], '-'),
- string.join (fontinfo.get_X11 ()[-2:], '-'),
- fontinfo.name],
- ',')
- print s
-
- s = string.join ([fontinfo.FamilyName + fontinfo.designsize,
- fontinfo.family,
- '%s %s' % (fontinfo.weight, fontinfo.style),
- string.join (fontinfo.get_X11 ()[:4], '-'),
- string.join (fontinfo.get_X11 ()[-2:], '-'),
- fontinfo.name],
- ',')
- print s
- else:
- print filename + ' -' + string.join (fontinfo.get_X11 (), '-')
local-convert-ly:
$(PYTHON) $(CONVERT_LY) --edit --assume-old *ly
-local-help: local-ly-help
-
+local-help:
-
-include $(stepdir)/www-targets.make
-
-
.PHONY: download mutopia png ps scores tar
.PRECIOUS: $(outdir)/%.ps $(outdir)/%-book.ps
+++ /dev/null
-#!@PYTHON@
-
-#
-# TODO: CLEAN THIS UP, merge packagepython.py and release.py
-#
-
-
-
-import fnmatch
-import sys
-import os
-import re
-import string
-import getopt
-import pipes
-
-
-_debug = 0
-_prune = ['(*)']
-package_diff_dir = '/tmp/package-diff.%s/' % os.getlogin ()
-
-def system (cmd):
- print cmd
- s = os.system (cmd)
- if s:
- raise 'barf'
-
-
-def find(pattern, dir = os.curdir):
- list = []
- names = os.listdir(dir)
- names.sort()
- for name in names:
- if name in (os.curdir, os.pardir):
- continue
- fullname = os.path.join(dir, name)
- if fnmatch.fnmatch(name, pattern):
- list.append(fullname)
- if os.path.isdir(fullname) and not os.path.islink(fullname):
- for p in _prune:
- if fnmatch.fnmatch(name, p):
- if _debug: print "skip", `fullname`
- break
- else:
- if _debug: print "descend into", `fullname`
- list = list + find(pattern, fullname)
- return list
-
-
-topdir = os.getcwd ()
-def gulp_file(f):
- try:
- i = open(f)
- i.seek (0, 2)
- n = i.tell ()
- i.seek (0,0)
- except:
- sys.stderr.write ("can't open file: %s\n" % f)
- return ''
- s = i.read (n)
- if len (s) <= 0:
- sys.stderr.write ("gulped emty file: %s\n" % f)
- i.close ()
- return s
-
-
-def mailaddress():
- try:
- return os.environ['MAILADDRESS']
- except KeyError:
- return '(address unknown)'
-
-
-
-class Flags:
- def __init__ (self):
- self.to_version = 0
- self.from_version = 0
- self.package = 0
-
-flags = Flags ()
-
-def help ():
- sys.stdout.write (
- 'Generate a patch to go to current version\n'
- ' -f, --from=FROM old is FROM\n'
- ' -h, --help print this help\n'
- ' --outdir=DIR generate in DIR\n'
- ' -o, --output=NAME write patch to NAME\n'
- ' -p, --package=DIR specify package\n'
- ' -r, --release diff against latest release\n'
- ' -t, --to=TO to version TO\n'
- ' -F, --dir-from=FROM diff from directory FROM\n'
- ' -T, --dir-to=TO diff to directory TO\n'
- )
-
-def cleanup ():
- global from_diff, to_diff, original_dir
- os.chdir (package_diff_dir)
- sys.stderr.write ('Cleaning ... ')
- system ('rm -fr %s %s' % (from_diff, to_diff))
- sys.stderr.write ('\n')
- os.chdir (original_dir)
-
-def untar (fn):
- # system ('pwd');
- try:
- open (fn)
- except:
- sys.stderr.write ("Can't find tarball: %s\n" % fn)
- cleanup ()
- sys.exit (1)
- sys.stderr.write ("Untarring: %s\n" % fn)
- system ('gzip --quiet -dc ' + fn + '| tar xf - ')
- sys.stderr.flush ()
-
-def remove_automatic (dirnames):
- files = []
-
- for d in dirnames:
- try:
- for p in pats:
- files = files + find (p, d)
- except:
- sys.stderr.write ("Can't find dir: %s\n" % d)
- cleanup ()
- sys.exit (1)
-
- dirs = map (lambda d: find ('out*', d), dirnames)
- dirs = reduce (lambda x,y: x + y, dirs)
-
- #print dirs
-
- for d in dirs:
- if os.path.isdir (d):
- files = files + find ('*', d)
-
- for f in files:
- try:
- os.remove (f)
- except:
- sys.stderr.write ("can't remove: `" + f + "'\n'")
-
-def dirname (v):
- return flags.package.name + '-' + version_tuple_to_str (v)
-
-def tarball(v):
- return dirname (v) + '.tar.gz'
-
-def released_tarball(v):
- return flags.package.release_dir + tarball (v)
-
-
-def remove_configure (dir):
- os.chdir (dir)
-
- # ugh
- system ('rm -f *.ly')
-
- # should do 'make distclean ?'
- system ('rm -rf debian/out GNUmakefile config.cache config.h config.hh config.log config.make config.status configure stepmake/GNUmakefile stepmake/config.hh stepmake/config.log stepmake/config.status stepmake/config.make')
-
- # ugh: symlinks
- system ('rm -f stepmake/stepmake/stepmake stepmake/stepmake/bin')
-
-
-# ugh, how to get rid of .tex files generated by lily?
-pats = ['configure', '*.diff', '*.diff.gz', '*.pyc', '*.txt']
-
-header = """Generated by %s,
-From = %s, To = %s
-
-usage
-
- cd %s-source-dir; patch -E -p1 < %s
-
-Patches do not contain automatically generated files
-or (urg) empty directories,
-i.e., you should run
-
- ./autogen.sh
- ./configure [your options.]
-
-
-"""
-
-
-def makediff (fromdir, todir, patch_name):
- remove_automatic ([fromdir, todir])
-
- # ugh
- remove_configure (fromdir)
- remove_configure (todir)
- os.chdir (todir)
-
- fromname = fromdir
- toname = todir
- if os.path.dirname (fromname) == os.path.dirname (toname):
- fromname = os.path.basename (fromname)
- toname = os.path.basename (toname)
- fromdir = '../' + fromname
-
- f = open (patch_name, 'wb')
- f.write (header %
- (mailaddress (), fromname, toname,
- flags.package.name, os.path.basename (patch_name)))
-
- f.close ()
-
- sys.stderr.write ('diffing to %s... ' % patch_name)
- system ('pwd')
- print ('diff -purN %s . >> %s' % (fromdir, patch_name))
- system ('diff -purN %s . >> %s' % (fromdir, patch_name))
- system ('gzip --quiet -9f %s' % patch_name)
-
-
-os.environ['GZIP'] = '-q'
-print 'argv: ' + string.join (sys.argv[1:])
-(options, files) = getopt.getopt (sys.argv[1:],
- 'hF:f:o:p:rT:t:', ['conf=', 'from=', 'dir-from=', 'dir-to=', 'help', 'outdir=', 'output=', 'package=', 'release', 'to='])
-
-patch_name = ''
-conf = ''
-outdir = ''
-from_src = ''
-to_src = ''
-release=0
-from_version=0
-to_version=0
-for opt in options:
- o = opt[0]
- a = opt[1]
- if o == '--from' or o == '-f':
- from_version = a
- elif o == '--to' or o == '-t':
- to_version = a
- elif o == '--dir-from' or o == '-F':
- from_src = a;
- elif o == '--dir-to' or o == '-T':
- to_src = a;
- elif o == '--help' or o == '-h':
- help ()
- sys.exit (0)
- elif o == '--outdir':
- outdir = a
- elif o == '--conf':
- conf = a
- elif o == '--output' or o == '-o':
- patch_name = a
- elif o == '-p' or o == '--package':
- topdir = a
- elif o == '--release' or o == '-r':
- release=1
- else:
- raise getopt.error
-
-sys.path.append (topdir + '/stepmake/bin')
-from packagepython import *
-package = Package (topdir)
-flags.package = package
-packager = Packager ()
-
-if from_src:
- from_package = Package (from_src)
- flags.from_version = from_package.version
-if from_version:
- flags.from_version = version_str_to_tuple (from_version)
- from_src = ''
-
-if to_src:
- to_package = Package (to_src)
- flags.to_version = to_package.version
-if to_version:
- flags.to_version = version_str_to_tuple (to_version)
- to_src = ''
-
-if not flags.to_version:
- flags.to_version = package.version
-
-if not flags.from_version:
- flags.from_version = prev_version (flags.to_version)
-
-# urg
-if release:
- flags.from_version = (flags.from_version[0],
- flags.from_version[1], flags.from_version[2], '');
-
-import tempfile
-original_dir = os.getcwd ();
-
-system ('rm -rf %s' % package_diff_dir)
-try:
- os.mkdir (package_diff_dir)
-except:
- pass
-
-from_diff = dirname (flags.from_version)
-to_diff = dirname (flags.to_version)
-if to_diff == from_diff:
- if from_src:
- from_diff = from_diff + '.src'
- elif to_src:
- to_diff = to_diff + '.src'
- else:
- sys.stderr.write (patch_name + ': nothing to do: to == from = ' + from_diff + '\n')
- sys.exit (1)
-
-def compat_abspath (path):
- return os.path.normpath (os.path.join (os.getcwd (), path))
-
-if conf and not outdir:
- outdir = 'out-' + conf
-
-if not patch_name:
- patch_name = os.path.join (outdir, '%s-%s-%s.diff' % (package.name,
- version_tuple_to_str (flags.from_version),
- version_tuple_to_str (flags.to_version)))
-
- patch_name = compat_abspath (patch_name)
-
-from_diff = package_diff_dir + from_diff
-to_diff = package_diff_dir + to_diff
-
-if not from_src:
- os.chdir (package_diff_dir)
- untar (released_tarball (flags.from_version))
- os.chdir (original_dir)
-else:
- sys.stderr.write ('copying ' + from_src + ' to ' + from_diff + '\n')
- # system ('cp -pr %s %s' % (srcdir, from_diff))
- system ('mkdir -p %s '% (from_diff))
- os.chdir (from_src)
- system ('tar cf - --exclude out --exclude out-www . \
- | tar -xf - -C %s' % from_diff)
-
-
-if not to_src:
- os.chdir (package_diff_dir)
- untar (released_tarball (flags.to_version))
- os.chdir (original_dir)
-else:
- sys.stderr.write ('copying ' + to_src + ' to ' + to_diff + '\n')
- system ('mkdir -p %s '% (to_diff))
- # system ('cp -pr %s %s' (to_src, to_diff))%
- os.chdir (to_src)
- system ('tar -cf - --exclude out --exclude out-www . \
- . | tar -xf - -C %s ' % to_diff)
-
-os.chdir (to_diff)
-makediff (from_diff, to_diff, patch_name)
-
-cleanup ()
-
SUBDIRS =
#
-STEPMAKE_TEMPLATES=makedir install www
+STEPMAKE_TEMPLATES=makedir install
# bootstrap stepmake:
#
-.PHONY : all clean config default diff dist doc exe help html lib TAGS\
+.PHONY : all clean config default dist doc exe help html lib TAGS\
po
all: default
$(MAKE) local-distclean
-# configure:
-#
+# This doesn't allow command-line options, is it really useful? -jm
config:
./$(src-depth)/configure
-#
-# target help:
-#
generic-help:
@echo -e "\
Makefile for $(PACKAGE_NAME) $(TOPLEVEL_VERSION)\n\
Usage: make ["VARIABLE=value"]... [TARGET]\n\
\n\
-Targets:\n"
+Targets specific to current directory:\n"
help: generic-help local-help
- @echo -e "\
- all update everything\n\
- clean remove all generated stuff in $(outdir)\n\
- check run self tests\n\
+ @echo -e "Generic targets:\n\
+ all * update everything except website documentation\n\
+ clean * remove all generated stuff in $(outdir)\n\
default same as the empty target\n\
exe update all executables\n\
help this help\n\
- install install programs and data (prefix=$(prefix))\n\
+ install * install programs and data (prefix=$(prefix))\n\
lib update all libraries\n\
- web update website in directory \`out-www'\n\
- web-install install website documentation in (webdir=$(webdir))\n\
- web-clean clean \`out-www' directory\n\
+ web * update website in directory \`out-www'\n\
+ web-install * install website documentation in (webdir=$(webdir))\n\
+ and Info documentation with images\n\
+ web-clean * clean \`out-www' directory\n\
TAGS generate tagfiles\n\
\n\
\`make' may be invoked from any subdirectory.\n\
-Note that all commands recurse into subdirectories;\n\
+Note that all commands marked with a star (*) recurse into subdirectories;\n\
prepend \`local-' to restrict operation to the current directory.\n\
-Example: \`local-clean'.\n"
+Example: \`local-clean'."
-# "
local-help:
local-dist: $(DIST_FILES) $(OUT_DIST_FILES) $(NON_ESSENTIAL_DIST_FILES)
touch $@ # do something for multiple simultaneous configs.
-deb:
- $(MAKE) -C $(depth)/debian
- cd $(depth) && debuild
-
-diff:
- $(PYTHON) $(step-bindir)/package-diff.py --outdir=$(top-src-dir)/$(outdir) --package=$(top-src-dir) $(makeflags)
- -ln -f $(depth)/$(outdir)/$(distname).diff.gz $(patch-dir)
-
-release:
- $(PYTHON) $(step-bindir)/release.py --outdir=$(top-src-dir)/$(outdir) --package=$(top-src-dir)
-
-
################ website.
local-WWW:
-$(foreach i, $(TEXINFO_SOURCES), echo q | emacs --batch --no-site-file $(i) --eval $(TEXINFO_ALL_MENUS_UPDATE_EL); )
$(foreach i, $(sort $(TEXINFO_SOURCES)), if diff -u $(i)~ $(i); then mv $(i)~ $(i); fi && ) true
+local-help: local-texinfo-help
+
+local-texinfo-help:
+ @echo -e "\
+ info [out=www] update Info documentation (use \`out=www' for having images)\n\
+ install-info [out=www] install Info documentation (idem)\n\
+ texinfo-all-menus-update update node menus in Texinfo source files (use with caution)\n"
-include $(stepdir)/www-targets.make
-
local-dist: configure
local-distclean:
(cd ./$(depth)/$(outdir); $(TAR) -cf - --owner=0 --group=0 $(DIST_NAME) | gzip -9 > $(DIST_NAME).tar.gz)
rm -rf $(distdir)/
-#
-#
local-help:
@echo -e "\
config rerun configure\n\
- deb build Debian package\n\
- diff generate patch: $(depth)/$(outdir)/$(distname).diff.gz\n\
- . Options:\n\
- . from=0.1.74\n\
- . help==\n\
- . release==\n\
- . to=0.1.74.jcn2\n\
dist roll tarball: $(depth)/$(outdir)/$(distname).tar.gz\n\
distclean also remove configure output\n\
doc update all documentation (without images)\n\
cvs-clean also remove out directories and generated files\n\
- info update info docs (without images)\n\
- info out=www update info docs with images\n\
maintainerclean also remove distributed generated files\n\
po make new translation Portable Object database\n\
po-replace do po-update and replace catalogs with msgmerged versions\n\
po-update update translation Portable Object database\n\
- release roll tarball and generate patch\n\
\n\
-Some of these top level targets (diff, dist, release) can be issued\n\
-from anywhere in the source tree.\n\
-"\
-#
+Some more targets are available for testing changes:\n\
+ test-baseline check test-redo test-clean\n\
+For more information on these targets, see Testing LilyPond\n\
+in Application Usage documentation.\n"
+++ /dev/null
-# moved to generic-targets.make
\ No newline at end of file