SCons now builds the Python module
This commit is contained in:
parent
39d46d1f28
commit
53cfa84670
7 changed files with 140 additions and 20 deletions
|
|
@ -3,12 +3,11 @@ from buildutils import *
|
|||
Import('env', 'build')
|
||||
|
||||
# (subdir, library name, (file extensions))
|
||||
libs = [LibOpts('cxx/src', 'ctcxx'),
|
||||
LibOpts('clib/src', 'clib')]
|
||||
libs = [LibOpts('src', 'clib')]
|
||||
|
||||
print os.getcwd()
|
||||
for lib in libs:
|
||||
localenv = env.Clone()
|
||||
localenv.Library(pjoin('../lib', lib.name),
|
||||
localenv.Library(pjoin('../../lib', lib.name),
|
||||
source=mglob(localenv, lib.subdir, *lib.extensions))
|
||||
|
||||
13
Cantera/cxx/SConscript
Normal file
13
Cantera/cxx/SConscript
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
from buildutils import *
|
||||
|
||||
Import('env', 'build')
|
||||
|
||||
# (subdir, library name, (file extensions))
|
||||
libs = [LibOpts('src', 'ctcxx')]
|
||||
|
||||
print os.getcwd()
|
||||
for lib in libs:
|
||||
localenv = env.Clone()
|
||||
localenv.Library(pjoin('../../lib', lib.name),
|
||||
source=mglob(localenv, lib.subdir, *lib.extensions))
|
||||
|
||||
46
Cantera/python/SConscript
Normal file
46
Cantera/python/SConscript
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
from buildutils import *
|
||||
import distutils.sysconfig
|
||||
|
||||
Import('env', 'build')
|
||||
|
||||
localenv = env.Clone()
|
||||
|
||||
def make_ctconf(target, source, env):
|
||||
text = """
|
||||
buildPython = %(BUILD_PYTHON)s
|
||||
ctversion = %(cantera_version)r
|
||||
""" % env
|
||||
|
||||
with open(str(target[0]), 'w') as f:
|
||||
f.write(text)
|
||||
|
||||
conf = localenv.Command('ctconf.py', [], make_ctconf)
|
||||
gcv = distutils.sysconfig.get_config_var
|
||||
|
||||
localenv.Append(CPPPATH=[gcv('INCLUDEPY')],
|
||||
SHLINKFLAGS=gcv('LDFLAGS'),
|
||||
CPPFLAGS=[gcv('BASECFLAGS'), gcv('OPT')])
|
||||
|
||||
linkLibs = ['clib','oneD','zeroD','equil','kinetics','transport',
|
||||
'thermo','ctnumerics','ctmath','tpx',
|
||||
'ctspectra','converters','ctbase']
|
||||
|
||||
if env['use_sundials']:
|
||||
linkLibs.extend(('sundials_cvodes','sundials_nvecserial'))
|
||||
|
||||
linkLibs.extend(localenv['blas_lapack_libs'])
|
||||
|
||||
if env['build_with_f2c']:
|
||||
linkLibs.append('ctf2c')
|
||||
else:
|
||||
linkLibs.append('gfortran')
|
||||
|
||||
pymodule = localenv.SharedLibrary('Cantera/_cantera', ['src/pycantera.cpp'],
|
||||
LIBS=linkLibs,
|
||||
SHLIBPREFIX='',
|
||||
SHLIBSUFFIX=gcv('SO'))
|
||||
|
||||
pybuild = localenv.Command('built_python', 'Cantera/_cantera.so',
|
||||
'cd Cantera/python; python setup.py build; touch built_python')
|
||||
|
||||
localenv.Depends(pybuild, [pymodule, conf])
|
||||
36
Cantera/python/setup.py
Normal file
36
Cantera/python/setup.py
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
import sys
|
||||
import string
|
||||
from distutils.core import setup, Extension
|
||||
|
||||
import ctconf
|
||||
|
||||
platform = sys.platform
|
||||
|
||||
# values:
|
||||
# 0 do nothing
|
||||
# 1 install only ctml_writer.py
|
||||
# 2 install full package
|
||||
|
||||
if ctconf.buildPython >= 2:
|
||||
setup(name="Cantera",
|
||||
version=ctconf.ctversion,
|
||||
description="The Cantera Python Interface",
|
||||
long_description="""
|
||||
""",
|
||||
author="Prof. D. G. Goodwin, Caltech",
|
||||
author_email="dgoodwin@caltech.edu",
|
||||
url="http://code.google.com/p/cantera",
|
||||
package_dir = {'MixMaster':'../../apps/MixMaster'},
|
||||
packages = ["","Cantera","Cantera.OneD",
|
||||
"MixMaster","MixMaster.Units"],
|
||||
package_data = {'Cantera': ['_cantera.so']})
|
||||
elif ctconf.buildPython == 1:
|
||||
setup(name="Cantera CTI File Processor",
|
||||
version=ctconf.ctversion,
|
||||
description="Converts .cti files to CTML",
|
||||
long_description="""
|
||||
""",
|
||||
author="Prof. D. G. Goodwin, Caltech",
|
||||
author_email="dgoodwin@caltech.edu",
|
||||
url="http://www.cantera.org",
|
||||
py_modules = ["ctml_writer"])
|
||||
|
|
@ -33,15 +33,15 @@
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#include "ct.h"
|
||||
#include "ctxml.h"
|
||||
#include "ctsurf.h"
|
||||
#include "ctbdry.h"
|
||||
#include "ctrpath.h"
|
||||
#include "ctreactor.h"
|
||||
#include "ctfunc.h"
|
||||
#include "ctonedim.h"
|
||||
#include "ctmultiphase.h"
|
||||
#include "clib/ct.h"
|
||||
#include "clib/ctxml.h"
|
||||
#include "clib/ctsurf.h"
|
||||
#include "clib/ctbdry.h"
|
||||
#include "clib/ctrpath.h"
|
||||
#include "clib/ctreactor.h"
|
||||
#include "clib/ctfunc.h"
|
||||
#include "clib/ctonedim.h"
|
||||
#include "clib/ctmultiphase.h"
|
||||
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
|
|
|
|||
34
SConstruct
34
SConstruct
|
|
@ -44,7 +44,7 @@ opts.AddVariables(
|
|||
BoolVariable('enable_tpx', '', True),
|
||||
BoolVariable('with_html_log_files', '', True),
|
||||
EnumVariable('use_sundials', '', 'default', ('default', 'y', 'n')),
|
||||
('blas_lapack_libs', '', ''), # '-llapack -lblas' or '-llapack -lf77blas -lcblas -latlas' etc.
|
||||
('blas_lapack_libs', '', ''), # 'lapack,blas' or 'lapack,f77blas,cblas,atlas' etc.
|
||||
('blas_lapack_dir', '', ''), # '/usr/lib/lapack' etc
|
||||
EnumVariable('lapack_names', '', 'lower', ('lower','upper')),
|
||||
BoolVariable('lapack_ftn_trailing_underscore', '', True),
|
||||
|
|
@ -93,6 +93,11 @@ if env['python_package'] in ('full', 'default'):
|
|||
PathVariable('cantera_python_home', 'where to install the python package',
|
||||
None, PathVariable.PathAccept),
|
||||
)
|
||||
env['BUILD_PYTHON'] = 3
|
||||
elif env['python_package'] == 'minimal':
|
||||
env['BUILD_PYTHON'] = 1
|
||||
else:
|
||||
env['BUILD_PYTHON'] = 0
|
||||
|
||||
# Options that apply only if building the Matlab interface
|
||||
if env['matlab_toolbox'] != 'n':
|
||||
|
|
@ -112,7 +117,8 @@ if env['f90_interface']:
|
|||
if env['use_sundials'] != 'n':
|
||||
opts.AddVariables(
|
||||
EnumVariable('sundials_version' ,'', '2.4', ('2.2','2.3','2.4')),
|
||||
PathVariable('sundials_include' ,'', ''))
|
||||
PathVariable('sundials_include' ,'', ''),
|
||||
PathVariable('sundials_libdir', '', ''))
|
||||
|
||||
# Extra options for Boost.Thread
|
||||
if env['build_thread_safe']:
|
||||
|
|
@ -211,10 +217,15 @@ env.AlwaysBuild(config_h)
|
|||
if env['blas_lapack_libs'] == '':
|
||||
# External BLAS/LAPACK were not given, so we need to compile them
|
||||
env['BUILD_BLAS_LAPACK'] = True
|
||||
env['blas_lapack_libs'] = '-lctlapack -lctblas'
|
||||
env['blas_lapack_libs'] = ['ctlapack', 'ctblas']
|
||||
else:
|
||||
ens['blas_lapack_libs'] = ','.split(env['blas_lapack_libs'])
|
||||
|
||||
|
||||
if env['use_sundials'] == 'y' and env['sundials_include']:
|
||||
env.Append(CPPPATH=env['sundials_include'])
|
||||
if env['use_sundials'] == 'y' and env['sundials_libdir']:
|
||||
env.Append(LIBPATH=env['sundials_libdir'])
|
||||
|
||||
# *********************
|
||||
# *** Build Cantera ***
|
||||
|
|
@ -229,12 +240,18 @@ for header in mglob(env, 'Cantera/clib/src', 'h'):
|
|||
env.Command('build/include/cantera/clib/%s' % header.name, header,
|
||||
Copy('$TARGET', '$SOURCE'))
|
||||
|
||||
env.Command('build/include/cantera/config.h', 'config.h', Copy('$TARGET', '$SOURCE'))
|
||||
|
||||
build = 'build'
|
||||
env.SConsignFile()
|
||||
env.Append(CPPPATH=[Dir(os.getcwd()),
|
||||
Dir('build/include/cantera/kernel'),
|
||||
Dir('build/include/cantera')])
|
||||
Dir('build/include/cantera'),
|
||||
Dir('build/include')],
|
||||
LIBPATH=[Dir('build/lib')],
|
||||
CCFLAGS=['-fPIC'],
|
||||
FORTRANFLAGS=['-fPIC'],
|
||||
F90FLAGS=['-fPIC'])
|
||||
|
||||
Export('env', 'build')
|
||||
|
||||
|
|
@ -244,8 +261,13 @@ SConscript('build/ext/SConscript')
|
|||
VariantDir('build/kernel', 'Cantera/src', duplicate=0)
|
||||
SConscript('build/kernel/SConscript')
|
||||
|
||||
VariantDir('build/interfaces/', 'Cantera', duplicate=0)
|
||||
SConscript('build/interfaces/SConscript')
|
||||
VariantDir('build/interfaces/clib', 'Cantera/clib', duplicate=0)
|
||||
SConscript('build/interfaces/clib/SConscript')
|
||||
|
||||
VariantDir('build/interfaces/cxx', 'Cantera/cxx', duplicate=0)
|
||||
SConscript('build/interfaces/cxx/SConscript')
|
||||
|
||||
VariantDir('build/interfaces/fortran/', 'Cantera/fortran', duplicate=1)
|
||||
SConscript('build/interfaces/fortran/SConscript')
|
||||
|
||||
SConscript('Cantera/python/SConscript')
|
||||
|
|
|
|||
|
|
@ -5,10 +5,12 @@ localenv = env.Clone()
|
|||
|
||||
# (subdir, library name, (file extensions))
|
||||
libs = [('tpx','tpx',['cpp']),
|
||||
('math', 'ctmath', ['cpp','c','f'])]
|
||||
]
|
||||
|
||||
print os.getcwd()
|
||||
if env['build_with_f2c']:
|
||||
libs.append(('f2c_math', 'ctmath', ['cpp','c']))
|
||||
|
||||
# Create arith.h using the arithchk program
|
||||
if not os.path.exists('arith.h'):
|
||||
arithenv = env.Clone()
|
||||
|
|
@ -22,13 +24,15 @@ if env['build_with_f2c']:
|
|||
localenv.Command('f2c_libs/signal1.h', 'f2c_libs/signal1.h0', CopyNoPrefix(build))
|
||||
localenv.Command('f2c_libs/sysdep1.h', 'f2c_libs/sysdep1.h0', CopyNoPrefix(build))
|
||||
|
||||
libs.append(('f2c_libs', 'f2c', 'c'))
|
||||
libs.append(('f2c_libs', 'ctf2c', 'c'))
|
||||
|
||||
if env['BUILD_BLAS_LAPACK']:
|
||||
libs.append(('f2c_blas', 'ctblas', ('c')))
|
||||
libs.append(('f2c_lapack', 'ctlapack', ('c')))
|
||||
|
||||
else:
|
||||
libs.append(('math', 'ctmath', ['cpp','c','f']))
|
||||
|
||||
if env['BUILD_BLAS_LAPACK']:
|
||||
libs.append(('blas', 'ctblas', ('f')))
|
||||
libs.append(('lapack', 'ctlapack', ('f')))
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue