setup.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. from __future__ import division, print_function, absolute_import
  2. import os.path
  3. from os.path import join
  4. from scipy._build_utils import numpy_nodepr_api
  5. def configuration(parent_package='',top_path=None):
  6. from numpy.distutils.misc_util import Configuration
  7. from scipy._build_utils.system_info import get_info
  8. config = Configuration('optimize',parent_package, top_path)
  9. include_dirs = [join(os.path.dirname(__file__), '..', '_lib', 'src')]
  10. minpack_src = [join('minpack','*f')]
  11. config.add_library('minpack',sources=minpack_src)
  12. config.add_extension('_minpack',
  13. sources=['_minpackmodule.c'],
  14. libraries=['minpack'],
  15. depends=(["minpack.h","__minpack.h"]
  16. + minpack_src),
  17. include_dirs=include_dirs,
  18. **numpy_nodepr_api)
  19. rootfind_src = [join('Zeros','*.c')]
  20. rootfind_hdr = [join('Zeros','zeros.h')]
  21. config.add_library('rootfind',
  22. sources=rootfind_src,
  23. headers=rootfind_hdr,
  24. **numpy_nodepr_api)
  25. config.add_extension('_zeros',
  26. sources=['zeros.c'],
  27. libraries=['rootfind'],
  28. depends=(rootfind_src + rootfind_hdr),
  29. **numpy_nodepr_api)
  30. lapack = get_info('lapack_opt')
  31. if 'define_macros' in numpy_nodepr_api:
  32. if ('define_macros' in lapack) and (lapack['define_macros'] is not None):
  33. lapack['define_macros'] = (lapack['define_macros'] +
  34. numpy_nodepr_api['define_macros'])
  35. else:
  36. lapack['define_macros'] = numpy_nodepr_api['define_macros']
  37. sources = ['lbfgsb.pyf', 'lbfgsb.f', 'linpack.f', 'timer.f']
  38. config.add_extension('_lbfgsb',
  39. sources=[join('lbfgsb_src',x) for x in sources],
  40. **lapack)
  41. sources = ['moduleTNC.c','tnc.c']
  42. config.add_extension('moduleTNC',
  43. sources=[join('tnc',x) for x in sources],
  44. depends=[join('tnc','tnc.h')],
  45. **numpy_nodepr_api)
  46. config.add_extension('_cobyla',
  47. sources=[join('cobyla',x) for x in ['cobyla.pyf',
  48. 'cobyla2.f',
  49. 'trstlp.f']],
  50. **numpy_nodepr_api)
  51. sources = ['minpack2.pyf', 'dcsrch.f', 'dcstep.f']
  52. config.add_extension('minpack2',
  53. sources=[join('minpack2',x) for x in sources],
  54. **numpy_nodepr_api)
  55. sources = ['slsqp.pyf', 'slsqp_optmz.f']
  56. config.add_extension('_slsqp', sources=[join('slsqp', x) for x in sources],
  57. **numpy_nodepr_api)
  58. config.add_extension('_nnls', sources=[join('nnls', x)
  59. for x in ["nnls.f","nnls.pyf"]],
  60. **numpy_nodepr_api)
  61. config.add_extension('_group_columns', sources=['_group_columns.c'],)
  62. config.add_subpackage('_lsq')
  63. config.add_subpackage('_trlib')
  64. config.add_subpackage('_trustregion_constr')
  65. config.add_subpackage('_shgo_lib')
  66. config.add_data_dir('_shgo_lib')
  67. config.add_data_dir('tests')
  68. # Add license files
  69. config.add_data_files('lbfgsb_src/README')
  70. return config
  71. if __name__ == '__main__':
  72. from numpy.distutils.core import setup
  73. setup(**configuration(top_path='').todict())