ENV = ENV,
BASH = '/bin/bash',
+ CPPDEFINES = '-DHAVE_CONFIG_H',
PERL = '/usr/bin/perl',
PYTHON = '/usr/bin/python',
SH = '/bin/sh',
cachedir = os.path.join (outdir, 'build-cache')
-if not os.path.exists(cachedir):
- os.makedirs(cachedir)
+if not os.path.exists (cachedir):
+ os.makedirs (cachedir)
-CacheDir (os.path.join (outdir, 'build-cache'))
+CacheDir (cachedir)
# No need to set $LILYPONDPREFIX to run lily, but cannot install...
if env['debugging'] and not 'install' in COMMAND_LINE_TARGETS:
def configure (target, source, env):
vre = re.compile ('^.*[^-.0-9]([0-9][0-9]*\.[0-9][.0-9]*).*$', re.DOTALL)
def get_version (program):
- command = '(%(program)s --version || %(program)s -V) 2>&1' % vars ()
+ command = '(pkg-config --modversion %(program)s || %(program)s --version || %(program)s -V) 2>&1' % vars ()
pipe = os.popen (command)
output = pipe.read ()
if pipe.close ():
return None
v = re.sub (vre, '\\1', output)
+ if v[-1] == '\n':
+ v = v[:-1]
return string.split (v, '.')
def test_program (lst, program, minimal, description, package):
print 'not found'
lst.append ((description, package, minimal, program,
'not installed'))
- return
+ return 0
sys.stdout.write (string.join (actual, '.'))
sys.stdout.write ('\n')
if actual < string.split (minimal, '.'):
lst.append ((description, package, minimal, program,
string.join (actual, '.')))
+ return 0
+ return 1
+
+ def test_lib (lst, program, minimal, description):
+ # FIXME: test for Debian or RPM (or -foo?) based dists
+ # to guess (or get correct!: apt-cache search?)
+ # package name.
+ #if os.system ('pkg-config --atleast-version=0 freetype2'):
+ # barf
+ if test_program (lst, program, minimal, description,
+ 'lib%(program)s-dev or %(program)s-devel'
+ % vars ()):
+ env.ParseConfig ('pkg-config --cflags --libs %(program)s'
+ % vars ())
+ return 1
+ return 0
for i in ['bash', 'perl', 'python', 'sh']:
sys.stdout.write ('Checking for %s... ' % i)
'bison')
test_program (required, 'flex', '0.0', 'Flex -- lexer generator', 'flex')
-
optional = []
test_program (optional, 'makeinfo', '4.7', 'Makeinfo tool', 'texinfo')
- test_program (optional, 'guile', '1.6', 'GUILE scheme',
- 'libguile-dev or guile-devel')
- test_program (optional, 'mftrace', '1.0.27', 'Metafont tracing Type1',
+ test_program (optional, 'guile', '1.6', 'GUILE scheme', 'guile')
+ test_program (optional, 'mftrace', '1.1.0', 'Metafont tracing Type1',
'mftrace')
test_program (optional, 'perl', '4.0',
'Perl practical efficient readonly language', 'perl')
defines = {
'DIRSEP' : "'%s'" % os.sep,
'PATHSEP' : "'%s'" % os.pathsep,
- 'TOPLEVEL_VERSION' : '"' + version + '"',
- 'PACKAGE': '"' + package.name + '"',
- 'DATADIR' : '"' + sharedir + '"',
- 'LILYPOND_DATADIR' : '"' + sharedir_package + '"',
- 'LOCAL_LILYPOND_DATADIR' : '"' + sharedir_package_version + '"',
- 'LOCALEDIR' : '"' + localedir + '"',
+ 'PACKAGE': '"%s"' % package.name,
+ 'DATADIR' : '"%s"' % sharedir,
+ 'PACKAGE_DATADIR' : '"%s"' % sharedir_package,
+ 'LOCALEDIR' : '"%s"' %localedir,
}
conf.env.Append (DEFINES = defines)
else:
env.Append (CPPPATH = PYTHON_INCLUDE)
- headers = ('sys/stat.h', 'assert.h', 'kpathsea/kpathsea.h', 'Python.h')
+ headers = ('sys/stat.h', 'assert.h', 'kpathsea/kpathsea.h', 'libio.h',
+ 'Python.h')
for i in headers:
if conf.CheckCHeader (i):
key = re.sub ('[./]', '_', 'HAVE_' + string.upper (i))
key = re.sub ('[./]', '_', 'HAVE_' + string.upper (i))
conf.env['DEFINES'][key] = 1
- functions = ('gettext', 'isinf', 'memmem', 'snprintf', 'vsnprintf')
+ functions = ('fopencookie', 'funopen',
+ 'gettext', 'isinf', 'memmem', 'snprintf', 'vsnprintf')
for i in functions:
if 0 or conf.CheckFunc (i):
key = re.sub ('[./]', '_', 'HAVE_' + string.upper (i))
if conf.CheckLib ('kpathsea', 'kpse_find_tfm'):
conf.env['DEFINES']['HAVE_KPSE_FIND_TFM'] = '1'
+ # FIXME fc3 - move to kpath-guile/SConscript?
+ conf.env['DEFINES']['HAVE_LIBKPATHSEA_SO'] = '1'
+
if env['fast']:
cpppath = []
if env.has_key ('CPPPATH'):
#this could happen after flower...
env.ParseConfig ('guile-config compile')
+ if test_lib (required, 'freetype2', '0.0',
+ 'Development files for FreeType 2 font engine'):
+ conf.env['DEFINES']['HAVE_FREETYPE2'] = '1'
+
+ if test_lib (required, 'pangoft2', '1.6.0',
+ 'Development files for pango, with fontconfig2'):
+ conf.env['DEFINES']['HAVE_PANGO_FT2'] = '1'
+ conf.env['DEFINES']['HAVE_PANGO16'] = '1'
+
+ if test_lib (optional, 'fontconfig', '2.2.0',
+ 'Development files for fontconfig'):
+ conf.env['DEFINES']['HAVE_FONTCONFIG'] = '1'
+
#this could happen only for compiling pango-*
if env['gui']:
- env.ParseConfig ('pkg-config --cflags --libs gtk+-2.0')
- env.ParseConfig ('pkg-config --cflags --libs pango')
+ test_lib (required, 'gtk+-2.0', '2.4.0',
+ 'Development files for GTK+')
+ if test_lib (required, 'pango', '1.6.0',
+ 'Development files for pango'):
+ conf.env['DEFINES']['HAVE_PANGO16'] = '1'
+
if conf.CheckCHeader ('pango/pangofc-fontmap.h'):
conf.env['DEFINES']['HAVE_PANGO_PANGOFC_FONTMAP_H'] = '1'
-
if conf.CheckLib ('pango-1.0',
'pango_fc_font_map_add_decoder_find_func'):
- conf.env['DEFINES']['HAVE_PANGO_CVS'] = '1'
+ conf.env['DEFINES']['HAVE_PANGO16'] = '1'
conf.env['DEFINES']['HAVE_PANGO_FC_FONT_MAP_ADD_DECODER_FIND_FUNC'] = '1'
if env['fast']:
run_prefix = run_prefix,
LILYPONDPREFIX = os.path.join (run_prefix, 'share/lilypond'),
- LIBPATH = [os.path.join (absbuild, 'flower', env['out']),],
+ # FIXME: move to lily/SConscript?
+ LIBPATH = [os.path.join (absbuild, 'flower', env['out']),
+ os.path.join (absbuild, 'kpath-guile', env['out']),
+ os.path.join (absbuild, 'ttftool', env['out']),],
CPPPATH = [outdir, ],
LILYPOND_PATH = ['.', '$srcdir/input',
'$srcdir/input/regression',
os.symlink (frm, os.path.basename (dst))
shutil.rmtree (run_prefix)
prefix = os.path.join (env['out'], 'usr')
- map (lambda x: symlink (x[0], os.path.join (prefix, x[1])),
+ map (lambda x: symlink (x[0], os.path.join (prefix,
+ x[1] % {'ver' : version})),
# ^# := source dir
# @ := out
# /$ := add dst file_name
(('python', 'lib/lilypond/python'),
- ('lily/', 'bin/lilypond-bin'),
- ('scripts/', 'bin/lilypond'),
+ ('lily/', 'bin/lilypond'),
+ ('scripts/', 'bin/convert-ly'),
('scripts/', 'bin/lilypond-book'),
- ('mf', 'share/lilypond/dvips/mf-out'),
- ('#ps', 'share/lilypond/dvips/ps'),
- ('#ps', 'share/lilypond/tex/music-drawing-routines.ps'),
- ('mf', 'share/lilypond/otf'),
- ('mf', 'share/lilypond/tfm'),
- ('tex', 'share/lilypond/tex/enc'),
- ('#mf', 'share/lilypond/fonts/mf'),
- ('mf', 'share/lilypond/fonts/map'),
- ('mf', 'share/lilypond/fonts/otf'),
- ('mf', 'share/lilypond/fonts/tfm'),
- ('mf', 'share/lilypond/fonts/type1'),
- ('#tex', 'share/lilypond/tex/source'),
- ('tex', 'share/lilypond/tex/tex-out'),
- ('mf', 'share/lilypond/tex/mf-out'),
- ('#ly', 'share/lilypond/ly'),
- ('#scm', 'share/lilypond/scm'),
- ('#ps', 'share/lilypond/ps'),
+ ('scripts/', 'bin/ps2png'),
+ ('mf', 'share/lilypond/%(ver)s/dvips/mf-out'),
+ ('#ps', 'share/lilypond/%(ver)s/dvips/ps'),
+ ('#ps', 'share/lilypond/%(ver)s/tex/music-drawing-routines.ps'),
+ ('mf', 'share/lilypond/%(ver)s/otf'),
+ ('mf', 'share/lilypond/%(ver)s/tfm'),
+ ('tex', 'share/lilypond/%(ver)s/tex/enc'),
+ ('#mf', 'share/lilypond/%(ver)s/fonts/mf'),
+ ('mf', 'share/lilypond/%(ver)s/fonts/map'),
+ ('mf', 'share/lilypond/%(ver)s/fonts/otf'),
+ ('mf', 'share/lilypond/%(ver)s/fonts/tfm'),
+ ('mf', 'share/lilypond/%(ver)s/fonts/type1'),
+ ('#tex', 'share/lilypond/%(ver)s/tex/source'),
+ ('tex', 'share/lilypond/%(ver)s/tex/tex-out'),
+ ('mf', 'share/lilypond/%(ver)s/tex/mf-out'),
+ ('#ly', 'share/lilypond/%(ver)s/ly'),
+ ('#scm', 'share/lilypond/%(ver)s/scm'),
+ ('#scripts', 'share/lilypond/%(ver)s/scripts'),
+ ('#ps', 'share/lilypond/%(ver)s/ps'),
('po/@/nl.mo', 'share/locale/nl/LC_MESSAGES/lilypond.mo'),
- ('elisp', 'share/lilypond/elisp')))
+ ('elisp', 'share/lilypond/%(ver)s/elisp')))
os.chdir (srcdir)
if env['debugging']:
and 'web' not in COMMAND_LINE_TARGETS\
and 'install' not in COMMAND_LINE_TARGETS\
and 'clean' not in COMMAND_LINE_TARGETS:
- subdirs = ['lily', 'lily/include', 'flower', 'flower/include', 'mf']
+ subdirs = ['lily', 'lily/include',
+ 'flower', 'flower/include',
+ 'kpath-guile',
+ 'ttftool',
+ 'mf',
+ ]
else:
subdirs = flatten (cvs_dirs ('.'), [])