@@ -66,6 +66,15 @@ def has_flag(self, flagname):
66
66
return True
67
67
68
68
69
+ # Wrapper for distutils.ccompiler.CCompiler._compile to remove C++-specific
70
+ # flags when compiling C files.
71
+ def compile_wrapper (compiler , obj , src , ext , cc_args , extra_postargs , pp_opts ):
72
+ if src .lower ().endswith (".c" ):
73
+ extra_postargs = list (filter (lambda x : x [1 :4 ] != "std" ,
74
+ extra_postargs ))
75
+ compiler ._compile_old (obj , src , ext , cc_args , extra_postargs , pp_opts )
76
+
77
+
69
78
class BuildExtraLibraries (setuptools .command .build_ext .build_ext ):
70
79
def finalize_options (self ):
71
80
self .distribution .ext_modules [:] = [
@@ -184,9 +193,20 @@ def build_extension(self, ext):
184
193
orig_build_temp = self .build_temp
185
194
self .build_temp = os .path .join (self .build_temp , ext .name )
186
195
try :
196
+ if ext .name == "matplotlib._qhull" :
197
+ # For qhull extension some C++ flags must be removed before
198
+ # compiling C files.
199
+ from distutils .ccompiler import CCompiler
200
+ self .compiler ._compile_old = self .compiler ._compile
201
+ self .compiler ._compile = compile_wrapper .__get__ (
202
+ self .compiler , CCompiler )
187
203
super ().build_extension (ext )
188
204
finally :
189
205
self .build_temp = orig_build_temp
206
+ if ext .name == "matplotlib._qhull" and hasattr (
207
+ self .compiler , "_compile_old" ):
208
+ self .compiler ._compile = self .compiler ._compile_old
209
+ delattr (self .compiler , "_compile_old" )
190
210
191
211
192
212
def update_matplotlibrc (path ):
0 commit comments