# -*-python-*-
-import glob
import os
-import re
-import sys
-
-here = os.getcwd ()
-reldir = str (Dir ('.').srcnode ())
-os.chdir (reldir)
-sources = glob.glob ('*.tely')
-pngs = glob.glob ('*.png')
-os.chdir (here)
-
-Import ('env')
-e = env.Copy ()
-outdir = os.path.join (env['build'], reldir, env['out'])
-
-# Too late
-e.Append (LILYPOND_BOOK_PATH = [os.path.join (env['srcdir'], reldir, 'user')])
-e['LILYPOND_BOOK_PATH'].append (os.path.join (env['srcdir'], reldir, 'user'))
-
-def verbose_opt (env, opt):
- if env['verbose']:
- return opt
- return ''
-
-LILYPOND_BIN = env['LILYPOND_BIN']
-LILYPONDPREFIX = env['LILYPONDPREFIX']
-
-mfbuild = os.path.join (env['absbuild'], 'mf', env['out'])
-lilybuild = os.path.join (env['absbuild'], 'lily', env['out'])
-userbuild = os.path.join (env['absbuild'], 'Documentation/user', env['out'])
-e.Depends ('lilypond.texi', os.path.join (mfbuild, 'feta16list.ly'))
-e.Depends ('lilypond.texi', os.path.join (mfbuild, 'parmesan16list.ly'))
-e.Depends ('lilypond.texi', LILYPOND_BIN)
-e.Depends ('lilypond.texi', 'lilypond-internals.texi')
-#e.Depends ('lilypond.texi', os.path.join (lilybuild, 'lilypond-bin'))
-
-png_stems = map (lambda x: os.path.splitext (x)[0], pngs)
-epss = map (e.Png2eps, png_stems)
-e.Depends ('lilypond.texi', epss)
-
-e.Command ('lilypond-internals.texi', LILYPOND_BIN,
- ('(cd ${TARGET.dir} && \
- LILYPONDPREFIX=%(LILYPONDPREFIX)s %(LILYPOND_BIN)s ' \
- + verbose_opt (env, ' --verbose') \
- + ' ' + os.path.join (env['srcdir'], 'ly/generate-documentation')\
- + ')') % vars ())
-
-doc_stems = map (lambda x: os.path.splitext (x)[0], sources)
-texis = map (e.Tely2texi, doc_stems)
-dvis = map (e.Texi2dvi, doc_stems)
-pss = map (e.PostScript, map (lambda x: x + '.dvi', doc_stems))
-pdfs = map (e.Dvi2pdf, doc_stems)
+import string
+Import ('env', 'base_glob', 'src_glob')
+tely = base_glob ('*.tely')
+png = src_glob ('*.png') + map (env.EPS2PNG, base_glob ('*.eps'))
+
+# We need lily and mf to build these.
+env.Depends ('lilypond.texi', ['#/lily', '#/mf', '#/python'])
+env.Depends ('music-glossary.texi', ['#/lily', '#/mf', '#/python'])
+
+env.Depends ('lilypond.texi', 'lilypond-internals.texi')
+
+eps = src_glob ('*.eps') + map (env.PNG2EPS, base_glob ('*.png'))
+env.Depends ('lilypond.texi', eps + png)
+
+lilypond_book_flags = '''--format=$LILYPOND_BOOK_FORMAT --process="lilypond -I$srcdir/input/manual/ $__verbose --backend=eps --formats=ps,png --header=texidoc -dinternal-type-checking -ddump-signatures -danti-alias-factor=2 -dgs-font-load" '''
+e = env.Copy (
+# LILYPOND_BOOK_FLAGS = '''--process="lilypond --backend=eps --formats=ps,png --header=texidoc -I#/input/manual -e '(ly:set-option (quote internal-type-checking) \#t)'"''',
+ LILYPOND_BOOK_FLAGS = lilypond_book_flags,
+ __verbose = ' --verbose',
+ GENERATE_DOCUMENTATION = '$srcdir/ly/generate-documentation',
+ ## TEXI2DVI_FLAGS = ['-I#Documentation/user'],
+ )
+
+e.Command ('lilypond-internals.texi', ['#/lily', '#/mf', '#/python'],
+ 'cd ${TARGET.dir} && $LILYPOND $GENERATE_DOCUMENTATION')
+
+## FIXME: implicit steps from [TE]LY -> PDF
+texi = map (env.TEXI, tely)
+dvi = map (env.TEXIDVI, tely)
+ps = map (env.DVIPS, tely) ###map (lambda x: x + '.dvi', tely))
+dvipdf = map (env.DVIPDF, tely)
+pdf = map (env.PSPDF, dvipdf)
+
+# FIXME: install
+info = map (env.INFO, tely)
def file_subst (file_name, find, subst):
- find_re = re.compile (find, re.MULTILINE)
s = open (file_name).read ()
- t = re.sub (find_re, subst, s)
+ t = string.replace (s, find, subst)
if s != t:
os.rename (file_name, file_name + '~')
h = open (file_name, "w")
h.write (t)
h.close ()
-docdir = os.path.join (env['srcdir'], 'Documentation')
-out = env['out']
-srcdir = env['srcdir']
-verbose = verbose_opt (env, ' --verbose')
-a = ('makeinfo -I%(reldir)s -I${SOURCE.dir}'\
- + ' --output=${TARGET.dir}'\
- + ' --css-include=%(docdir)s/texinfo.css'\
- + ' --html%(verbose)s'\
- + ' $SOURCE &&' \
- + ' makeinfo -I%(reldir)s -I${SOURCE.dir}' \
- + ' --output=$TARGET' \
- + ' --css-include=%(docdir)s/texinfo.css' \
- + ' --html --no-split --no-headers %(verbose)s' \
- + ' $SOURCE') % vars ()
-def url_fixup (target, source, env):
- file_subst (str (target[0]),
- '\.\./lilypond-internals', 'lilypond-internals/')
-c = 'pwd; ln -f %(userbuild)s/*.png %(userbuild)s/*.ly ${TARGET.dir}/' % vars ()
-e.Command ('lilypond/lilypond.html', 'lilypond.texi', [a, url_fixup, c])
-e.Command ('lilypond-internals/lilypond-internals.html',
- 'lilypond-internals.texi', a)
-
-e.Alias ('doc', texis)
-e.Alias ('doc', dvis)
-e.Alias ('doc', pss)
-e.Alias ('doc', pdfs)
-
-e.Alias ('doc', 'lilypond-internals/lilypond.html')
-e.Alias ('doc', 'lilypond-internals/lilypond-internals.html')
-
-#testing
-all_sources = ['SConscript',] + sources + pngs
-x = env.Tar (env['tarball'], all_sources)
+e['usersrc'] = Dir ('.').srcnode ().abspath
+e['userout'] = Dir ('.').abspath
+
+a = ['$MAKEINFO -I$usersrc -I${SOURCE.dir} --html \
+ --css-include=$srcdir/Documentation/texinfo.css $__verbose \
+ --output=${TARGET.dir} $SOURCE',
+ 'ln -f ${SOURCE.dir}/*.png ${SOURCE.dir}/*.ly ${TARGET.dir}/',]
+
+e.Command ('lilypond/index.html', 'lilypond.texi', a)
+e.Command ('lilypond-internals/index.html', 'lilypond-internals.texi', a)
+e.Command ('music-glossary/index.html', 'music-glossary.texi', a)
+
+a = ['$MAKEINFO -I$usersrc -I${SOURCE.dir} --html \
+ --no-split --no-headers \
+ --css-include=$srcdir/Documentation/texinfo.css $__verbose \
+ --output=$TARGET $SOURCE']
+
+e.Command ('lilypond.html', 'lilypond.texi', a)
+e.Command ('lilypond-internals.html', 'lilypond-internals.texi', a)
+e.Command ('music-glossary.html', 'music-glossary.texi', a)
+
+#Hmm -- why not just mv ./Documentation/{*,*/*} ./doc :-)
+env.Alias ('doc', texi)
+env.Alias ('doc', dvi)
+env.Alias ('doc', ps)
+env.Alias ('doc', pdf)
+
+env.Alias ('doc', 'lilypond/index.html')
+env.Alias ('doc', 'lilypond-internals/index.html')
+env.Alias ('doc', 'lilypond.html')
+env.Alias ('doc', 'lilypond-internals.html')
+
+# install ('lilypond/*', env['sharedir_doc_package'] + '/html')
+# install ('lilypond-user/*', env['sharedir_doc_package'] + '/html')