aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2008-12-30 17:56:45 +0000
committerBenjamin Peterson <benjamin@python.org>2008-12-30 17:56:45 +0000
commitc39d76278334a0838f79655ba27bbe68bfec7f8f (patch)
tree7aa20856671996fe1c04ab704980158435c9347a
parent360e98ca31c09d519c0403a5fade06b0116649ab (diff)
downloadcpython3-c39d76278334a0838f79655ba27bbe68bfec7f8f.tar.gz
Merged revisions 67982,67988,67990 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r67982 | benjamin.peterson | 2008-12-28 09:37:31 -0600 (Sun, 28 Dec 2008) | 1 line fix WORD_BIGEDIAN declaration in Universal builds; fixes #4060 and #4728 ........ r67988 | ronald.oussoren | 2008-12-28 13:40:56 -0600 (Sun, 28 Dec 2008) | 1 line Issue4064: architecture string for universal builds on OSX ........ r67990 | ronald.oussoren | 2008-12-28 13:50:40 -0600 (Sun, 28 Dec 2008) | 3 lines Update the fix for issue4064 to deal correctly with all three variants of universal builds that are presented by the configure script. ........
-rw-r--r--Doc/distutils/apiref.rst18
-rw-r--r--Include/pymacconfig.h14
-rw-r--r--Lib/distutils/util.py22
3 files changed, 48 insertions, 6 deletions
diff --git a/Doc/distutils/apiref.rst b/Doc/distutils/apiref.rst
index f2d863c79c..c3148a647c 100644
--- a/Doc/distutils/apiref.rst
+++ b/Doc/distutils/apiref.rst
@@ -1100,6 +1100,24 @@ other utility module.
For non-POSIX platforms, currently just returns ``sys.platform``.
+ For MacOS X systems the OS version reflects the minimal version on which
+ binaries will run (that is, the value of ``MACOSX_DEPLOYMENT_TARGET``
+ during the build of Python), not the OS version of the current system.
+
+ For universal binary builds on MacOS X the architecture value reflects
+ 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``.
+
+ Examples of returned values on MacOS X:
+
+ * ``macosx-10.3-ppc``
+
+ * ``macosx-10.3-fat``
+
+ * ``macosx-10.5-universal``
+
.. % XXX isn't this also provided by some other non-distutils module?
diff --git a/Include/pymacconfig.h b/Include/pymacconfig.h
index e864e72eb2..a8679af498 100644
--- a/Include/pymacconfig.h
+++ b/Include/pymacconfig.h
@@ -15,6 +15,8 @@
# undef SIZEOF_SIZE_T
# undef SIZEOF_TIME_T
# undef SIZEOF_VOID_P
+# undef SIZEOF__BOOL
+# undef WORDS_BIGENDIAN
# undef VA_LIST_IS_ARRAY
# if defined(__LP64__) && defined(__x86_64__)
@@ -28,12 +30,19 @@
# undef SIZEOF_LONG
# ifdef __LP64__
+# define SIZEOF__BOOL 1
+# define SIZEOF__BOOL 1
# define SIZEOF_LONG 8
# define SIZEOF_PTHREAD_T 8
# define SIZEOF_SIZE_T 8
# define SIZEOF_TIME_T 8
# define SIZEOF_VOID_P 8
# else
+# ifdef __ppc__
+# define SIZEOF__BOOL 4
+# else
+# define SIZEOF__BOOL 1
+# endif
# define SIZEOF_LONG 4
# define SIZEOF_PTHREAD_T 4
# define SIZEOF_SIZE_T 4
@@ -54,6 +63,11 @@
# endif
+#ifdef __BIG_ENDIAN__
+#define WORDS_BIGENDIAN 1
+#endif /* __BIG_ENDIAN */
+
+
#endif /* defined(_APPLE__) */
#endif /* PYMACCONFIG_H */
diff --git a/Lib/distutils/util.py b/Lib/distutils/util.py
index 28337fa9a0..042306e913 100644
--- a/Lib/distutils/util.py
+++ b/Lib/distutils/util.py
@@ -99,7 +99,11 @@ def get_platform ():
if not macver:
macver = cfgvars.get('MACOSX_DEPLOYMENT_TARGET')
- if not macver:
+ if 1:
+ # Always calculate the release of the running machine,
+ # needed to determine if we can build fat binaries or not.
+
+ macrelease = macver
# Get the system version. Reading this plist is a documented
# way to get the system version (see the documentation for
# the Gestalt Manager)
@@ -115,16 +119,18 @@ def get_platform ():
r'<string>(.*?)</string>', f.read())
f.close()
if m is not None:
- macver = '.'.join(m.group(1).split('.')[:2])
+ macrelease = '.'.join(m.group(1).split('.')[:2])
# else: fall back to the default behaviour
+ if not macver:
+ macver = macrelease
+
if macver:
from distutils.sysconfig import get_config_vars
release = macver
osname = "macosx"
-
- if (release + '.') >= '10.4.' and \
+ if (macrelease + '.') >= '10.4.' and \
'-arch' in get_config_vars().get('CFLAGS', '').strip():
# The universal build will build fat binaries, but not on
# systems before 10.4
@@ -133,9 +139,13 @@ def get_platform ():
# 'universal' instead of 'fat'.
machine = 'fat'
+ cflags = get_config_vars().get('CFLAGS')
- if '-arch x86_64' in get_config_vars().get('CFLAGS'):
- machine = 'universal'
+ if '-arch x86_64' in cflags:
+ if '-arch i386' in cflags:
+ machine = 'universal'
+ else:
+ machine = 'fat64'
elif machine in ('PowerPC', 'Power_Macintosh'):
# Pick a sane name for the PPC architecture.