@@ -198,6 +198,18 @@ def preprocess_python_headers():
198198def gen_interop_code (members ):
199199 """Generate the TypeOffset C# class"""
200200
201+ defines = [
202+ "PYTHON%d%s" % (sys .version_info [:2 ])
203+ ]
204+
205+ if hasattr (sys , "abiflags" ):
206+ if "d" in sys .abiflags :
207+ defines .append ("PYTHON_WITH_PYDEBUG" )
208+ if "m" in sys .abiflags :
209+ defines .append ("PYTHON_WITH_PYMALLOC" )
210+ if "u" in sys .abiflags :
211+ defines .append ("PYTHON_WITH_WIDE_UNICODE" )
212+
201213 class_definition = """
202214// Auto-generated by %s.
203215// DOT NOT MODIFIY BY HAND.
@@ -209,7 +221,7 @@ def gen_interop_code(members):
209221// WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
210222// FOR A PARTICULAR PURPOSE.
211223// ==========================================================================
212-
224+ #if (%s)
213225using System;
214226using System.Collections;
215227using System.Collections.Specialized;
@@ -236,7 +248,7 @@ def gen_interop_code(members):
236248 }
237249
238250 // Auto-generated from PyHeapTypeObject in Python.h
239- """ % os .path .basename (__file__ )
251+ """ % ( os .path .basename (__file__ ), " && " . join ( defines ) )
240252
241253 # All the members are sizeof(void*) so we don't need to do any
242254 # extra work to determine the size based on the type.
@@ -249,6 +261,7 @@ def gen_interop_code(members):
249261 public static int members = 0;
250262 }
251263}
264+ #endif
252265"""
253266 return class_definition
254267
0 commit comments