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
|
diff --git a/setup.py b/setup.py
index 865544d..24fdc36 100644
--- a/setup.py
+++ b/setup.py
@@ -1,5 +1,6 @@
import os.path
import platform
+import itertools
from setuptools import setup, find_packages, Extension
@@ -17,11 +18,18 @@ with open(os.path.join(root, 'README.md'), 'rb') as readme:
system = platform.system()
+libraries = []
+extra_sources = []
extra_compile_args = []
if system == 'Darwin':
extra_compile_args.append('-std=c++11')
+if os.getenv('BUILD_WITH_SYSTEM_LIB'):
+ libraries.append('simdjson')
+else:
+ extra_sources.append('simdjson/simdjson.cpp')
+
if os.getenv('BUILD_WITH_CYTHON') and not CYTHON_AVAILABLE:
print(
'BUILD_WITH_CYTHON environment variable is set, but cython'
@@ -49,12 +57,15 @@ if os.getenv('BUILD_WITH_CYTHON') and CYTHON_AVAILABLE:
extensions = cythonize([
Extension(
'csimdjson',
- [
- 'simdjson/simdjson.cpp',
- 'simdjson/util.cpp',
- 'simdjson/csimdjson.pyx'
- ],
+ list(itertools.chain(
+ [
+ 'simdjson/util.cpp',
+ 'simdjson/csimdjson.pyx'
+ ],
+ extra_sources
+ )),
define_macros=macros,
+ libraries=libraries,
extra_compile_args=extra_compile_args
)
], compiler_directives=compiler_directives, force=force)
@@ -62,12 +73,15 @@ else:
extensions = [
Extension(
'csimdjson',
- [
- 'simdjson/simdjson.cpp',
- 'simdjson/util.cpp',
- 'simdjson/csimdjson.cpp'
- ],
+ list(itertools.chain(
+ [
+ 'simdjson/util.cpp',
+ 'simdjson/csimdjson.cpp'
+ ],
+ extra_sources
+ )),
extra_compile_args=extra_compile_args,
+ libraries=libraries,
language='c++'
)
]
|