Skip to content
Snippets Groups Projects
Select Git revision
  • master
1 result

setup.py

Blame
  • setup.py 4.34 KiB
    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())