LimeDriverBindings/setup.py
Kumi 7fe4ccdf38
Disabled forced compiler override in setup
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.
2024-02-09 15:40:34 +01:00

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),
)