114 lines
4.3 KiB
Python
114 lines
4.3 KiB
Python
|
import os
|
||
|
from os.path import join
|
||
|
|
||
|
from scipy._build_utils import numpy_nodepr_api
|
||
|
|
||
|
|
||
|
def configuration(parent_package='',top_path=None):
|
||
|
from numpy.distutils.misc_util import Configuration
|
||
|
from scipy._build_utils.system_info import get_info
|
||
|
from scipy._build_utils import (uses_blas64, blas_ilp64_pre_build_hook,
|
||
|
combine_dict, get_f2py_int64_options)
|
||
|
|
||
|
config = Configuration('integrate', parent_package, top_path)
|
||
|
|
||
|
if uses_blas64():
|
||
|
lapack_opt = get_info('lapack_ilp64_opt', 2)
|
||
|
pre_build_hook = blas_ilp64_pre_build_hook(lapack_opt)
|
||
|
f2py_options = get_f2py_int64_options()
|
||
|
else:
|
||
|
lapack_opt = get_info('lapack_opt')
|
||
|
pre_build_hook = None
|
||
|
f2py_options = None
|
||
|
|
||
|
mach_src = [join('mach','*.f')]
|
||
|
quadpack_src = [join('quadpack', '*.f')]
|
||
|
lsoda_src = [join('odepack', fn) for fn in [
|
||
|
'blkdta000.f', 'bnorm.f', 'cfode.f',
|
||
|
'ewset.f', 'fnorm.f', 'intdy.f',
|
||
|
'lsoda.f', 'prja.f', 'solsy.f', 'srcma.f',
|
||
|
'stoda.f', 'vmnorm.f', 'xerrwv.f', 'xsetf.f',
|
||
|
'xsetun.f']]
|
||
|
vode_src = [join('odepack', 'vode.f'), join('odepack', 'zvode.f')]
|
||
|
dop_src = [join('dop','*.f')]
|
||
|
quadpack_test_src = [join('tests','_test_multivariate.c')]
|
||
|
odeint_banded_test_src = [join('tests', 'banded5x5.f')]
|
||
|
|
||
|
config.add_library('mach', sources=mach_src, config_fc={'noopt': (__file__, 1)},
|
||
|
_pre_build_hook=pre_build_hook)
|
||
|
config.add_library('quadpack', sources=quadpack_src, _pre_build_hook=pre_build_hook)
|
||
|
config.add_library('lsoda', sources=lsoda_src, _pre_build_hook=pre_build_hook)
|
||
|
config.add_library('vode', sources=vode_src, _pre_build_hook=pre_build_hook)
|
||
|
config.add_library('dop', sources=dop_src, _pre_build_hook=pre_build_hook)
|
||
|
|
||
|
# Extensions
|
||
|
# quadpack:
|
||
|
include_dirs = [join(os.path.dirname(__file__), '..', '_lib', 'src')]
|
||
|
cfg = combine_dict(lapack_opt,
|
||
|
include_dirs=include_dirs,
|
||
|
libraries=['quadpack', 'mach'])
|
||
|
config.add_extension('_quadpack',
|
||
|
sources=['_quadpackmodule.c'],
|
||
|
depends=(['__quadpack.h']
|
||
|
+ quadpack_src + mach_src),
|
||
|
**cfg)
|
||
|
|
||
|
# odepack/lsoda-odeint
|
||
|
cfg = combine_dict(lapack_opt, numpy_nodepr_api,
|
||
|
libraries=['lsoda', 'mach'])
|
||
|
config.add_extension('_odepack',
|
||
|
sources=['_odepackmodule.c'],
|
||
|
depends=(lsoda_src + mach_src),
|
||
|
**cfg)
|
||
|
|
||
|
# vode
|
||
|
cfg = combine_dict(lapack_opt,
|
||
|
libraries=['vode'])
|
||
|
ext = config.add_extension('vode',
|
||
|
sources=['vode.pyf'],
|
||
|
depends=vode_src,
|
||
|
f2py_options=f2py_options,
|
||
|
**cfg)
|
||
|
ext._pre_build_hook = pre_build_hook
|
||
|
|
||
|
# lsoda
|
||
|
cfg = combine_dict(lapack_opt,
|
||
|
libraries=['lsoda', 'mach'])
|
||
|
ext = config.add_extension('lsoda',
|
||
|
sources=['lsoda.pyf'],
|
||
|
depends=(lsoda_src + mach_src),
|
||
|
f2py_options=f2py_options,
|
||
|
**cfg)
|
||
|
ext._pre_build_hook = pre_build_hook
|
||
|
|
||
|
# dop
|
||
|
ext = config.add_extension('_dop',
|
||
|
sources=['dop.pyf'],
|
||
|
libraries=['dop'],
|
||
|
depends=dop_src,
|
||
|
f2py_options=f2py_options)
|
||
|
ext._pre_build_hook = pre_build_hook
|
||
|
|
||
|
config.add_extension('_test_multivariate',
|
||
|
sources=quadpack_test_src)
|
||
|
|
||
|
# Fortran+f2py extension module for testing odeint.
|
||
|
cfg = combine_dict(lapack_opt,
|
||
|
libraries=['lsoda', 'mach'])
|
||
|
ext = config.add_extension('_test_odeint_banded',
|
||
|
sources=odeint_banded_test_src,
|
||
|
depends=(lsoda_src + mach_src),
|
||
|
f2py_options=f2py_options,
|
||
|
**cfg)
|
||
|
ext._pre_build_hook = pre_build_hook
|
||
|
|
||
|
config.add_subpackage('_ivp')
|
||
|
|
||
|
config.add_data_dir('tests')
|
||
|
return config
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
from numpy.distutils.core import setup
|
||
|
setup(**configuration(top_path='').todict())
|