cantera/samples/f90/SConscript
Ray Speth 3944dda878 Fix path to Cantera.mak in sample Fortran Makefiles
Use relative path if the Cantera install directory contains spaces, as the
Makefile 'include' statement doesn't seem to have a way to escape the space
otherwise.
2014-04-28 18:18:10 +00:00

47 lines
2 KiB
Python

from buildutils import *
Import('env', 'install', 'buildSample')
localenv = env.Clone()
# (program name, [source files])
samples = [('demo', ['demo.f90'])]
for programName, sources in samples:
buildSample(localenv.Program, programName, sources,
F90PATH='#build/src/fortran',
LIBS=['cantera_fortran']+env['cantera_libs']+['stdc++'],
LIBPATH=[env['sundials_libdir'], '#build/lib'])
# Generate SConstruct files to be installed
incdirs = [pjoin(localenv['ct_incroot'], 'cantera')] + localenv['extra_inc_dirs']
libs = ['cantera_fortran'] + localenv['cantera_libs'] + ['stdc++']
libdirs = ((localenv['ct_libdir'], localenv['sundials_libdir'],
localenv['blas_lapack_dir'], localenv['boost_lib_dir']) +
tuple(localenv['extra_lib_dirs']))
linkflags = ('-g', localenv['thread_flags'])
mak_path = pjoin(localenv['ct_incroot'], 'cantera', 'Cantera.mak')
if ' ' in mak_path:
# There is no reasonable way to handle spaces in Makefile 'include'
# statement, so we fall back to using the relative path instead
mak_path = os.path.relpath(mak_path, pjoin(localenv['ct_sampledir'], 'f90'))
localenv['tmpl_Cantera_dot_mak'] = mak_path
localenv['tmpl_cantera_incdirs'] = repr([x for x in incdirs if x])
localenv['tmpl_cantera_libs'] = repr(libs)
localenv['tmpl_cantera_libdirs'] = repr([x for x in libdirs if x])
localenv['tmpl_cantera_linkflags'] = repr([x for x in linkflags if x])
localenv['tmpl_cantera_frameworks'] = repr(localenv['FRAMEWORKS'])
localenv['tmpl_progname'] = programName
localenv['tmpl_sourcename'] = programName + '.f90'
sconstruct = localenv.SubstFile('SConstruct', 'SConstruct.in')
# Generate Makefile to be installed
localenv['make_target'] = programName
localenv['make_sourcefile'] = programName + '.f90'
makefile = localenv.SubstFile('Makefile', 'Makefile.in')
install(pjoin('$inst_sampledir', 'f90'), makefile)
install(pjoin('$inst_sampledir', 'f90'), sconstruct)