1from setuptools import setup, Extension, Distribution 2import setuptools.command.build_ext 3 4import sys 5import sysconfig 6import distutils.sysconfig 7 8 9# FIXME this has to be set from outside! 10sharp_libpath='/home/martin/codes/sharp2/.libs' 11 12class _deferred_pybind11_include(object): 13 def __init__(self, user=False): 14 self.user = user 15 16 def __str__(self): 17 import pybind11 18 return pybind11.get_include(self.user) 19 20 21def _remove_strict_prototype_option_from_distutils_config(): 22 strict_prototypes = '-Wstrict-prototypes' 23 config = distutils.sysconfig.get_config_vars() 24 for key, value in config.items(): 25 if strict_prototypes in str(value): 26 config[key] = config[key].replace(strict_prototypes, '') 27 28 29_remove_strict_prototype_option_from_distutils_config() 30 31 32extra_cc_compile_args = [] 33include_dirs = ['../', 34 _deferred_pybind11_include(), 35 _deferred_pybind11_include(True)] 36 37python_module_link_args = [] 38 39if sys.platform == 'darwin': 40 extra_cc_compile_args += ['--std=c++11', '--stdlib=libc++', 41 '-mmacosx-version-min=10.9'] 42 vars = distutils.sysconfig.get_config_vars() 43 vars['LDSHARED'] = vars['LDSHARED'].replace('-bundle', '') 44 python_module_link_args += ['-bundle'] 45else: 46 extra_cc_compile_args += ['--std=c++11'] 47 python_module_link_args += ["-Wl,-rpath,$ORIGIN"] 48 49 50def get_extension_modules(): 51 return [Extension('pysharp', 52 sources=['pysharp.cc'], 53 include_dirs=include_dirs, 54 extra_compile_args=extra_cc_compile_args, 55 libraries=["sharp2"], 56 library_dirs=[sharp_libpath], 57 extra_link_args=python_module_link_args)] 58 59 60setup(name='pysharp', 61 version='0.0.1', 62 description='Python bindings for libsharp2', 63 include_package_data=True, 64 author='Martin Reinecke', 65 author_email='martin@mpa-garching.mpg.de', 66 packages=[], 67 setup_requires=['numpy>=1.10.4', 'pybind11>=2.2.1'], 68 ext_modules=get_extension_modules(), 69 install_requires=['numpy>=1.10.4', 'pybind11>=2.2.1'] 70 ) 71