Beispiel #1
0
def configuration(parent_package='', top_path=None):
    from scipy._build_utils.system_info import get_info
    from numpy.distutils.misc_util import Configuration
    from scipy._build_utils import (get_g77_abi_wrappers, uses_blas64,
                                    blas_ilp64_pre_build_hook,
                                    get_f2py_int64_options)

    config = Configuration('isolve', parent_package, top_path)

    if uses_blas64():
        lapack_opt = get_info('lapack_ilp64_opt')
        f2py_options = get_f2py_int64_options()
        pre_build_hook = blas_ilp64_pre_build_hook(lapack_opt)
    else:
        lapack_opt = get_info('lapack_opt')
        f2py_options = None
        pre_build_hook = None

    # iterative methods
    methods = [
        'BiCGREVCOM.f.src',
        'BiCGSTABREVCOM.f.src',
        'CGREVCOM.f.src',
        'CGSREVCOM.f.src',
        #               'ChebyREVCOM.f.src',
        'GMRESREVCOM.f.src',
        #               'JacobiREVCOM.f.src',
        'QMRREVCOM.f.src',
        #               'SORREVCOM.f.src'
    ]

    Util = ['getbreak.f.src']
    sources = Util + methods + ['_iterative.pyf.src']
    sources = [join('iterative', x) for x in sources]
    sources += get_g77_abi_wrappers(lapack_opt)

    ext = config.add_extension('_iterative',
                               sources=sources,
                               f2py_options=f2py_options,
                               extra_info=lapack_opt)
    ext._pre_build_hook = pre_build_hook

    config.add_data_dir('tests')

    return config
Beispiel #2
0
def configuration(parent_package='', top_path=None):
    from scipy._build_utils.system_info import get_info
    from numpy.distutils.misc_util import Configuration
    from scipy._build_utils import (get_g77_abi_wrappers,
                                    gfortran_legacy_flag_hook,
                                    blas_ilp64_pre_build_hook, uses_blas64,
                                    get_f2py_int64_options)

    if uses_blas64():
        lapack_opt = get_info('lapack_ilp64_opt', 2)
        pre_build_hook = (gfortran_legacy_flag_hook,
                          blas_ilp64_pre_build_hook(lapack_opt))
        f2py_options = get_f2py_int64_options()
    else:
        lapack_opt = get_info('lapack_opt')
        pre_build_hook = gfortran_legacy_flag_hook
        f2py_options = None

    config = Configuration('arpack', parent_package, top_path)

    arpack_sources = [join('ARPACK', 'SRC', '*.f')]
    arpack_sources.extend([join('ARPACK', 'UTIL', '*.f')])

    arpack_sources += get_g77_abi_wrappers(lapack_opt)

    config.add_library('arpack_scipy',
                       sources=arpack_sources,
                       include_dirs=[join('ARPACK', 'SRC')],
                       _pre_build_hook=pre_build_hook)

    ext = config.add_extension('_arpack',
                               sources=['arpack.pyf.src'],
                               libraries=['arpack_scipy'],
                               f2py_options=f2py_options,
                               extra_info=lapack_opt,
                               depends=arpack_sources)
    ext._pre_build_hook = pre_build_hook

    config.add_data_dir('tests')

    # Add license files
    config.add_data_files('ARPACK/COPYING')

    return config
Beispiel #3
0
def configuration(parent_package='', top_path=None):
    import warnings
    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)

    config = Configuration('odr', parent_package, top_path)

    libodr_files = ['d_odr.f',
                    'd_mprec.f',
                    'dlunoc.f',
                    'd_lpk.f']

    if uses_blas64():
        blas_info = get_info('blas_ilp64_opt')
        pre_build_hook = blas_ilp64_pre_build_hook(blas_info)
    else:
        blas_info = get_info('blas_opt')
        pre_build_hook = None

    odrpack_src = [join('odrpack', x) for x in libodr_files]
    config.add_library('odrpack', sources=odrpack_src,
                       _pre_build_hook=pre_build_hook)

    sources = ['__odrpack.c']

    cfg = combine_dict(blas_info, numpy_nodepr_api,
                       libraries=['odrpack'],
                       include_dirs=['.'])
    ext = config.add_extension('__odrpack',
        sources=sources,
        depends=(['odrpack.h'] + odrpack_src),
        **cfg
    )
    ext._pre_build_hook = pre_build_hook

    config.add_data_dir('tests')
    return config
Beispiel #4
0
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 (gfortran_legacy_flag_hook,
                                    blas_ilp64_pre_build_hook, combine_dict,
                                    uses_blas64, get_f2py_int64_options)
    from scipy._build_utils.compiler_helper import (
        set_cxx_flags_hook, set_cxx_flags_clib_hook, set_c_flags_hook)

    config = Configuration('optimize', parent_package, top_path)

    include_dirs = [join(os.path.dirname(__file__), '..', '_lib', 'src')]

    minpack_src = [join('minpack', '*f')]
    config.add_library('minpack', sources=minpack_src)
    config.add_extension('_minpack',
                         sources=['_minpackmodule.c'],
                         libraries=['minpack'],
                         depends=(["minpack.h", "__minpack.h"] + minpack_src),
                         include_dirs=include_dirs,
                         **numpy_nodepr_api)

    config.add_library('rectangular_lsap',
                       sources='rectangular_lsap/rectangular_lsap.cpp',
                       headers='rectangular_lsap/rectangular_lsap.h',
                       _pre_build_hook=set_cxx_flags_clib_hook)
    _lsap = config.add_extension(
        '_lsap_module',
        sources=['_lsap_module.c'],
        libraries=['rectangular_lsap'],
        depends=(['rectangular_lsap/rectangular_lsap.cpp',
                  'rectangular_lsap/rectangular_lsap.h']),
        include_dirs=include_dirs,
        **numpy_nodepr_api)
    _lsap._pre_build_hook = set_c_flags_hook

    rootfind_src = [join('Zeros', '*.c')]
    rootfind_hdr = [join('Zeros', 'zeros.h')]
    config.add_library('rootfind',
                       sources=rootfind_src,
                       headers=rootfind_hdr, **numpy_nodepr_api)

    config.add_extension('_zeros',
                         sources=['zeros.c'],
                         libraries=['rootfind'],
                         depends=(rootfind_src + rootfind_hdr),
                         **numpy_nodepr_api)

    if uses_blas64():
        lapack = get_info('lapack_ilp64_opt')
        f2py_options = get_f2py_int64_options()
        pre_build_hook = blas_ilp64_pre_build_hook(lapack)
    else:
        lapack = get_info('lapack_opt')
        f2py_options = None
        pre_build_hook = None

    lapack = combine_dict(lapack, numpy_nodepr_api)

    sources = ['lbfgsb.pyf', 'lbfgsb.f', 'linpack.f', 'timer.f']
    ext = config.add_extension('_lbfgsb',
                               sources=[join('lbfgsb_src', x)
                                        for x in sources],
                               f2py_options=f2py_options,
                               **lapack)
    ext._pre_build_hook = pre_build_hook

    sources = ['moduleTNC.c', 'tnc.c']
    config.add_extension('moduleTNC',
                         sources=[join('tnc', x) for x in sources],
                         depends=[join('tnc', 'tnc.h')],
                         **numpy_nodepr_api)

    config.add_extension('_cobyla',
                         sources=[join('cobyla', x) for x in [
                             'cobyla.pyf', 'cobyla2.f', 'trstlp.f']],
                         **numpy_nodepr_api)

    sources = ['minpack2.pyf', 'dcsrch.f', 'dcstep.f']
    config.add_extension('minpack2',
                         sources=[join('minpack2', x) for x in sources],
                         **numpy_nodepr_api)

    sources = ['slsqp.pyf', 'slsqp_optmz.f']
    ext = config.add_extension('_slsqp', sources=[
        join('slsqp', x) for x in sources], **numpy_nodepr_api)
    ext._pre_build_hook = gfortran_legacy_flag_hook

    config.add_data_files('__nnls.pyi')
    ext = config.add_extension('__nnls', sources=[
        join('__nnls', x) for x in ["nnls.f", "nnls.pyf"]], **numpy_nodepr_api)
    ext._pre_build_hook = gfortran_legacy_flag_hook

    config.add_extension('_group_columns', sources=['_group_columns.c'],)

    config.add_extension('_bglu_dense', sources=['_bglu_dense.c'])

    config.add_subpackage('_lsq')

    config.add_subpackage('_trlib')

    config.add_subpackage('_trustregion_constr')

    # Cython optimize API for zeros functions
    config.add_subpackage('cython_optimize')
    config.add_data_files('cython_optimize.pxd')
    config.add_data_files(os.path.join('cython_optimize', '*.pxd'))
    config.add_extension(
        'cython_optimize._zeros',
        sources=[os.path.join('cython_optimize', '_zeros.c')])

    config.add_subpackage('_shgo_lib')
    config.add_data_dir('_shgo_lib')

    # HiGHS linear programming libraries and extensions
    config.add_subpackage('_highs')
    config.add_data_files(os.path.join('_highs', 'cython', 'src', '*.pxd'))

    config.add_data_dir('tests')

    # Add license files
    config.add_data_files('lbfgsb_src/README')

    return config
Beispiel #5
0
def configuration(parent_package='', top_path=None):
    from distutils.sysconfig import get_python_inc
    from scipy._build_utils.system_info import get_info, numpy_info
    from numpy.distutils.misc_util import Configuration, get_numpy_include_dirs
    from scipy._build_utils import (get_g77_abi_wrappers,
                                    gfortran_legacy_flag_hook,
                                    blas_ilp64_pre_build_hook,
                                    get_f2py_int64_options, uses_blas64)

    config = Configuration('linalg', parent_package, top_path)

    lapack_opt = get_info('lapack_opt')

    atlas_version = ([
        v[3:-3]
        for k, v in lapack_opt.get('define_macros', []) if k == 'ATLAS_INFO'
    ] + [None])[0]
    if atlas_version:
        print(('ATLAS version: %s' % atlas_version))

    if uses_blas64():
        lapack_ilp64_opt = get_info('lapack_ilp64_opt', 2)

    # fblas:
    sources = ['fblas.pyf.src']
    sources += get_g77_abi_wrappers(lapack_opt)
    depends = ['fblas_l?.pyf.src']

    config.add_extension('_fblas',
                         sources=sources,
                         depends=depends,
                         extra_info=lapack_opt)

    if uses_blas64():
        sources = ['fblas_64.pyf.src'] + sources[1:]
        ext = config.add_extension('_fblas_64',
                                   sources=sources,
                                   depends=depends,
                                   f2py_options=get_f2py_int64_options(),
                                   extra_info=lapack_ilp64_opt)
        ext._pre_build_hook = blas_ilp64_pre_build_hook(lapack_ilp64_opt)

    # flapack:
    sources = ['flapack.pyf.src']
    sources += get_g77_abi_wrappers(lapack_opt)
    depends = [
        'flapack_gen.pyf.src', 'flapack_gen_banded.pyf.src',
        'flapack_gen_tri.pyf.src', 'flapack_pos_def.pyf.src',
        'flapack_pos_def_tri.pyf.src', 'flapack_sym_herm.pyf.src',
        'flapack_other.pyf.src', 'flapack_user.pyf.src'
    ]

    config.add_extension('_flapack',
                         sources=sources,
                         depends=depends,
                         extra_info=lapack_opt)

    if uses_blas64():
        sources = ['flapack_64.pyf.src'] + sources[1:]
        ext = config.add_extension('_flapack_64',
                                   sources=sources,
                                   depends=depends,
                                   f2py_options=get_f2py_int64_options(),
                                   extra_info=lapack_ilp64_opt)
        ext._pre_build_hook = blas_ilp64_pre_build_hook(lapack_ilp64_opt)

    if atlas_version is not None:
        # cblas:
        config.add_extension('_cblas',
                             sources=['cblas.pyf.src'],
                             depends=['cblas.pyf.src', 'cblas_l1.pyf.src'],
                             extra_info=lapack_opt)

        # clapack:
        config.add_extension('_clapack',
                             sources=['clapack.pyf.src'],
                             depends=['clapack.pyf.src'],
                             extra_info=lapack_opt)

    # _flinalg:
    config.add_extension('_flinalg',
                         sources=[join('src', 'det.f'),
                                  join('src', 'lu.f')],
                         extra_info=lapack_opt)

    # _interpolative:
    ext = config.add_extension(
        '_interpolative',
        sources=[join('src', 'id_dist', 'src', '*.f'), "interpolative.pyf"],
        extra_info=lapack_opt)
    ext._pre_build_hook = gfortran_legacy_flag_hook

    # _solve_toeplitz:
    config.add_extension('_solve_toeplitz',
                         sources=[('_solve_toeplitz.c')],
                         include_dirs=[get_numpy_include_dirs()])

    # _matfuncs_sqrtm_triu:
    if int(os.environ.get('SCIPY_USE_PYTHRAN', 1)):
        import pythran
        ext = pythran.dist.PythranExtension(
            'scipy.linalg._matfuncs_sqrtm_triu',
            sources=["scipy/linalg/_matfuncs_sqrtm_triu.py"],
            config=['compiler.blas=none'])
        config.ext_modules.append(ext)
    else:
        config.add_extension('_matfuncs_sqrtm_triu',
                             sources=[('_matfuncs_sqrtm_triu.c')],
                             include_dirs=[get_numpy_include_dirs()])

    config.add_data_dir('tests')

    # Cython BLAS/LAPACK
    config.add_data_files('cython_blas.pxd')
    config.add_data_files('cython_lapack.pxd')

    sources = ['_blas_subroutine_wrappers.f', '_lapack_subroutine_wrappers.f']
    sources += get_g77_abi_wrappers(lapack_opt)
    includes = numpy_info().get_include_dirs() + [get_python_inc()]
    config.add_library('fwrappers', sources=sources, include_dirs=includes)

    config.add_extension('cython_blas',
                         sources=['cython_blas.c'],
                         depends=[
                             'cython_blas.pyx', 'cython_blas.pxd',
                             'fortran_defs.h', '_blas_subroutines.h'
                         ],
                         include_dirs=['.'],
                         libraries=['fwrappers'],
                         extra_info=lapack_opt)

    config.add_extension('cython_lapack',
                         sources=['cython_lapack.c'],
                         depends=[
                             'cython_lapack.pyx', 'cython_lapack.pxd',
                             'fortran_defs.h', '_lapack_subroutines.h'
                         ],
                         include_dirs=['.'],
                         libraries=['fwrappers'],
                         extra_info=lapack_opt)

    config.add_extension('_decomp_update', sources=['_decomp_update.c'])

    config.add_data_files('_cythonized_array_utils.pxd')

    config.add_extension(
        '_cythonized_array_utils',
        sources=['_cythonized_array_utils.c'],
        depends=['_cythonized_array_utils.pyx', '_cythonized_array_utils.pxd'],
        include_dirs=['.'])

    config.add_extension('_matfuncs_expm', sources=['_matfuncs_expm.c'])

    # Add any license files
    config.add_data_files('src/id_dist/doc/doc.tex')
    config.add_data_files('src/lapack_deprecations/LICENSE')

    # Type stubs
    config.add_data_files('*.pyi')

    return config
Beispiel #6
0
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 (gfortran_legacy_flag_hook,
                                    blas_ilp64_pre_build_hook, combine_dict,
                                    uses_blas64, get_f2py_int64_options)
    from scipy._build_utils.compiler_helper import (set_cxx_flags_clib_hook,
                                                    set_c_flags_hook)
    from distutils.sysconfig import get_python_inc

    config = Configuration('optimize', parent_package, top_path)

    include_dirs = [join(os.path.dirname(__file__), '..', '_lib', 'src')]

    minpack_src = [join('minpack', '*f')]
    config.add_library('minpack', sources=minpack_src)
    config.add_extension('_minpack',
                         sources=['_minpackmodule.c'],
                         libraries=['minpack'],
                         depends=(["minpack.h", "__minpack.h"] + minpack_src),
                         include_dirs=include_dirs,
                         **numpy_nodepr_api)

    config.add_library('rectangular_lsap',
                       sources='rectangular_lsap/rectangular_lsap.cpp',
                       headers='rectangular_lsap/rectangular_lsap.h',
                       _pre_build_hook=set_cxx_flags_clib_hook)
    _lsap = config.add_extension('_lsap',
                                 sources=['_lsap.c'],
                                 libraries=['rectangular_lsap'],
                                 depends=([
                                     'rectangular_lsap/rectangular_lsap.cpp',
                                     'rectangular_lsap/rectangular_lsap.h'
                                 ]),
                                 include_dirs=include_dirs,
                                 **numpy_nodepr_api)
    _lsap._pre_build_hook = set_c_flags_hook

    rootfind_src = [join('Zeros', '*.c')]
    rootfind_hdr = [join('Zeros', 'zeros.h')]
    config.add_library('rootfind',
                       sources=rootfind_src,
                       headers=rootfind_hdr,
                       **numpy_nodepr_api)

    config.add_extension('_zeros',
                         sources=['zeros.c'],
                         libraries=['rootfind'],
                         depends=(rootfind_src + rootfind_hdr),
                         **numpy_nodepr_api)

    if uses_blas64():
        lapack = get_info('lapack_ilp64_opt')
        f2py_options = get_f2py_int64_options()
        pre_build_hook = blas_ilp64_pre_build_hook(lapack)
    else:
        lapack = get_info('lapack_opt')
        f2py_options = None
        pre_build_hook = None

    lapack = combine_dict(lapack, numpy_nodepr_api)

    sources = ['lbfgsb.pyf', 'lbfgsb.f', 'linpack.f', 'timer.f']
    ext = config.add_extension(
        '_lbfgsb',
        sources=[join('lbfgsb_src', x) for x in sources],
        f2py_options=f2py_options,
        **lapack)
    ext._pre_build_hook = pre_build_hook

    sources = ['_moduleTNC.c', 'tnc.c']
    config.add_extension('_moduleTNC',
                         sources=[join('tnc', x) for x in sources],
                         depends=[join('tnc', 'tnc.h')],
                         **numpy_nodepr_api)

    config.add_extension('_cobyla',
                         sources=[
                             join('cobyla', x)
                             for x in ['cobyla.pyf', 'cobyla2.f', 'trstlp.f']
                         ],
                         **numpy_nodepr_api)

    sources = ['minpack2.pyf', 'dcsrch.f', 'dcstep.f']
    config.add_extension('_minpack2',
                         sources=[join('minpack2', x) for x in sources],
                         **numpy_nodepr_api)

    sources = ['slsqp.pyf', 'slsqp_optmz.f']
    ext = config.add_extension('_slsqp',
                               sources=[join('slsqp', x) for x in sources],
                               **numpy_nodepr_api)
    ext._pre_build_hook = gfortran_legacy_flag_hook

    sources = [
        join('_direct', x)
        for x in ('direct_wrap.c', 'DIRect.c', 'DIRsubrout.c', 'DIRserial.c')
    ]
    headers = ['_directmodule.h', join('_direct', 'direct-internal.h')]
    config.add_library('_direct_lib',
                       sources=sources,
                       headers=headers,
                       include_dirs=[get_python_inc()],
                       **numpy_nodepr_api)

    config.add_extension('_direct',
                         sources=['_directmodule.c'],
                         libraries=['_direct_lib'],
                         depends=(sources + headers),
                         **numpy_nodepr_api)

    config.add_data_files('__nnls.pyi')
    ext = config.add_extension(
        '__nnls',
        sources=[join('__nnls', x) for x in ["nnls.f", "nnls.pyf"]],
        **numpy_nodepr_api)
    ext._pre_build_hook = gfortran_legacy_flag_hook

    if int(os.environ.get('SCIPY_USE_PYTHRAN', 1)):
        import pythran
        ext = pythran.dist.PythranExtension(
            'scipy.optimize._group_columns',
            sources=["scipy/optimize/_group_columns.py"],
            config=['compiler.blas=none'])
        config.ext_modules.append(ext)
    else:
        config.add_extension(
            '_group_columns',
            sources=['_group_columns.c'],
        )

    config.add_extension('_bglu_dense', sources=['_bglu_dense.c'])

    config.add_subpackage('_lsq')

    config.add_subpackage('_trlib')

    config.add_subpackage('_trustregion_constr')

    # Cython optimize API for zeros functions
    config.add_subpackage('cython_optimize')
    config.add_data_files('cython_optimize.pxd')

    config.add_subpackage('_shgo_lib')
    config.add_data_dir('_shgo_lib')

    # HiGHS linear programming libraries and extensions
    if 'sdist' not in sys.argv:
        # Avoid running this during sdist creation - it makes numpy.distutils
        # create an empty cython/src top-level directory.
        config.add_subpackage('_highs')

    config.add_data_dir('tests')

    # Add license files
    config.add_data_files('lbfgsb_src/README')

    return config
Beispiel #7
0
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')]

    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_subpackage('_ivp')
    return config