cantera/interfaces/python/SConscript
Ray Speth 2528df0f75 Reorganized source tree structure
These changes make it unnecessary to copy header files around during
the build process, which tends to confuse IDEs and debuggers. The
headers which comprise Cantera's external C++ interface are now in
the 'include' directory.

All of the samples and demos are now in the 'samples' subdirectory.
2012-02-12 02:27:14 +00:00

77 lines
2.9 KiB
Python

from buildutils import *
import distutils.sysconfig
Import('env', 'buildTargets', 'installTargets')
localenv = env.Clone()
gcv = distutils.sysconfig.get_config_var
localenv.Append(CPPPATH=[gcv('INCLUDEPY'), env['python_array_include']],
SHLINKFLAGS=gcv('LDFLAGS'),
CPPFLAGS=((gcv('BASECFLAGS') or '').split() +
(gcv('OPT') or '').split()))
if localenv['OS'] == 'Windows':
localenv.Append(LIBPATH=pjoin(gcv('prefix'), 'libs'))
for var in ('VS80COMNTOOLS', 'VS90COMNTOOLS', 'VS100COMNTOOLS'):
if var in os.environ:
localenv['ENV'][var] = os.environ[var]
make_setup = localenv.SubstFile('setup.py', 'setup.py.in')
if localenv['python_package'] == 'full':
libs = ['clib']
if localenv['OS'] != 'Windows':
libs.extend(env['cantera_libs'])
pymodule = localenv.SharedLibrary('Cantera/_cantera', ['src/pycantera.cpp'],
LIBS=libs,
SHLIBPREFIX='',
SHLIBSUFFIX=gcv('SO'))
buildTargets.extend(pymodule)
localenv.Depends(pymodule, make_setup)
if localenv['OS'] == 'Windows':
for file in localenv['clib_shared']:
dest = pjoin('Cantera', 'python', 'Cantera', file.name)
localenv.AddPreAction(pymodule,Copy(dest, file))
elif localenv['python_package'] == 'minimal':
pymodule = make_setup
moddir = pjoin('Cantera', 'python')
localenv.AddPostAction(make_setup,
'cd %s && $python_cmd setup.py build' % moddir)
# Install the Python module
if localenv['python_prefix']:
# A specific location for the Cantera python module has been specified
extra = '--prefix="%s"' % localenv['python_prefix']
else:
# Install Python module in the default location
extra = ''
if localenv['PYTHON_INSTALLER'] == 'direct':
inst = localenv.Command('dummy', pymodule,
'cd %s && $python_cmd setup.py install %s' % (moddir,extra))
installTargets.extend(inst)
elif localenv['PYTHON_INSTALLER'] == 'binary':
if 'MSSdk' in os.environ:
localenv['ENV']['DISTUTILS_USE_SDK'] = '1'
localenv['ENV']['MSSdk'] = os.environ['MSSdk']
inst = localenv.Command('dummy', pymodule,
'cd %s && $python_cmd setup.py bdist_msi --dist-dir=../..' % moddir)
installTargets.extend(inst)
if localenv['python_package'] == 'full':
# Copy tutorials
inst = localenv.Install('$inst_tutdir', mglob(localenv, 'tutorial', 'py'))
installTargets.extend(inst)
# Copy examples
exampleFiles = sum([localenv.Glob(pjoin('examples', '*', '*', name))
for name in ['runtest', 'cleanup', '*.txt', '*.py', '*.csv']], [])
for f in exampleFiles:
subdir1, subdir2 = psplit(f.path)[3:5]
installTargets.extend(localenv.Install(pjoin('$inst_demodir','python',subdir1,subdir2), f))