]> granicus.if.org Git - python/commitdiff
Merged revisions 74806 via svnmerge from
authorRonald Oussoren <ronaldoussoren@mac.com>
Tue, 15 Sep 2009 19:16:02 +0000 (19:16 +0000)
committerRonald Oussoren <ronaldoussoren@mac.com>
Tue, 15 Sep 2009 19:16:02 +0000 (19:16 +0000)
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r74806 | ronald.oussoren | 2009-09-15 21:13:15 +0200 (Tue, 15 Sep 2009) | 3 lines

  Finish support for --with-universal-archs=intel
  and --with-universal-archs=3-way (issue6245)
........

Doc/distutils/apiref.rst
Lib/distutils/util.py

index 643825766a8722b6a9decb347bb29637ea55bd4a..af19111dfbda7da9da48e909c3976629c82f0f54 100644 (file)
@@ -1095,7 +1095,10 @@ other utility module.
    the univeral binary status instead of the architecture of the current
    processor. For 32-bit universal binaries the architecture is ``fat``,
    for 64-bit universal binaries the architecture is ``fat64``, and
-   for 4-way universal binaries the architecture is ``universal``.
+   for 4-way universal binaries the architecture is ``universal``. Starting
+   from Python 2.7 and Python 3.2 the architecture ``fat3`` is used for
+   a 3-way universal build (ppc, i386, x86_64) and ``intel`` is used for
+   a univeral build with the i386 and x86_64 architectures
 
    Examples of returned values on Mac OS X:
 
@@ -1105,6 +1108,8 @@ other utility module.
 
    * ``macosx-10.5-universal``
 
+   * ``macosx-10.6-intel``
+
    .. % XXX isn't this also provided by some other non-distutils module?
 
 
index 0c88b8197d398cc743f5859d485ceb1575fccafe..6709bbfe42825bc6e591fbe60d6b70c45b39e493 100644 (file)
@@ -144,11 +144,26 @@ def get_platform():
                 machine = 'fat'
                 cflags = get_config_vars().get('CFLAGS')
 
-                if '-arch x86_64' in cflags:
-                    if '-arch i386' in cflags:
-                        machine = 'universal'
-                    else:
-                        machine = 'fat64'
+                archs = re.findall('-arch\s+(\S+)', cflags)
+                archs.sort()
+                archs = tuple(archs)
+
+                if len(archs) == 1:
+                    machine = archs[0]
+                elif archs == ('i386', 'ppc'):
+                    machine = 'fat'
+                elif archs == ('i386', 'x86_64'):
+                    machine = 'intel'
+                elif archs == ('i386', 'ppc', 'x86_64'):
+                    machine = 'fat3'
+                elif archs == ('ppc64', 'x86_64'):
+                    machine = 'fat64'
+                elif archs == ('i386', 'ppc', 'ppc64', 'x86_64'):
+                    machine = 'universal'
+                else:
+                    raise ValueError(
+                       "Don't know machine value for archs=%r"%(archs,))
+
 
             elif machine in ('PowerPC', 'Power_Macintosh'):
                 # Pick a sane name for the PPC architecture.