-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathsetup.py
More file actions
74 lines (66 loc) · 2.69 KB
/
setup.py
File metadata and controls
74 lines (66 loc) · 2.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
from setuptools import setup, Extension
import numpy
import os, platform, sys, re
try:
from Cython.Build import cythonize
except ImportError:
print('Cython is required')
quit(1)
# path to libs and headers
package_dir = os.path.join('src', 'svmrank')
svm_rank_sourcedir = os.path.join('src', 'c')
include_dirs = [package_dir, svm_rank_sourcedir, numpy.get_include()]
library_dirs = []
libraries = []
# version number
with open(os.path.join(package_dir, '__init__.py'), 'r') as initfile:
version = re.search(r'^__version__\s*=\s*[\'"]([^\'"]*)[\'"]',
initfile.read(), re.MULTILINE).group(1)
# set runtime libraries
runtime_library_dirs = []
extra_compile_args = ['-O3', '-fomit-frame-pointer', '-ffast-math', '-Wall']
extra_link_args = ['-lm', '-Wall']
if platform.system() in ['Linux', 'Darwin']:
for libdir in library_dirs:
extra_link_args.append(f'-Wl,-rpath,{libdir}')
extensions = [
Extension('svmrank.svm_rank',
[
os.path.join(package_dir, 'svm_rank.pyx'),
os.path.join(package_dir, 'utilities.c'),
os.path.join(svm_rank_sourcedir, 'svm_struct_api.c'),
os.path.join(svm_rank_sourcedir, 'svm_struct_learn_custom.c'),
os.path.join(svm_rank_sourcedir, 'svm_struct', 'svm_struct_common.c'),
os.path.join(svm_rank_sourcedir, 'svm_struct', 'svm_struct_learn.c'),
# os.path.join(svm_rank_sourcedir, 'svm_struct', 'svm_struct_main.c'), # main() here
# os.path.join(svm_rank_sourcedir, 'svm_struct', 'svm_struct_classify.c'), # main() here
os.path.join(svm_rank_sourcedir, 'svm_light', 'svm_common.c'),
os.path.join(svm_rank_sourcedir, 'svm_light', 'svm_learn.c'),
# os.path.join(svm_rank_sourcedir, 'svm_light', 'svm_learn_main.c'), # main() here
# os.path.join(svm_rank_sourcedir, 'svm_light', 'svm_classify.c'), # main() here
os.path.join(svm_rank_sourcedir, 'svm_light', 'svm_hideo.c'),
],
include_dirs=include_dirs,
library_dirs=library_dirs,
libraries=libraries,
runtime_library_dirs=runtime_library_dirs,
extra_compile_args=extra_compile_args,
extra_link_args=extra_link_args
)]
extensions = cythonize(extensions, compiler_directives={'language_level': 3})
with open('README.md') as f:
long_description = f.read()
setup(
name = 'PySVMRank',
version = version,
description = 'Python interface and modeling environment for SVMrank',
long_description = long_description,
url = 'https://github.com/ds4dm/PySVMRank',
author = 'Maxime Gasse',
author_email = 'maxime.gasse@polymtl.ca',
license = 'MIT',
ext_modules = extensions,
packages = ['svmrank'],
package_dir = {'svmrank': package_dir},
package_data = {'svmrank': ['svm_rank.pyx', 'svm_rank.pxd', '*.pxi']}
)