1
0

setup.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. from __future__ import division, print_function
  2. import os
  3. import sys
  4. def configuration(parent_package='', top_path=None):
  5. from numpy.distutils.misc_util import Configuration
  6. from numpy.distutils.system_info import get_info
  7. config = Configuration('linalg', parent_package, top_path)
  8. config.add_data_dir('tests')
  9. # Configure lapack_lite
  10. src_dir = 'lapack_lite'
  11. lapack_lite_src = [
  12. os.path.join(src_dir, 'python_xerbla.c'),
  13. os.path.join(src_dir, 'f2c_z_lapack.c'),
  14. os.path.join(src_dir, 'f2c_c_lapack.c'),
  15. os.path.join(src_dir, 'f2c_d_lapack.c'),
  16. os.path.join(src_dir, 'f2c_s_lapack.c'),
  17. os.path.join(src_dir, 'f2c_lapack.c'),
  18. os.path.join(src_dir, 'f2c_blas.c'),
  19. os.path.join(src_dir, 'f2c_config.c'),
  20. os.path.join(src_dir, 'f2c.c'),
  21. ]
  22. all_sources = config.paths(lapack_lite_src)
  23. if os.environ.get('NPY_USE_BLAS_ILP64', "0") != "0":
  24. lapack_info = get_info('lapack_ilp64_opt', 2)
  25. else:
  26. lapack_info = get_info('lapack_opt', 0) # and {}
  27. def get_lapack_lite_sources(ext, build_dir):
  28. if not lapack_info:
  29. print("### Warning: Using unoptimized lapack ###")
  30. return all_sources
  31. else:
  32. if sys.platform == 'win32':
  33. print("### Warning: python_xerbla.c is disabled ###")
  34. return []
  35. return [all_sources[0]]
  36. config.add_extension(
  37. 'lapack_lite',
  38. sources=['lapack_litemodule.c', get_lapack_lite_sources],
  39. depends=['lapack_lite/f2c.h'],
  40. extra_info=lapack_info,
  41. )
  42. # umath_linalg module
  43. config.add_extension(
  44. '_umath_linalg',
  45. sources=['umath_linalg.c.src', get_lapack_lite_sources],
  46. depends=['lapack_lite/f2c.h'],
  47. extra_info=lapack_info,
  48. libraries=['npymath'],
  49. )
  50. return config
  51. if __name__ == '__main__':
  52. from numpy.distutils.core import setup
  53. setup(configuration=configuration)