from buildutils import * import distutils.sysconfig Import('env', 'buildTargets', 'installTargets') 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) gcv = distutils.sysconfig.get_config_var localenv.Append(CPPPATH=[gcv('INCLUDEPY')], SHLINKFLAGS=gcv('LDFLAGS'), CPPFLAGS=[gcv('BASECFLAGS'), gcv('OPT')]) pymodule = localenv.SharedLibrary('Cantera/_cantera', ['src/pycantera.cpp'], LIBS=localenv['cantera_libs'], SHLIBPREFIX='', SHLIBSUFFIX=gcv('SO')) buildTargets.extend(pymodule) localenv.AddPreAction(pymodule, make_ctconf) localenv.AddPostAction(pymodule, 'cd Cantera/python; $python_cmd setup.py build') # Install the Python module if env['cantera_python_home'] is None: # Install Python module in the default location extra = '' elif env['cantera_python_home'] == env['prefix']: # Cantera is being installed with a non-default prefix extra = '--prefix=' + env['prefix'] else: # A specific location for the Cantera python module has been specified extra = '--home=' + env['cantera_python_home'] inst = localenv.Command('dummy', pymodule, 'cd Cantera/python; $python_cmd setup.py install %s' % extra) installTargets.extend(inst) # Copy tutorials inst = localenv.Install('$ct_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('$ct_demodir','python',subdir1,subdir2), f))