diff -urN mercurial-1.5/setup.py mercurial-1.5.new/setup.py
--- mercurial-1.5/setup.py	2010-03-05 18:26:10.000000000 -0600
+++ mercurial-1.5.new/setup.py	2010-03-21 00:03:36.000000000 -0500
@@ -9,6 +9,23 @@
 if not hasattr(sys, 'version_info') or sys.version_info < (2, 4, 0, 'final'):
     raise SystemExit("Mercurial requires Python 2.4 or later.")
 
+# Hack to determine Python's native Word Size.
+import struct
+import distutils.util
+
+patch_args = []
+plataform = distutils.util.get_platform()
+if ('x86_64' in plataform or 'i386' in plataform) and 'macosx' in plataform:
+    if struct.calcsize('P')*8 == 64:
+        # 64-bit length word size
+        distutils.util.get_platform = lambda *a, **kw: 'macosx-10.6-x86_64'
+        patch_args = ['-m64']
+    elif struct.calcsize('P')*8 == 32:
+        # 32-bit length word size
+        distutils.util.get_platform = lambda *a, **kw: 'macosx-10.6-i386'
+        patch_args = ['-m32']
+
+
 # Solaris Python packaging brain damage
 try:
     import hashlib
@@ -235,18 +252,18 @@
 pymodules = []
 
 extmodules = [
-    Extension('mercurial.base85', ['mercurial/base85.c']),
-    Extension('mercurial.bdiff', ['mercurial/bdiff.c']),
-    Extension('mercurial.diffhelpers', ['mercurial/diffhelpers.c']),
-    Extension('mercurial.mpatch', ['mercurial/mpatch.c']),
-    Extension('mercurial.parsers', ['mercurial/parsers.c']),
+    Extension('mercurial.base85', ['mercurial/base85.c'], extra_compile_args=patch_args, extra_link_args=patch_args),
+    Extension('mercurial.bdiff', ['mercurial/bdiff.c'], extra_compile_args=patch_args, extra_link_args=patch_args),
+    Extension('mercurial.diffhelpers', ['mercurial/diffhelpers.c'], extra_compile_args=patch_args, extra_link_args=patch_args),
+    Extension('mercurial.mpatch', ['mercurial/mpatch.c'], extra_compile_args=patch_args, extra_link_args=patch_args),
+    Extension('mercurial.parsers', ['mercurial/parsers.c'], extra_compile_args=patch_args, extra_link_args=patch_args),
     ]
 
 # disable osutil.c under windows + python 2.4 (issue1364)
 if sys.platform == 'win32' and sys.version_info < (2, 5, 0, 'final'):
     pymodules.append('mercurial.pure.osutil')
 else:
-    extmodules.append(Extension('mercurial.osutil', ['mercurial/osutil.c']))
+    extmodules.append(Extension('mercurial.osutil', ['mercurial/osutil.c'], extra_compile_args=patch_args, extra_link_args=patch_args))
 
 if sys.platform == 'linux2' and os.uname()[2] > '2.6':
     # The inotify extension is only usable with Linux 2.6 kernels.
@@ -254,7 +271,7 @@
     cc = new_compiler()
     if hasfunction(cc, 'inotify_add_watch'):
         extmodules.append(Extension('hgext.inotify.linux._inotify',
-                                     ['hgext/inotify/linux/_inotify.c']))
+                                     ['hgext/inotify/linux/_inotify.c'], extra_compile_args=patch_args, extra_link_args=patch_args))
         packages.extend(['hgext.inotify', 'hgext.inotify.linux'])
 
 packagedata = {'mercurial': ['locale/*/LC_MESSAGES/hg.mo',
