FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
xtensor-python/benchmark/setup.py at master · xtensor-stack/xtensor-python · GitHub
xtensor-stack
xtensor-python
Repository navigation
Code
Issues
38
(38)
Pull requests
4
(4)
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
xtensor-python
/
benchmark
/
setup.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
113 lines (94 loc) · 3.31 KB
Breadcrumbs
xtensor-python
/
benchmark
/
setup.py
Copy path
File metadata and controls
113 lines (94 loc) · 3.31 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
from
setuptools
import
setup
,
Extension
from
setuptools
.
command
.
build_ext
import
build_ext
import
sys
import
os
import
setuptools
__version__
=
'0.0.1'
class
get_pybind_include
(
object
):
"""Helper class to determine the pybind11 include path
The purpose of this class is to postpone importing pybind11
until it is actually installed, so that the ``get_include()``
method can be invoked. """
def
__init__
(
self
,
user
=
False
):
self
.
user
=
user
def
__str__
(
self
):
import
pybind11
return
pybind11
.
get_include
(
self
.
user
)
class
get_numpy_include
(
object
):
"""Helper class to determine the numpy include path
The purpose of this class is to postpone importing numpy
until it is actually installed, so that the ``get_include()``
method can be invoked. """
def
__str__
(
self
):
import
numpy
return
numpy
.
get_include
()
ext_modules
=
[
Extension
(
'benchmark_xtensor_python'
,
[
'main.cpp'
],
include_dirs
=
[
# Path to pybind11 headers
get_pybind_include
(),
get_pybind_include
(
user
=
True
),
# Path to numpy headers
get_numpy_include
(),
os
.
path
.
join
(
sys
.
prefix
,
'include'
),
os
.
path
.
join
(
sys
.
prefix
,
'Library'
,
'include'
)
],
language
=
'c++'
),
]
def
has_flag
(
compiler
,
flagname
):
"""Return a boolean indicating whether a flag name is supported on
the specified compiler.
"""
import
tempfile
with
tempfile
.
NamedTemporaryFile
(
'w'
,
suffix
=
'.cpp'
)
as
f
:
f
.
write
(
'int main (int argc, char **argv) { return 0; }'
)
try
:
compiler
.
compile
([
f
.
name
],
extra_postargs
=
[
flagname
])
except
setuptools
.
distutils
.
errors
.
CompileError
:
return
False
return
True
def
cpp_flag
(
compiler
):
"""Return the -std=c++14 compiler flag and errors when the flag is
no available.
"""
if
has_flag
(
compiler
,
'-std=c++14'
):
return
'-std=c++14'
else
:
raise
RuntimeError
(
'C++14 support is required by xtensor!'
)
class
BuildExt
(
build_ext
):
"""A custom build extension for adding compiler-specific options."""
c_opts
=
{
'msvc'
: [
'/EHsc'
],
'unix'
: [],
}
if
sys
.
platform
==
'darwin'
:
c_opts
[
'unix'
]
+=
[
'-stdlib=libc++'
,
'-mmacosx-version-min=10.7'
]
def
build_extensions
(
self
):
ct
=
self
.
compiler
.
compiler_type
opts
=
self
.
c_opts
.
get
(
ct
, [])
if
ct
==
'unix'
:
opts
.
append
(
'-DVERSION_INFO="%s"'
%
self
.
distribution
.
get_version
())
opts
.
append
(
cpp_flag
(
self
.
compiler
))
if
has_flag
(
self
.
compiler
,
'-fvisibility=hidden'
):
opts
.
append
(
'-fvisibility=hidden'
)
elif
ct
==
'msvc'
:
opts
.
append
(
'/DVERSION_INFO=
\\
"%s
\\
"'
%
self
.
distribution
.
get_version
())
for
ext
in
self
.
extensions
:
ext
.
extra_compile_args
=
opts
build_ext
.
build_extensions
(
self
)
setup
(
name
=
'benchmark_xtensor_python'
,
version
=
__version__
,
author
=
'Sylvain Corlay'
,
author_email
=
'sylvain.corlay@gmail.com'
,
url
=
'https://github.com/pybind/python_example'
,
description
=
'An example project using xtensor-python'
,
long_description
=
''
,
ext_modules
=
ext_modules
,
install_requires
=
[
'pybind11>=2.2.1'
],
cmdclass
=
{
'build_ext'
:
BuildExt
},
zip_safe
=
False
,
)
Back
|
FazBrowse Home
|
New Git URL