summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Lib/distutils/sysconfig.py35
-rw-r--r--Misc/NEWS2
-rw-r--r--setup.py4
3 files changed, 17 insertions, 24 deletions
diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
index 1bd62097f0..0be5b6b7cb 100644
--- a/Lib/distutils/sysconfig.py
+++ b/Lib/distutils/sysconfig.py
@@ -146,8 +146,8 @@ def customize_compiler(compiler):
varies across Unices and is stored in Python's Makefile.
"""
if compiler.compiler_type == "unix":
- (cc, cxx, opt, extra_cflags, basecflags, ccshared, ldshared, so_ext) = \
- get_config_vars('CC', 'CXX', 'OPT', 'EXTRA_CFLAGS', 'BASECFLAGS',
+ (cc, cxx, opt, cflags, ccshared, ldshared, so_ext) = \
+ get_config_vars('CC', 'CXX', 'OPT', 'CFLAGS',
'CCSHARED', 'LDSHARED', 'SO')
if os.environ.has_key('CC'):
@@ -162,17 +162,15 @@ def customize_compiler(compiler):
cpp = cc + " -E" # not always
if os.environ.has_key('LDFLAGS'):
ldshared = ldshared + ' ' + os.environ['LDFLAGS']
- if basecflags:
- opt = basecflags + ' ' + opt
if os.environ.has_key('CFLAGS'):
- opt = opt + ' ' + os.environ['CFLAGS']
+ cflags = opt + ' ' + os.environ['CFLAGS']
ldshared = ldshared + ' ' + os.environ['CFLAGS']
if os.environ.has_key('CPPFLAGS'):
cpp = cpp + ' ' + os.environ['CPPFLAGS']
- opt = opt + ' ' + os.environ['CPPFLAGS']
+ cflags = cflags + ' ' + os.environ['CPPFLAGS']
ldshared = ldshared + ' ' + os.environ['CPPFLAGS']
- cc_cmd = ' '.join(str(x) for x in (cc, opt, extra_cflags) if x)
+ cc_cmd = cc + ' ' + cflags
compiler.set_executables(
preprocessor=cpp,
compiler=cc_cmd,
@@ -278,25 +276,20 @@ def parse_makefile(fn, g=None):
m = _findvar1_rx.search(value) or _findvar2_rx.search(value)
if m:
n = m.group(1)
+ found = True
if done.has_key(n):
- after = value[m.end():]
- value = value[:m.start()] + str(done[n]) + after
- if "$" in after:
- notdone[name] = value
- else:
- try: value = int(value)
- except ValueError:
- done[name] = string.strip(value)
- else:
- done[name] = value
- del notdone[name]
+ item = str(done[n])
elif notdone.has_key(n):
# get it on a subsequent round
- pass
+ found = False
+ elif os.environ.has_key(n):
+ # do it like make: fall back to environment
+ item = os.environ[n]
else:
- done[n] = ""
+ done[n] = item = ""
+ if found:
after = value[m.end():]
- value = value[:m.start()] + after
+ value = value[:m.start()] + item + after
if "$" in after:
notdone[name] = value
else:
diff --git a/Misc/NEWS b/Misc/NEWS
index 1557a46ce1..3c6b6c1484 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -279,7 +279,7 @@ Build
- EXTRA_CFLAGS has been introduced as an environment variable to hold compiler
flags that change binary compatibility. Changes were also made to
distutils.sysconfig to also use the environment variable when used during
- compilation of the interpreter.
+ compilation of the interpreter and of C extensions through distutils.
- SF patch 1171735: Darwin 8's headers are anal about POSIX compliance,
and linking has changed (prebinding is now deprecated, and libcc_dynamic
diff --git a/setup.py b/setup.py
index 302f5c23fb..a8e58042fb 100644
--- a/setup.py
+++ b/setup.py
@@ -171,8 +171,8 @@ class PyBuildExt(build_ext):
# unfortunately, distutils doesn't let us provide separate C and C++
# compilers
if compiler is not None:
- (ccshared,opt,base) = sysconfig.get_config_vars('CCSHARED','OPT','BASECFLAGS')
- args['compiler_so'] = compiler + ' ' + opt + ' ' + ccshared + ' ' + base
+ (ccshared,cflags) = sysconfig.get_config_vars('CCSHARED','CFLAGS')
+ args['compiler_so'] = compiler + ' ' + ccshared + ' ' + cflags
self.compiler.set_executables(**args)
build_ext.build_extensions(self)