summaryrefslogtreecommitdiff
path: root/dev-python/pysimdjson/files/pysimdjson-5.0.2-system-lib.patch
blob: 0a419e5dbc40a0c9d49d9d8f6eefeada0ed671b2 (plain)
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++'
         )
     ]