cantera/src/matlab/SConscript

76 lines
2.6 KiB
Python

from buildutils import *
Import('env', 'build', 'install')
localenv = env.Clone()
linkflags = []
matlab_include = pjoin(localenv['matlab_path'], 'extern', 'include')
if localenv['OS'] == 'Windows':
mexPlatform = 'w'
linklibs = ['cantera_shared']
linklibs += ['libmx', 'libmex', 'libmat']
if localenv['OS_BITS'] == 32:
matlab_libs = pjoin(localenv['matlab_path'], 'extern',
'lib' ,'win32', 'microsoft')
else:
matlab_libs = pjoin(localenv['matlab_path'], 'extern',
'lib' ,'win64', 'microsoft')
if localenv['CC'] == 'cl':
linkflags.append('/export:mexFunction')
linkflags.append('/MACHINE:X%i' % localenv['OS_BITS'])
elif localenv['OS'] == 'Darwin':
linklibs = ['cantera']
linklibs += ['mx', 'mex', 'mat'] + env['LIBM']
mexPlatform = 'maci'
linkflags.extend(['-Wl,-exported_symbol,_mexFunction'])
localenv.Append(FRAMEWORKS=['Accelerate'])
if localenv['OS_BITS'] == 64:
matlab_libs = pjoin(localenv['matlab_path'], 'bin', 'maci64')
else:
matlab_libs = pjoin(localenv['matlab_path'], 'bin', 'macx86')
elif os.name == 'posix':
linklibs = ['cantera']
linklibs += ['mx', 'mex', 'mat'] + env['LIBM']
mexPlatform = 'a'
if localenv['OS_BITS'] == 64:
matlab_libs = pjoin(localenv['matlab_path'], 'bin', 'glnxa64')
else:
matlab_libs = pjoin(localenv['matlab_path'], 'bin', 'glnx86')
mexSuffix = '.mex%s%i' % (mexPlatform, localenv['OS_BITS'])
localenv.Append(CPPPATH=['#include', '#src', matlab_include],
CPPDEFINES=['MATLAB_MEX_FILE'],
LIBPATH=[matlab_libs])
linklibs += localenv['sundials_libs']
linklibs += localenv['blas_lapack_libs']
ctmethods = build(localenv.SharedLibrary('#interfaces/matlab/toolbox/ctmethods',
mglob(localenv, '.', 'cpp'),
SHLIBPREFIX='',
SHLIBSUFFIX=mexSuffix,
LIBS=linklibs,
LINKFLAGS=linkflags))
### Install the Matlab toolbox ###
# 'ctpath.m'
target = build(localenv.SubstFile('#interfaces/matlab/ctpath.m',
'#interfaces/matlab/ctpath.m.in'))
install('$inst_matlab_dir', target)
# 'cantera_demos.m'
install('$inst_matlab_dir', '#samples/matlab/cantera_demos.m')
install(localenv.RecursiveInstall, '$inst_matlab_dir', '#interfaces/matlab/toolbox')
install(localenv.RecursiveInstall, pjoin('$inst_sampledir', 'matlab'), '#samples/matlab')
if os.name == 'nt':
install('$inst_matlab_dir', localenv['cantera_shlib'])