76 lines
2.6 KiB
Python
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'])
|