diff options
author | Martin v. Löwis <martin@v.loewis.de> | 2005-04-25 07:14:03 (GMT) |
---|---|---|
committer | Martin v. Löwis <martin@v.loewis.de> | 2005-04-25 07:14:03 (GMT) |
commit | d7c795e72966f7c72b94b919f3539be66495e6c3 (patch) | |
tree | a2cea19622186e95faeb32553e1635d185ad8d4c | |
parent | 08cd598c2145d00f1517c93cabf80a5d7d2a4bc0 (diff) | |
download | cpython-d7c795e72966f7c72b94b919f3539be66495e6c3.zip cpython-d7c795e72966f7c72b94b919f3539be66495e6c3.tar.gz cpython-d7c795e72966f7c72b94b919f3539be66495e6c3.tar.bz2 |
Make parse_makefile fallback to environment variables if nothing is
defined in the makefile. Get CFLAGS from the Makefile, instead of
getting OPT, BASE_CFLAGS and EXTRA_CFLAGS individually.
-rw-r--r-- | Lib/distutils/sysconfig.py | 35 | ||||
-rw-r--r-- | Misc/NEWS | 2 | ||||
-rw-r--r-- | setup.py | 4 |
3 files changed, 17 insertions, 24 deletions
diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py index 1bd6209..0be5b6b 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: @@ -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 @@ -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) |