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"},
35 install_requires=[
42 "brotli",
47 CMakeExtension("zia_benchmark.algorithms.simple_ans.markov_reconstruct_cpp_ext",
48 sourcedir="src/zia_benchmark/algorithms/simple_ans")
49 ],
50 cmdclass={
51 "build_ext": CMakeBuild,
52 },
55 "console_scripts": [
56 "zia-benchmark=zia_benchmark.cli:main",
57 ],
58 },
62 long_description_content_type="text/markdown",
65 "Development Status :: 3 - Alpha",
66 "Intended Audience :: Science/Research",
67 "Programming Language :: Python :: 3",
68 "Programming Language :: Python :: 3.8",
69 "Programming Language :: Python :: 3.9",
70 "Programming Language :: Python :: 3.10",
71 "Programming Language :: Python :: 3.11"
72 ],
73)