cantera/samples/f77/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

48 lines
2 KiB
Python

from buildutils import *
Import('env', 'install', 'buildSample')
localenv = env.Clone()
# (program name, [source files])
samples = [('ctlib', ['ctlib.f']),
('isentropic', ['isentropic.f'])]
ftn_demo = localenv.Object('demo_ftnlib.cpp',
CPPPATH=['#include'])
for program_name, fortran_sources in samples:
buildSample(localenv.Program, program_name,
fortran_sources + ftn_demo,
CPPPATH=['#build/src/fortran', '#include'],
LIBS=env['cantera_libs']+['cantera_fortran']+['stdc++'],
LIBPATH=[env['sundials_libdir'], '#build/lib'],
LINK='$F77')
# Generate SConstruct file to be installed
incdirs = (localenv['ct_incroot'], localenv['sundials_include'],
localenv['boost_inc_dir']) + tuple(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'])
sconstruct = localenv.SubstFile('SConstruct', 'SConstruct.in')
# Generate Makefile to be installed
makefile = localenv.SubstFile('Makefile', 'Makefile.in')
install(pjoin('$inst_sampledir', 'f77'), makefile)
install(pjoin('$inst_sampledir', 'f77'), sconstruct)