diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2013-09-30 20:28:10 (GMT) |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2013-09-30 20:28:10 (GMT) |
commit | 3c678c33a770ce7b465163aecb09fba07e1e8daa (patch) | |
tree | b3596f5b5c0b86ccd4e49e5558add23f89f46574 | |
parent | 1a67bee7016ab266b8a19a8834a2f1cb374dc38c (diff) | |
download | cpython-3c678c33a770ce7b465163aecb09fba07e1e8daa.zip cpython-3c678c33a770ce7b465163aecb09fba07e1e8daa.tar.gz cpython-3c678c33a770ce7b465163aecb09fba07e1e8daa.tar.bz2 |
Issue #12641: Avoid passing "-mno-cygwin" to the mingw32 compiler, except when necessary.
Patch by Oscar Benjamin.
-rw-r--r-- | Lib/distutils/cygwinccompiler.py | 26 | ||||
-rw-r--r-- | Misc/ACKS | 1 | ||||
-rw-r--r-- | Misc/NEWS | 3 |
3 files changed, 22 insertions, 8 deletions
diff --git a/Lib/distutils/cygwinccompiler.py b/Lib/distutils/cygwinccompiler.py index 0bdd539..e0074a1 100644 --- a/Lib/distutils/cygwinccompiler.py +++ b/Lib/distutils/cygwinccompiler.py @@ -48,7 +48,7 @@ cygwin in no-cygwin mode). import os import sys import copy -from subprocess import Popen, PIPE +from subprocess import Popen, PIPE, check_output import re from distutils.ccompiler import gen_preprocess_options, gen_lib_options @@ -294,13 +294,18 @@ class Mingw32CCompiler(CygwinCCompiler): else: entry_point = '' - self.set_executables(compiler='gcc -mno-cygwin -O -Wall', - compiler_so='gcc -mno-cygwin -mdll -O -Wall', - compiler_cxx='g++ -mno-cygwin -O -Wall', - linker_exe='gcc -mno-cygwin', - linker_so='%s -mno-cygwin %s %s' - % (self.linker_dll, shared_option, - entry_point)) + if self.gcc_version < '4' or is_cygwingcc(): + no_cygwin = ' -mno-cygwin' + else: + no_cygwin = '' + + self.set_executables(compiler='gcc%s -O -Wall' % no_cygwin, + compiler_so='gcc%s -mdll -O -Wall' % no_cygwin, + compiler_cxx='g++%s -O -Wall' % no_cygwin, + linker_exe='gcc%s' % no_cygwin, + linker_so='%s%s %s %s' + % (self.linker_dll, no_cygwin, + shared_option, entry_point)) # Maybe we should also append -mthreads, but then the finished # dlls need another dll (mingwm10.dll see Mingw32 docs) # (-mthreads: Support thread-safe exception handling on `Mingw32') @@ -393,3 +398,8 @@ def get_versions(): """ commands = ['gcc -dumpversion', 'ld -v', 'dllwrap --version'] return tuple([_find_exe_version(cmd) for cmd in commands]) + +def is_cygwingcc(): + '''Try to determine if the gcc that would be used is from cygwin.''' + out_string = check_output(['gcc', '-dumpmachine']) + return out_string.strip().endswith(b'cygwin') @@ -101,6 +101,7 @@ Thomas Bellman Alexander “Саша” Belopolsky Eli Bendersky David Benjamin +Oscar Benjamin Andrew Bennetts Andy Bensky Bennett Benson @@ -71,6 +71,9 @@ Core and Builtins Library ------- +- Issue #12641: Avoid passing "-mno-cygwin" to the mingw32 compiler, except + when necessary. Patch by Oscar Benjamin. + - Properly initialize all fields of a SSL object after allocation. - Issue #4366: Fix building extensions on all platforms when --enable-shared |