Skip to content

Commit a643aa9

Browse files
committed
C++ extensions: switched to NumPy API v1.7
1 parent 5a8d366 commit a643aa9

2 files changed

Lines changed: 955 additions & 947 deletions

File tree

setup.py

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,8 @@
1313
SRCPATH = osp.join(".", "src")
1414

1515

16-
# We create requirements for C/pyx dependencies compilation and integration into wheel
17-
# file
1816
def is_msvc():
1917
"""Detect if Microsoft Visual C++ compiler was chosen to build package"""
20-
# checking if mingw is the compiler
21-
# mingw32 compiler configured in %USERPROFILE%\pydistutils.cfg
22-
# or distutils\distutils.cfg
2318
dist = Distribution()
2419
dist.parse_config_files()
2520
bld = dist.get_option_dict("build")
@@ -30,51 +25,64 @@ def is_msvc():
3025
return os.name == "nt" and "mingw" not in "".join(sys.argv)
3126

3227

33-
CFLAGS = ["-Wall"]
34-
if is_msvc():
35-
CFLAGS.insert(0, "/EHsc")
36-
for arg, compile_arg in (("--sse2", "-msse2"), ("--sse3", "-msse3")):
37-
if arg in sys.argv:
38-
sys.argv.pop(sys.argv.index(arg))
39-
CFLAGS.insert(0, compile_arg)
28+
def get_compiler_flags():
29+
"""Get compiler flags for C++ dependencies compilation"""
30+
if is_msvc():
31+
cflags = ["/EHsc"]
32+
else:
33+
cflags = ["-Wall"]
34+
for arg, compile_arg in (("--sse2", "-msse2"), ("--sse3", "-msse3")):
35+
if arg in sys.argv:
36+
sys.argv.pop(sys.argv.index(arg))
37+
cflags.insert(0, compile_arg)
38+
return cflags
4039

4140

42-
for fname in os.listdir(SRCPATH):
43-
if osp.splitext(fname)[1] == ".pyx":
44-
Main.compile(osp.join(SRCPATH, fname), language_level=2)
41+
def compile_cython_extensions():
42+
"""Compile Cython extensions"""
43+
for fname in os.listdir(SRCPATH):
44+
if osp.splitext(fname)[1] == ".pyx":
45+
Main.compile(osp.join(SRCPATH, fname), language_level=2)
46+
47+
48+
compile_cython_extensions()
49+
50+
INCLUDE_DIRS = [SRCPATH, numpy.get_include()]
51+
DEFINE_MACROS = [("NPY_NO_DEPRECATED_API", "NPY_1_7_API_VERSION")]
4552

4653
setup(
4754
ext_modules=[
4855
Extension(
4956
name=f"{LIBNAME}.mandelbrot",
5057
sources=[osp.join(SRCPATH, "mandelbrot.c")],
51-
include_dirs=[SRCPATH, numpy.get_include()],
52-
define_macros=[("NPY_NO_DEPRECATED_API", "NPY_1_7_API_VERSION")],
58+
include_dirs=INCLUDE_DIRS,
59+
define_macros=DEFINE_MACROS,
5360
),
5461
Extension(
5562
name=f"{LIBNAME}.histogram2d",
5663
sources=[osp.join(SRCPATH, "histogram2d.c")],
57-
include_dirs=[SRCPATH, numpy.get_include()],
58-
define_macros=[("NPY_NO_DEPRECATED_API", "NPY_1_7_API_VERSION")],
64+
include_dirs=INCLUDE_DIRS,
65+
define_macros=DEFINE_MACROS,
5966
),
6067
Extension(
6168
name=f"{LIBNAME}.contour2d",
6269
sources=[osp.join(SRCPATH, "contour2d.c")],
63-
include_dirs=[SRCPATH, numpy.get_include()],
64-
define_macros=[("NPY_NO_DEPRECATED_API", "NPY_1_7_API_VERSION")],
70+
include_dirs=INCLUDE_DIRS,
71+
define_macros=DEFINE_MACROS,
6572
),
6673
Extension(
6774
name=f"{LIBNAME}._scaler",
6875
sources=[osp.join(SRCPATH, "scaler.cpp"), osp.join(SRCPATH, "pcolor.cpp")],
69-
extra_compile_args=CFLAGS,
76+
extra_compile_args=get_compiler_flags(),
7077
depends=[
7178
osp.join(SRCPATH, "traits.hpp"),
7279
osp.join(SRCPATH, "points.hpp"),
7380
osp.join(SRCPATH, "arrays.hpp"),
7481
osp.join(SRCPATH, "scaler.hpp"),
7582
osp.join(SRCPATH, "debug.hpp"),
7683
],
77-
include_dirs=[SRCPATH, numpy.get_include()],
84+
include_dirs=INCLUDE_DIRS,
85+
define_macros=DEFINE_MACROS,
7886
),
7987
]
8088
)

0 commit comments

Comments
 (0)