import os import re import sys import time import subprocess from distutils import sysconfig from setuptools import setup, Extension, find_packages from Cython.Build import build_ext, cythonize class CMakeExtension(Extension): def __init__(self, name, sourcedir=''): Extension.__init__(self, name, sources=[]) self.sourcedir = os.path.abspath(sourcedir) class CMakeBuild(build_ext): def build_extension(self, ext): if isinstance(ext, CMakeExtension): extdir = os.path.abspath(os.path.dirname(self.get_ext_fullpath(ext.name))) if not extdir.endswith(os.path.sep): extdir += os.path.sep if not os.path.exists(self.build_temp): os.makedirs(self.build_temp) subprocess.check_call(['cmake', ext.sourcedir, '-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=' + extdir], cwd=self.build_temp) subprocess.check_call(['cmake', '--build', '.', '--', 'VERBOSE=1', '-j8'], cwd=self.build_temp) else: super().build_extension(ext) ext_modules = [CMakeExtension('greedrl_c')] setup( name='greedrl', version='1.0.0', packages=find_packages(), ext_modules=ext_modules, cmdclass={'build_ext': CMakeBuild}, install_requires=["torch==1.12.1+cu113"], )