]> git.donarmstrong.com Git - lilypond.git/blob - buildscripts/builder.py
b614e9d1a5a47b5c877c35d283ca73900b9fbdb6
[lilypond.git] / buildscripts / builder.py
1 # -*-python-*-
2
3 import os
4 import string
5
6 Import ('env')
7
8 def verbose_opt (env, opt):
9         if env['verbose']:
10                 return opt
11         return ''
12
13 srcdir = env['srcdir']
14 build = env['build']
15 def join_path (path, infix=os.pathsep, prefix = ''):
16         def dir (x):
17                 if x and x[0] == '#':
18                         return srcdir + x[1:]
19                 return x
20         return string.join (map (lambda x: prefix + dir (x), path), infix)
21
22 MAKEINFO_INCLUDES = join_path (env['MAKEINFO_PATH'], '', ' -I')
23 a = env['MAKEINFO'] + verbose_opt (env, ' --verbose') \
24     + MAKEINFO_INCLUDES \
25     + ' --no-split --no-headers --output=$TARGET $SOURCE'
26
27 texi2txt = Builder (action = a, suffix = '.txt', src_suffix = '.texi')
28
29 env.Append (BUILDERS = {'Texi2txt': texi2txt})
30
31
32 PYTHON = env['PYTHON']
33 LILYPOND_BIN = env['LILYPOND_BIN']
34 LILYPOND_BOOK = env['LILYPOND_BOOK']
35 LILYPOND_BOOK_FLAGS = env['LILYPOND_BOOK_FLAGS']
36 LILYPOND_BOOK_FORMAT = env['LILYPOND_BOOK_FORMAT']
37 LILYPOND_BOOK_INCLUDES = join_path (env['LILYPOND_BOOK_PATH'], '',
38                                     ' --include=')
39 LILYPONDPREFIX = env['LILYPONDPREFIX']
40
41 env.Append (ENV = {'PATH' : os.environ['PATH']})
42 if os.environ.has_key ('LD_LIBRARY_PATH'):
43         env.Append (ENV = {'LD_LIBRARY_PATH' : os.environ['LD_LIBRARY_PATH']})
44 if os.environ.has_key ('GUILE_LOAD_PATH'):
45         env.Append (ENV = {'GUILE_LOAD_PATH' : os.environ['GUILE_LOAD_PATH']})
46
47 if os.environ.has_key ('TEXMF'):
48         env.Append (ENV = {'TEXMF' : os.environ['TEXMF']})
49 env.Append (ENV = {'TEXMF' : '{' + LILYPONDPREFIX + ',' \
50                    + os.popen ('kpsexpand \$TEXMF').read ()[:-1] + '}' })
51
52 ## + ' --output=$$(basename $TARGET) --format=%(LILYPOND_BOOK_FORMAT)s\
53 ##a = (r'''echo "NOT RM $$(grep -LF '\lilypondend' $$(dirname $TARGET)/lily-*.tex)"; ''' \
54 a = (r'''rm -f $$(grep -LF '\lilypondend' $$(dirname $TARGET)/lily-*.tex 2>/dev/null); ''' \
55      + 'LILYPONDPREFIX=%(LILYPONDPREFIX)s '\
56      + PYTHON + ' ' + LILYPOND_BOOK + verbose_opt (env, ' --verbose')\
57      + ' --include=$$(dirname $TARGET) %(LILYPOND_BOOK_INCLUDES)s'\
58      + r""" --process='%(LILYPOND_BIN)s %(LILYPOND_BOOK_INCLUDES)s'"""\
59      + ' --output=$$(dirname $TARGET) --format=%(LILYPOND_BOOK_FORMAT)s\
60      %(LILYPOND_BOOK_FLAGS)s\
61      $SOURCE') % vars ()
62 tely2texi = Builder (action = a, suffix = '.texi', src_suffix = '.tely')
63 env.Append (BUILDERS = {'Tely2texi': tely2texi})
64
65 TEXINFO_PAPERSIZE_OPTION = env['TEXINFO_PAPERSIZE_OPTION']
66 a = '(cd $$(dirname $TARGET) &&\
67  texi2dvi --batch %(TEXINFO_PAPERSIZE_OPTION)s $$(basename $SOURCE))' % vars ()
68 texi2dvi = Builder (action = a, suffix = '.dvi', src_suffix = '.texi')
69 env.Append (BUILDERS = {'Texi2dvi': texi2dvi})
70
71 env.Append (DVIPSFLAGS = '-Ppdf -u+lilypond.map -u+ec-mftrace.map')
72
73 DVIPS_PAPERSIZE = 'a4'
74 DVIPSFLAGS = env['DVIPSFLAGS']
75 a = ('set -x; dvips %(DVIPSFLAGS)s' \
76      + ' -o ${TARGET}.pdfps'\
77      + ' -t %(DVIPS_PAPERSIZE)s $SOURCE &&'\
78      + ' ps2pdf -sPAPERSIZE=%(DVIPS_PAPERSIZE)s ${TARGET}.pdfps $TARGET') \
79      % vars ()
80 dvi2pdf = Builder (action = a, suffix = '.pdf', src_suffix = '.dvi')
81 env.Append (BUILDERS = {'Dvi2pdf': dvi2pdf})
82
83 a = 'convert $SOURCE $TARGET'
84 png2eps = Builder (action = a, suffix = '.eps', src_suffix = '.png')
85 env.Append (BUILDERS = {'Png2eps': png2eps})