setup.py 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. from __future__ import division, print_function, absolute_import
  2. from os.path import join, dirname
  3. import glob
  4. def configuration(parent_package='', top_path=None):
  5. from numpy.distutils.misc_util import Configuration, get_numpy_include_dirs
  6. from numpy.distutils.misc_util import get_info as get_misc_info
  7. from scipy._build_utils.system_info import get_info as get_sys_info
  8. from distutils.sysconfig import get_python_inc
  9. config = Configuration('spatial', parent_package, top_path)
  10. config.add_data_dir('tests')
  11. # spatial.transform
  12. config.add_subpackage('transform')
  13. # qhull
  14. qhull_src = sorted(glob.glob(join(dirname(__file__), 'qhull_src',
  15. 'src', '*.c')))
  16. inc_dirs = [get_python_inc()]
  17. if inc_dirs[0] != get_python_inc(plat_specific=1):
  18. inc_dirs.append(get_python_inc(plat_specific=1))
  19. inc_dirs.append(get_numpy_include_dirs())
  20. inc_dirs.append(join(dirname(dirname(__file__)), '_lib'))
  21. cfg = dict(get_sys_info('lapack_opt'))
  22. cfg.setdefault('include_dirs', []).extend(inc_dirs)
  23. config.add_extension('qhull',
  24. sources=['qhull.c'] + qhull_src,
  25. **cfg)
  26. # cKDTree
  27. ckdtree_src = ['query.cxx',
  28. 'build.cxx',
  29. 'globals.cxx',
  30. 'cpp_exc.cxx',
  31. 'query_pairs.cxx',
  32. 'count_neighbors.cxx',
  33. 'query_ball_point.cxx',
  34. 'query_ball_tree.cxx',
  35. 'sparse_distances.cxx']
  36. ckdtree_src = [join('ckdtree', 'src', x) for x in ckdtree_src]
  37. ckdtree_headers = ['ckdtree_decl.h',
  38. 'ckdtree_methods.h',
  39. 'coo_entries.h',
  40. 'cpp_exc.h',
  41. 'cpp_utils.h',
  42. 'distance_base.h',
  43. 'distance.h',
  44. 'ordered_pair.h',
  45. 'partial_sort.h',
  46. 'rectangle.h']
  47. ckdtree_headers = [join('ckdtree', 'src', x) for x in ckdtree_headers]
  48. ckdtree_dep = ['ckdtree.cxx'] + ckdtree_headers + ckdtree_src
  49. config.add_extension('ckdtree',
  50. sources=['ckdtree.cxx'] + ckdtree_src,
  51. depends=ckdtree_dep,
  52. include_dirs=inc_dirs + [join('ckdtree', 'src')])
  53. # _distance_wrap
  54. config.add_extension('_distance_wrap',
  55. sources=[join('src', 'distance_wrap.c')],
  56. depends=[join('src', 'distance_impl.h')],
  57. include_dirs=[get_numpy_include_dirs()],
  58. extra_info=get_misc_info("npymath"))
  59. config.add_extension('_voronoi',
  60. sources=['_voronoi.c'])
  61. config.add_extension('_hausdorff',
  62. sources=['_hausdorff.c'])
  63. # Add license files
  64. config.add_data_files('qhull_src/COPYING.txt')
  65. return config
  66. if __name__ == '__main__':
  67. from numpy.distutils.core import setup
  68. setup(**configuration(top_path='').todict())