cantera/Cantera/matlab/SConscript

51 lines
1.7 KiB
Python

from buildutils import *
Import('env', 'buildTargets', 'installTargets')
class MatlabBuilder(object):
def __init__(self, libs):
self.libs = libs
def __call__(self, target, source, env):
filenames = [os.path.split(node.path)[1] for node in source]
sourcestr = ' '.join(pjoin('..','src',name) for name in filenames)
includes = ' '.join('-I%s' % Dir(s).abspath for s in env['CPPPATH'])
libdir = ' '.join('-L%s' % Dir(s).abspath for s in env['LIBPATH'])
libs = ' '.join('-l'+s for s in self.libs)
text = """
disp('building Cantera...');
cd cantera
mex -cxx -v -output ctmethods %(sourcestr)s %(include)s %(libdir)s %(libs)s
disp('done.');
exit
""" % dict(sourcestr=sourcestr,
include=includes,
libdir=libdir,
libs=libs)
with open(str(target[0]), 'w') as f:
f.write(text)
localenv = env.Clone()
localenv.Command('build_cantera.m',
mglob(localenv, 'src', 'cpp'),
MatlabBuilder(localenv['cantera_libs']))
localenv['ENV']['PATH'] = os.environ['PATH']
build_cmd = 'cd ${SOURCE.dir}; %(matlab_cmd)s -nojvm -nosplash -r build_cantera'
target = localenv.Command('cantera/ctmethods.mexa64',
'build_cantera.m',
build_cmd % localenv)
buildTargets.extend(target)
### Install the Matlab toolbox ###
inst = localenv.RecursiveInstall(pjoin('$prefix', 'matlab','toolbox'), 'cantera')
installTargets.extend(inst)
inst = localenv.RecursiveInstall(pjoin('$ct_tutdir', 'matlab'), 'tutorial')
installTargets.extend(inst)
inst = localenv.RecursiveInstall(pjoin('$ct_demodir', 'matlab'), 'examples')
installTargets.extend(inst)