summaryrefslogtreecommitdiffstats
path: root/Lib/distutils
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/distutils')
-rw-r--r--Lib/distutils/sysconfig.py20
-rw-r--r--Lib/distutils/unixccompiler.py8
-rw-r--r--Lib/distutils/util.py11
3 files changed, 36 insertions, 3 deletions
diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
index d2b2c9a..3a120dd 100644
--- a/Lib/distutils/sysconfig.py
+++ b/Lib/distutils/sysconfig.py
@@ -516,6 +516,26 @@ def get_config_vars(*args):
flags = re.sub('-isysroot [^ \t]*', ' ', flags)
_config_vars[key] = flags
+ else:
+
+ # Allow the user to override the architecture flags using
+ # an environment variable.
+ # NOTE: This name was introduced by Apple in OSX 10.5 and
+ # is used by several scripting languages distributed with
+ # that OS release.
+
+ if 'ARCHFLAGS' in os.environ:
+ arch = os.environ['ARCHFLAGS']
+ for key in ('LDFLAGS', 'BASECFLAGS',
+ # a number of derived variables. These need to be
+ # patched up as well.
+ 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'):
+
+ flags = _config_vars[key]
+ flags = re.sub('-arch\s+\w+\s', ' ', flags)
+ flags = flags + ' ' + arch
+ _config_vars[key] = flags
+
if args:
vals = []
for name in args:
diff --git a/Lib/distutils/unixccompiler.py b/Lib/distutils/unixccompiler.py
index 25a042d..87ce921 100644
--- a/Lib/distutils/unixccompiler.py
+++ b/Lib/distutils/unixccompiler.py
@@ -63,7 +63,7 @@ def _darwin_compiler_fixup(compiler_so, cc_args):
stripArch = '-arch' in cc_args
stripSysroot = '-isysroot' in cc_args
- if stripArch:
+ if stripArch or 'ARCHFLAGS' in os.environ:
while True:
try:
index = compiler_so.index('-arch')
@@ -72,6 +72,12 @@ def _darwin_compiler_fixup(compiler_so, cc_args):
except ValueError:
break
+ if 'ARCHFLAGS' in os.environ and not stripArch:
+ # User specified different -arch flags in the environ,
+ # see also distutils.sysconfig
+ compiler_so = compiler_so + ' ' + os.environ['ARCHFLAGS']
+
+
if stripSysroot:
try:
index = compiler_so.index('-isysroot')
diff --git a/Lib/distutils/util.py b/Lib/distutils/util.py
index 72039a7..76798b9 100644
--- a/Lib/distutils/util.py
+++ b/Lib/distutils/util.py
@@ -124,12 +124,19 @@ def get_platform ():
osname = "macosx"
- if (release + '.') < '10.4.' and \
- get_config_vars().get('UNIVERSALSDK', '').strip():
+ if (release + '.') >= '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
+ #
+ # Try to detect 4-way universal builds, those have machine-type
+ # 'universal' instead of 'fat'.
+
machine = 'fat'
+ if '-arch x86_64' in get_config_vars().get('CFLAGS'):
+ machine = 'universal'
+
elif machine in ('PowerPC', 'Power_Macintosh'):
# Pick a sane name for the PPC architecture.
machine = 'ppc'