import sys

from buildutils import *

Import('env', 'build', 'install')
localenv = env.Clone()

### Generate customized scripts ###

# 'setup_cantera'
if localenv['layout'] != 'debian' and env['OS'] != 'Windows':
    v = sys.version_info

    def copy_var(target, source, env):
        if env['python_prefix'] == 'USER':
            env['python_module_loc_sc'] = ''
        else:
            env['python_module_loc_sc'] = env['python_module_loc']

    target = env.SubstFile('setup_cantera', 'setup_cantera.in')
    localenv.AddPreAction(target, copy_var)
    localenv.Depends(target, env['install_python2_action'])
    install('$inst_bindir', target)

# Cantera.mak include file for Makefile projects
# cantera.pc for use with pkg-config

pc_libs = list(localenv['cantera_libs'])
pc_libdirs = []
pc_incdirs = []
pc_cflags = []

localenv['mak_corelibs'] = '-lcantera'

localenv['mak_extra_includes'] = ['-I%s' % s for s in localenv['extra_inc_dirs']]
pc_incdirs.extend(localenv['extra_inc_dirs'])

localenv['mak_extra_libdirs'] = ['-L%s' % s for s in localenv['extra_lib_dirs']]
pc_libdirs.extend(localenv['extra_lib_dirs'])

if env['use_sundials'] == 'n':
    localenv['mak_sundials_libs'] = '-lcvode'
    localenv['mak_sundials_libdir'] = ''
    localenv['mak_sundials_include'] = ''
else:
    # Add links to the sundials environment
    localenv['mak_sundials_libs'] = ' '.join('-l%s' % s
                                             for s in localenv['sundials_libs'])
    if localenv['sundials_libdir']:
        localenv['mak_sundials_libdir'] = '-L' + localenv['sundials_libdir']
        pc_libdirs.append(localenv['sundials_libdir'])
    else:
        localenv['mak_sundials_libdir'] = ''

    if localenv['sundials_include']:
        localenv['mak_sundials_include'] = '-I' + localenv['sundials_include']
        pc_incdirs.append(localenv['sundials_include'])
    else:
        localenv['mak_sundials_include'] = ''

if localenv['boost_inc_dir']:
    localenv['mak_boost_include'] = '-I' + localenv['boost_inc_dir']
    pc_incdirs.append(localenv['boost_inc_dir'])
else:
    localenv['mak_boost_include'] = ''

if localenv['boost_lib_dir'] and localenv['use_boost_libs']:
    localenv['mak_boost_libdir'] = '-L' + localenv['boost_lib_dir']
    pc_libdirs.append(localenv['boost_lib_dir'])
else:
    localenv['mak_boost_libdir'] = ''

localenv['mak_boost_libs'] = ' '.join('-l%s' % s for s in localenv['boost_libs'])
pc_libs += localenv['boost_libs']

# Handle blas/lapack linkage
localenv['mak_have_blas_lapack_dir'] = '1' if localenv['blas_lapack_dir'] else '0'

if localenv['blas_lapack_dir']:
    localenv['mak_blas_lapack_libs'] = ' '.join('-l%s' % s for s in localenv['blas_lapack_libs'])
    localenv['mak_blas_lapack_libs_dep'] = ''
else:
    localenv['mak_blas_lapack_libs'] = ''
    localenv['mak_blas_lapack_libs_dep'] = ''

if 'Accelerate' in localenv['FRAMEWORKS']:
    localenv['mak_blas_lapack_libs'] += ' -framework Accelerate'
    pc_cflags.append('-framework Accelerate')

localenv['mak_threadflags'] = localenv['thread_flags']
if '-pthread' in localenv['thread_flags']:
    localenv['mak_fort_threadflags'] = '-lpthread'
    pc_cflags.append('-pthread')
    pc_libs.append('pthread')
else:
    localenv['mak_fort_threadflags'] = ''

if not localenv['build_with_f2c']:
    localenv['mak_syslibs'] = ' '.join('-l%s' % s for s in localenv['FORTRANSYSLIBS'])
    pc_libs.extend(localenv['FORTRANSYSLIBS'])
else:
    localenv['mak_syslibs'] = ''

print 'making Cantera.mak'
mak = build(localenv.SubstFile('Cantera.mak', 'Cantera.mak.in'))
print 'posted making Cantera.mak'
install('$inst_incdir', mak)

# Generate cantera.pc for use with pkg-config
localenv['pc_prefix'] = localenv['prefix']
localenv['pc_libdirs'] = ' '.join('-L' + d for d in pc_libdirs)
localenv['pc_libs'] = ' '.join('-l' + lib for lib in pc_libs)
localenv['pc_incdirs'] = ' '.join('-I' + d for d in pc_incdirs)
localenv['pc_cflags'] = ' '.join(pc_cflags)

pc = build(localenv.SubstFile('cantera.pc', 'cantera.pc.in'))
install('$inst_libdir/pkgconfig', pc)
