10 srcdir
= env
['srcdir']
12 def join_path (path
, infix
=os
.pathsep
, prefix
= ''):
17 return string
.join (map (lambda x
: prefix
+ dir (x
), path
), infix
)
19 env
['MAKEINFO_INCLUDES'] = join_path (env
['MAKEINFO_PATH'], '', ' -I')
20 a
= '$MAKEINFO $__verbose $MAKEINFO_INCLUDES --no-split --no-headers \
21 --output=$TARGET $SOURCE'
22 TXT
= Builder (action
= a
, suffix
= '.txt', src_suffix
= '.texi')
23 env
.Append (BUILDERS
= {'TXT': TXT
})
25 a
= '$MAKEINFO $__verbose $MAKEINFO_INCLUDES --output=$TARGET $SOURCE'
26 INFO
= Builder (action
= a
, suffix
= '.info', src_suffix
= '.texi')
27 env
.Append (BUILDERS
= {'INFO': INFO
})
29 a
= '$MAKEINFO $__verbose $MAKEINFO_INCLUDES --html --no-split --no-headers \
30 --css-include=$srcdir/Documentation/texinfo.css --output=$TARGET $SOURCE'
31 HTML
= Builder (action
= a
, suffix
= '.html', src_suffix
= '.texi')
32 env
.Append (BUILDERS
= {'HTML': HTML
})
35 env
['LILYPOND_BOOK_INCLUDES'] = join_path (env
['LILYPOND_BOOK_PATH'], '',
38 # UGHR, lilypond.py uses lilypond-bin from PATH
39 env
.PrependENVPath ('PATH',
40 os
.path
.join (env
['absbuild'], env
['out'], 'usr/bin'))
42 if os
.environ
.has_key ('TEXMF'):
43 env
.Append (ENV
= {'TEXMF' : os
.environ
['TEXMF']})
44 env
.Append (ENV
= {'TEXMF' : '{' + env
['LILYPONDPREFIX'] + ',' \
45 + os
.popen ('kpsexpand \$TEXMF').read ()[:-1] + '}' })
47 if os
.environ
.has_key ('LD_LIBRARY_PATH'):
48 env
.Append (ENV
= {'LD_LIBRARY_PATH' : os
.environ
['LD_LIBRARY_PATH']})
49 if os
.environ
.has_key ('GUILE_LOAD_PATH'):
50 env
.Append (ENV
= {'GUILE_LOAD_PATH' : os
.environ
['GUILE_LOAD_PATH']})
52 env
.Append (PYTHONPATH
= [os
.path
.join (env
['absbuild'], env
['out'],
54 os
.path
.join (srcdir
, 'buildscripts'),
55 os
.path
.join (srcdir
, 'python')])
56 env
.Append (ENV
= { 'PYTHONPATH' : string
.join (env
['PYTHONPATH'],
59 a
= ['rm -f $$(grep -LF "\lilypondend" ${TARGET.dir}/lily-*.tex 2>/dev/null);',
60 'LILYPONDPREFIX=$LILYPONDPREFIX \
61 $PYTHON $LILYPOND_BOOK $__verbose \
62 --include=${TARGET.dir} $LILYPOND_BOOK_INCLUDES \
63 --process="$LILYPOND_BIN $LILYPOND_BOOK_INCLUDES" \
64 --output=${TARGET.dir} --format=$LILYPOND_BOOK_FORMAT \
65 $LILYPOND_BOOK_FLAGS \
67 TEXI
= Builder (action
= a
, suffix
= '.texi', src_suffix
= '.tely')
68 env
.Append (BUILDERS
= {'TEXI': TEXI
})
70 a
= 'cd ${TARGET.dir} \
71 && texi2dvi --batch $TEXINFO_PAPERSIZE_OPTION ${SOURCE.file}'
72 texi2dvi
= Builder (action
= a
, suffix
= '.dvi', src_suffix
= '.texi')
73 env
.Append (BUILDERS
= {'Texi2dvi': texi2dvi
})
75 env
.Append (DVIPSFLAGS
= '-Ppdf -u+lilypond.map -u+ec-mftrace.map')
77 env
['DVIPS_PAPERSIZE'] = 'a4'
78 a
= ['dvips $DVIPSFLAGS -o ${TARGET}.pdfps -t $DVIPS_PAPERSIZE $SOURCE',
79 'ps2pdf -sPAPERSIZE=$DVIPS_PAPERSIZE ${TARGET}.pdfps $TARGET']
80 dvi2pdf
= Builder (action
= a
, suffix
= '.pdf', src_suffix
= '.dvi')
81 env
.Append (BUILDERS
= {'Dvi2pdf': dvi2pdf
})
83 a
= 'convert $SOURCE $TARGET'
84 png2eps
= Builder (action
= a
, suffix
= '.eps', src_suffix
= '.png')
85 env
.Append (BUILDERS
= {'Png2eps': png2eps
})
87 def add_ps_target (target
, source
, env
):
88 base
= os
.path
.splitext (str (target
[0]))[0]
89 return (target
+ [base
+ '.ps'], source
)
91 #debug = 'echo "PATH=$$PATH";'
93 a
= debug
+ 'LILYPONDPREFIX=$LILYPONDPREFIX \
94 $PYTHON $LILYPOND_PY $__verbose \
95 --include=${TARGET.dir} \
96 --output=${TARGET.base} $SOURCE'
97 lilypond
= Builder (action
= a
, suffix
= '.pdf', src_suffix
= '.ly')
98 ## emitter = add_ps_target)
99 env
.Append (BUILDERS
= {'LilyPond': lilypond
})
101 #verbose = verbose_opt (env, ' --verbose')
103 a
= debug
+ 'LILYPONDPREFIX=$LILYPONDPREFIX $PYTHON $ABC2LY_PY \
104 --strict --output=${TARGET} $SOURCE'
105 ABC
= Builder (action
= a
, suffix
= '.ly', src_suffix
= '.abc')
106 env
.Append (BUILDERS
= {'ABC': ABC
})
108 def add_log_target (target
, source
, env
):
109 base
= os
.path
.splitext (str (target
[0]))[0]
110 return (target
+ [base
+ '.log'], source
)
112 def add_enc_ly_tex_target (target
, source
, env
):
113 base
= os
.path
.splitext (str (target
[0]))[0]
114 return (target
+ [base
+ '.enc', base
+ '.tex', base
+ 'list.ly'],
117 def add_suffixes (target
, source
, env
, target_suffixes
, src_suffixes
):
118 base
= os
.path
.splitext (str (target
[0]))[0]
119 return (target
+ map (lambda x
: base
+ x
, target_suffixes
),
120 source
+ map (lambda x
: base
+ x
, src_suffixes
))
122 a
= 'cd ${TARGET.dir} && \
123 MFINPUTS=.:${SOURCE.dir}:$srcdir/${SOURCE.dir} \
124 mf "\\mode:=$MFMODE; nonstopmode; input ${SOURCE.filebase};" \
126 tfm
= Builder (action
= a
, suffix
= '.tfm', src_suffix
= '.mf',
127 # emitter = lambda t, s, e: add_suffixes (t, s, e, ['.log'], []))
128 emitter
= add_log_target
)
129 env
.Append (BUILDERS
= {'TFM': tfm
})
131 a
= '$PYTHON $MF_TO_TABLE_PY \
132 --outdir=${TARGET.dir} \
133 --afm=${TARGET.base}.afm \
134 --enc=${TARGET.base}.enc \
135 --tex=${TARGET.base}.tex \
136 --ly=${TARGET.base}list.ly \
138 afm
= Builder (action
= a
, suffix
= '.afm', src_suffix
= '.log',
139 emitter
= add_enc_ly_tex_target
)
140 env
.Append (BUILDERS
= {'AFM': afm
})
142 def add_enc_src (target
, source
, env
):
143 base
= os
.path
.splitext (str (target
[0]))[0]
144 return (target
, source
+ [base
+ '.enc'])
146 # UGH, should fix --output option for mftrace
147 a
= 'cd ${TARGET.dir} && \
148 if test -e ${SOURCE.filebase}.enc; then encoding="--encoding=${SOURCE.filebase}.enc"; fi; \
149 MFINPUTS=$srcdir/mf:.: \
150 mftrace --pfa --simplify --keep-trying $$encoding $__verbose \
151 --include=${TARGET.dir} \
154 pfa
= Builder (action
= a
,
157 emitter
= add_enc_src
)
158 env
.Append (BUILDERS
= {'PFA': pfa
})
160 env
['DIFF_PY'] = os
.path
.join (srcdir
, 'stepmake/bin/package-diff.py')
161 a
= '$PYTHON $DIFF_PY $__verbose --outdir=${TARGET.dir}'
162 patch
= Builder (action
= a
, suffix
= '.diff', src_suffix
= '.tar.gz')
163 env
.Append (BUILDERS
= {'PATCH': patch
})
165 def src_glob (env
, s
):
167 os
.chdir (env
.Dir ('.').srcnode ().abspath
)
168 result
= glob
.glob (s
)
171 env
['src_glob'] = src_glob
173 def base_glob (env
, s
):
174 return map (lambda x
: os
.path
.splitext (x
)[0], src_glob (env
, s
))
175 env
['glob'] = base_glob
187 'local_lilypond_datadir',
188 'local_lilypond_libdir',
204 def at_copy (target
, source
, env
):
205 s
= open (str (source
[0])).read ()
208 s
= string
.replace (s
, '@%s@'% i
, env
[i
])
210 open (t
, 'w').write (s
)
212 if os
.path
.basename (os
.path
.dirname (str (target
[0]))) == 'bin':
215 AT_COPY
= Builder (action
= at_copy
)
216 env
.Append (BUILDERS
= {'AT_COPY': AT_COPY
})
218 MO
= Builder (action
= '$MSGFMT -o $TARGET $SOURCE',
219 suffix
= '.mo', src_suffix
= '.po')
220 env
.Append (BUILDERS
= {'MO': MO
})
222 a
= 'xgettext --default-domain=lilypond --join \
223 --output-dir=${TARGET.dir} --add-comments \
224 --keyword=_ --keyword=_f --keyword=_i $SOURCES'
225 POT
= Builder (action
= a
, suffix
= '.pot')
226 #env.Append (BUILDERS = {'POT': POT})
227 #env.Command(env['absbuild'] + '/po/' + env['out'] + '/lilypond.pot',
228 env
['pottarget'] = os
.path
.join (env
['absbuild'], 'po', env
['out'],
230 env
['potcommand'] = a
232 a
= 'msgmerge ${SOURCE} ${TARGET.dir}/lilypond.pot -o ${TARGET}'
233 POMERGE
= Builder (action
= a
, suffix
= '.pom', src_suffix
= '.po')
234 env
.Append (BUILDERS
= {'POMERGE': POMERGE
})