3from setuptools import Extension
4import os
5import sys
6import subprocess
8class CMakeExtension(Extension):
9 def __init__(self, name, sourcedir=""):
10 Extension.__init__(self, name, sources=[])
11 self.sourcedir = os.path.abspath(sourcedir)
13class CMakeBuild(build_ext):
14 def build_extension(self, ext):
15 extdir = os.path.abspath(os.path.dirname(self.get_ext_fullpath(ext.name)))
17 cmake_args = [
18 f"-DCMAKE_LIBRARY_OUTPUT_DIRECTORY={extdir}",
19 f"-DPYTHON_EXECUTABLE={sys.executable}"
20 ]
22 build_args = []
24 if not os.path.exists(self.build_temp):
25 os.makedirs(self.build_temp)
27 subprocess.check_call(["cmake", ext.sourcedir] + cmake_args, cwd=self.build_temp)
28 subprocess.check_call(["cmake", "--build", "."] + build_args, cwd=self.build_temp)
30setup(
33 packages=find_packages(where="src"),
34 package_dir={"": "src"},
c1f542arename ansJeremy Magland 36 CMakeExtension("benchcompress.algorithms.ans.markov_reconstruct_cpp_ext",
37 sourcedir="src/benchcompress/algorithms/ans"),
38 CMakeExtension("benchcompress.algorithms.ans.markov_predict_cpp_ext",
39 sourcedir="src/benchcompress/algorithms/ans"),
40 CMakeExtension("benchcompress.algorithms.ans.get_run_lengths_cpp_ext",
41 sourcedir="src/benchcompress/algorithms/ans")
43 cmdclass={
44 "build_ext": CMakeBuild,
45 },
48 "console_scripts": [
51 },
93dd44areorganize datasets and algs, add seismicJeremy Magland 53 description="Benchmarking compression methods for scientific data arrays",
55 long_description_content_type="text/markdown",
58 "Development Status :: 3 - Alpha",
59 "Intended Audience :: Science/Research",
60 "Programming Language :: Python :: 3",
61 "Programming Language :: Python :: 3.8",
62 "Programming Language :: Python :: 3.9",
63 "Programming Language :: Python :: 3.10",
64 "Programming Language :: Python :: 3.11"
65 ],
66)