-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathsetup.py
55 lines (46 loc) · 2.03 KB
/
setup.py
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
from setuptools import setup, Extension
from Cython.Build import cythonize
import os
import numpy
def get_papi_path_pkg_config():
import pkgconfig
try:
papi_path = pkgconfig.variables('cypapi')['prefix']
except pkgconfig.pkgconfig.PackageNotFoundError:
papi_path = None
return papi_path
def get_papi_path_env_var(path_var: str):
lib_path = os.environ.get(path_var)
if not lib_path:
return None
for path in lib_path.split(':'):
if any(['libpapi' in item for item in os.listdir(path)]):
return os.path.dirname(path)
def configure_extension(ext: Extension, papi_path: str):
papi_inc = os.path.join(papi_path, 'include')
papi_lib = os.path.join(papi_path, 'lib')
ext.include_dirs.append(papi_inc)
ext.library_dirs.append(papi_lib)
ext.runtime_library_dirs.append(papi_lib)
if os.name == 'nt':
raise NotImplementedError('cypapi does not currently support Windows OS')
ext_papi = Extension('cypapi.cypapi', sources=['cypapi/cypapi.pyx'], libraries=['papi'], include_dirs=[numpy.get_include()], define_macros=[("NPY_NO_DEPRECATED_API", "NPY_1_7_API_VERSION")])
ext_sde = Extension('cypapi.cysdelib', sources=['cypapi/cysdelib.pyx'], libraries=['papi', 'sde'], define_macros=[("NPY_NO_DEPRECATED_API", "NPY_1_7_API_VERSION")])
ext_papi_thr = Extension('cypapi.cypapithr', sources=['cypapi/threadsampler.pyx'], libraries=['papi'], include_dirs=[numpy.get_include()], define_macros=[("NPY_NO_DEPRECATED_API", "NPY_1_7_API_VERSION")])
papi_path = os.environ.get('PAPI_DIR')
if not papi_path:
papi_path = get_papi_path_pkg_config()
if not papi_path:
papi_path = get_papi_path_env_var('LIBRARY_PATH')
if not papi_path:
papi_path = get_papi_path_env_var('LD_LIBRARY_PATH')
if papi_path:
configure_extension(ext_papi, papi_path)
configure_extension(ext_sde, papi_path)
configure_extension(ext_papi_thr, papi_path)
setup(
name='cypapi',
packages=['cypapi'],
ext_modules = cythonize([ext_papi,ext_sde,ext_papi_thr]),
install_requires = ['numpy'],
)