123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- from __future__ import division, print_function, absolute_import
- 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
- config = Configuration('integrate', parent_package, top_path)
- # Get a local copy of lapack_opt_info
- lapack_opt = dict(get_info('lapack_opt',notfound_action=2))
- # Pop off the libraries list so it can be combined with
- # additional required libraries
- lapack_libs = lapack_opt.pop('libraries', [])
- 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)})
- config.add_library('quadpack', sources=quadpack_src)
- config.add_library('lsoda', sources=lsoda_src)
- config.add_library('vode', sources=vode_src)
- config.add_library('dop', sources=dop_src)
- # Extensions
- # quadpack:
- include_dirs = [join(os.path.dirname(__file__), '..', '_lib', 'src')]
- if 'include_dirs' in lapack_opt:
- lapack_opt = dict(lapack_opt)
- include_dirs.extend(lapack_opt.pop('include_dirs'))
- config.add_extension('_quadpack',
- sources=['_quadpackmodule.c'],
- libraries=['quadpack', 'mach'] + lapack_libs,
- depends=(['__quadpack.h']
- + quadpack_src + mach_src),
- include_dirs=include_dirs,
- **lapack_opt)
- # odepack/lsoda-odeint
- odepack_opts = lapack_opt.copy()
- odepack_opts.update(numpy_nodepr_api)
- config.add_extension('_odepack',
- sources=['_odepackmodule.c'],
- libraries=['lsoda', 'mach'] + lapack_libs,
- depends=(lsoda_src + mach_src),
- **odepack_opts)
- # vode
- config.add_extension('vode',
- sources=['vode.pyf'],
- libraries=['vode'] + lapack_libs,
- depends=vode_src,
- **lapack_opt)
- # lsoda
- config.add_extension('lsoda',
- sources=['lsoda.pyf'],
- libraries=['lsoda', 'mach'] + lapack_libs,
- depends=(lsoda_src + mach_src),
- **lapack_opt)
- # dop
- config.add_extension('_dop',
- sources=['dop.pyf'],
- libraries=['dop'],
- depends=dop_src)
- config.add_extension('_test_multivariate',
- sources=quadpack_test_src)
- # Fortran+f2py extension module for testing odeint.
- config.add_extension('_test_odeint_banded',
- sources=odeint_banded_test_src,
- libraries=['lsoda', 'mach'] + lapack_libs,
- depends=(lsoda_src + mach_src),
- **lapack_opt)
- 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())
|