import sys
import os

Import('env', 'pyoutput')

# make sure numpy headers are available
npdirs = pyoutput(
    'from numpy.distutils.misc_util import get_numpy_include_dirs\n'
    'print "\\n".join(get_numpy_include_dirs())')
npdirs = map(str.strip, npdirs.split('\n'))
env.AppendUnique(CPPPATH=npdirs)

# configure the boost_python library, which may have different extensions
if not (GetOption('clean') or env.GetOption('help')):
    SConscript('SConscript.configure')

# python extension module
module = env.SharedLibrary('_pyobjcryst', Glob('*.cpp'),
        SHLIBPREFIX='', SHLIBSUFFIX='.so')
Alias('module', module)

# install in a development mode
egginfo = env.Command('#/pyobjcryst.egg-info', None,
        '$python setup.py egg_info')
develop = Alias('develop', [egginfo, Install('#/pyobjcryst', module)])

test = env.Alias('test', develop,
        '$python -m pyobjcryst.tests.run')
AlwaysBuild(test)

# normal install - trick distutils into using this module.
build_platlib = pyoutput('\n'.join([
    "from distutils.core import Distribution",
    "from distutils.command.build import build",
    "bcmd = build(Distribution())",
    "bcmd.finalize_options()",
    "print bcmd.build_platlib",
    ]))
distmodfile = os.path.join(build_platlib,
    'pyobjcryst', os.path.basename(str(module[0])))
cmd_install = '$python setup.py install'
if 'prefix' in env:
    cmd_install += ' --prefix=' + env['prefix']
install = env.Alias('install', module, [
    Mkdir(os.path.dirname(distmodfile)),
    Copy(distmodfile, '$SOURCE'),
    Touch(distmodfile),
    cmd_install,
    ])
AlwaysBuild(install)

# default targets:
Default(module)

# vim: ft=python
