mirror of
https://github.com/nqrduck/LimeDriverBindings.git
synced 2024-06-21 13:23:20 +00:00
Kumi
7fe4ccdf38
Commented out the hardcoded compiler environment setting in the setup script to allow for greater flexibility in users' build environments. Letting the user or the system decide the appropriate C++ compiler prevents potential conflicts with predefined environment configurations.
54 lines
1.4 KiB
Python
54 lines
1.4 KiB
Python
from setuptools import setup, Extension
|
|
from setuptools.command.build_ext import build_ext
|
|
|
|
import subprocess
|
|
import os
|
|
|
|
from Cython.Build import cythonize
|
|
|
|
#os.environ['CXX'] = 'h5c++'
|
|
|
|
class BuildExtCommand(build_ext):
|
|
"""Custom build_ext command to ensure that the submodule is retrieved and built."""
|
|
|
|
def build_extensions(self):
|
|
rpath_flags = ['-Wl,-rpath,/usr/lib/']
|
|
for ext in self.extensions:
|
|
ext.extra_compile_args = rpath_flags
|
|
ext.extra_link_args = rpath_flags
|
|
ext.libraries.extend(['hdf5', 'hdf5_cpp'])
|
|
build_ext.build_extensions(self)
|
|
|
|
super().build_extensions()
|
|
|
|
def run(self):
|
|
if not os.path.exists('extern/limedriver/src'):
|
|
self.clone_limedriver()
|
|
|
|
super().run()
|
|
|
|
def clone_limedriver(self):
|
|
subprocess.check_call(['git', 'submodule', 'init'], shell=True)
|
|
subprocess.check_call(['git', 'submodule', 'update'], shell=True)
|
|
|
|
ext_modules = [
|
|
Extension(
|
|
'limedriver.binding',
|
|
sources=['src/limedriver/limedriver.pyx', 'extern/limedriver/src/limedriver.cpp'],
|
|
include_dirs=["extern/limedriver/src/", "/usr/include/hdf5/serial/"], # TODO: This is REALLY ugly.
|
|
library_dirs=["/usr/lib/"],
|
|
libraries=["LimeSuite"],
|
|
language="c++",
|
|
),
|
|
]
|
|
|
|
setup(
|
|
name='limedriver',
|
|
|
|
cmdclass={
|
|
'build_ext': BuildExtCommand,
|
|
},
|
|
|
|
ext_modules=cythonize(ext_modules),
|
|
)
|