135 lines
5.0 KiB
Python
135 lines
5.0 KiB
Python
import os.path
|
|
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 (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
|
|
|
|
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
|
|
|
|
|
|
if __name__ == '__main__':
|
|
from numpy.distutils.core import setup
|
|
setup(**configuration(top_path='').todict())
|