30
30
31
31
ISA_L_SOURCE = os .path .join ("src" , "isal" , "isa-l" )
32
32
33
+ SYSTEM_IS_UNIX = (sys .platform .startswith ("linux" ) or
34
+ sys .platform .startswith ("darwin" ))
35
+ SYSTEM_IS_WINDOWS = sys .platform .startswith ("win" )
36
+
33
37
34
38
class IsalExtension (Extension ):
35
39
"""Custom extension to allow for targeted modification."""
36
40
pass
37
41
38
42
43
+ MODULES = [IsalExtension ("isal.isal_zlib" , ["src/isal/isal_zlib.pyx" ])]
44
+ if SYSTEM_IS_UNIX :
45
+ MODULES .append (IsalExtension ("isal._isal" , ["src/isal/_isal.pyx" ]))
46
+
47
+
39
48
class BuildIsalExt (build_ext ):
40
49
def build_extension (self , ext ):
41
50
if not isinstance (ext , IsalExtension ):
@@ -57,11 +66,10 @@ def build_extension(self, ext):
57
66
ext .libraries = ["isal" ]
58
67
else :
59
68
isa_l_prefix_dir = build_isa_l ()
60
- if (sys .platform .startswith ("linux" ) or
61
- sys .platform .startswith ("darwin" )):
69
+ if SYSTEM_IS_UNIX :
62
70
ext .extra_objects = [
63
71
os .path .join (isa_l_prefix_dir , "lib" , "libisal.a" )]
64
- elif sys . platform . startswith ( "win" ) :
72
+ elif SYSTEM_IS_WINDOWS :
65
73
ext .extra_objects = [
66
74
os .path .join (isa_l_prefix_dir , "isa-l_static.lib" )]
67
75
else :
@@ -110,17 +118,22 @@ def build_isa_l():
110
118
else : # sched_getaffinity not available on all platforms
111
119
cpu_count = os .cpu_count () or 1 # os.cpu_count() can return None
112
120
run_args = dict (cwd = build_dir , env = build_env )
113
- if sys . platform . startswith ( "linux" ) or sys . platform . startswith ( "darwin" ) :
121
+ if SYSTEM_IS_UNIX :
114
122
subprocess .run (os .path .join (build_dir , "autogen.sh" ), ** run_args )
115
123
subprocess .run ([os .path .join (build_dir , "configure" ),
116
124
"--prefix" , temp_prefix ], ** run_args )
117
125
subprocess .run (["make" , "-j" , str (cpu_count )],
118
126
** run_args )
119
127
subprocess .run (["make" , "install" ], ** run_args )
120
128
shutil .rmtree (build_dir )
121
- elif sys . platform . startswith ( "win" ) :
129
+ elif SYSTEM_IS_WINDOWS :
122
130
subprocess .run (["nmake" , "/f" , "Makefile.nmake" ], ** run_args )
123
- temp_prefix = build_dir
131
+ Path (temp_prefix , "include" ).mkdir ()
132
+ print (temp_prefix , file = sys .stderr )
133
+ shutil .copytree (os .path .join (build_dir , "include" ),
134
+ Path (temp_prefix , "include" , "isa-l" ))
135
+ shutil .copy (os .path .join (build_dir , "isa-l_static.lib" ),
136
+ os .path .join (temp_prefix , "isa-l_static.lib" ))
124
137
else :
125
138
raise NotImplementedError (f"Unsupported platform: { sys .platform } " )
126
139
return temp_prefix
@@ -163,8 +176,5 @@ def build_isa_l():
163
176
"Operating System :: MacOS"
164
177
],
165
178
python_requires = ">=3.6" ,
166
- ext_modules = [
167
- IsalExtension ("isal.isal_zlib" , ["src/isal/isal_zlib.pyx" ]),
168
- IsalExtension ("isal._isal" , ["src/isal/_isal.pyx" ]),
169
- ]
179
+ ext_modules = MODULES
170
180
)
0 commit comments