--- numpy/core/setup.py.orig
+++ numpy/core/setup.py
@@ -466,7 +466,14 @@
                 if isinstance(d, str):
                     target_f.write('#define %s\n' % (d))
                 else:
-                    target_f.write('#define %s %s\n' % (d[0], d[1]))
+                    if d[0]!='SIZEOF_LONG' and d[0]!='SIZEOF_PY_INTPTR_T':
+                        target_f.write('#define %s %s\n' % (d[0], d[1]))
+                    else:
+                        target_f.write('#ifdef __LP64__\n')
+                        target_f.write('#define %s %s\n' % (d[0], 8))
+                        target_f.write('#else\n')
+                        target_f.write('#define %s %s\n' % (d[0], 4))
+                        target_f.write('#endif\n')
 
             # define inline to our keyword, or nothing
             target_f.write('#ifndef __cplusplus\n')
@@ -567,7 +574,14 @@
                 if isinstance(d, str):
                     target_f.write('#define %s\n' % (d))
                 else:
-                    target_f.write('#define %s %s\n' % (d[0], d[1]))
+                    if d[0]!='NPY_SIZEOF_LONG' and d[0]!='NPY_SIZEOF_PY_INTPTR_T':
+                        target_f.write('#define %s %s\n' % (d[0], d[1]))
+                    else:
+                        target_f.write('#ifdef __LP64__\n')
+                        target_f.write('#define %s %s\n' % (d[0], 8))
+                        target_f.write('#else\n')
+                        target_f.write('#define %s %s\n' % (d[0], 4))
+                        target_f.write('#endif\n')
 
             # Define __STDC_FORMAT_MACROS
             target_f.write("""
