NKDBsec/setup.py

55 lines
1.9 KiB
Python
Raw Normal View History

2024-01-20 14:14:46 +08:00
# coding:utf-8
import os.path
import subprocess
from setuptools import setup, Extension
from setuptools.command.build_ext import build_ext
from distutils.sysconfig import get_python_inc
class CMakeExtension(Extension):
def __init__(self, name, sourcedir=""):
Extension.__init__(self, name, sources=[])
self.sourcedir = os.path.abspath(sourcedir)
class CMakeBuild(build_ext):
def run(self):
for ext in self.extensions:
self.build_extension(ext)
def build_extension(self, ext):
extdir = self.get_ext_fullpath(ext.name)
extname = self.get_ext_filename(ext.name)
if not os.path.exists(self.build_temp):
os.makedirs(self.build_temp)
install_prefix = os.path.abspath(os.path.dirname(extdir))
if not os.path.exists(install_prefix):
os.makedirs(install_prefix)
cmake_args = []
cmake_args.append('-DCMAKE_LIBRARY_OUTPUT_DIRECTORY={}'.format(install_prefix))
extname = extname[:-3] # remove .so
cmake_args.append("-DPY_NAME={}".format(extname))
pyinc = get_python_inc()
import numpy as np
npinc = np.get_include()
cmake_args.append("-DPYTHONINC={}".format(pyinc))
cmake_args.append("-DNPINC={}".format(npinc))
subprocess.check_call(['cmake', ext.sourcedir, *cmake_args], cwd=self.build_temp)
subprocess.check_call(['make', '-j32'], cwd=self.build_temp)
self.write_stub(".", ext)
# self.copy_extensions_to_source()
setup(
install_requires=['numpy'],
name='dbsecmpc', # 包名字
version='1.0', # 包版本
description='', # 简单描述
author='dbsec', # 作者
author_email='yanghao@dbsec.com', # 作者邮箱
packages=["dbsecmpc"],
url='', # 包的主页
ext_modules=[CMakeExtension("dbsec")],
cmdclass={
'build_ext': CMakeBuild,
}
)