Commit 92385285 authored by Antoine Pitrou's avatar Antoine Pitrou

Issue #12641: Avoid passing "-mno-cygwin" to the mingw32 compiler, except when necessary.

Patch by Oscar Benjamin.
parent e85f4e31
......@@ -319,13 +319,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')
......@@ -447,3 +452,12 @@ def get_versions():
else:
dllwrap_version = None
return (gcc_version, ld_version, dllwrap_version)
def is_cygwingcc():
'''Try to determine if the gcc that would be used is from cygwin.'''
out = os.popen('gcc -dumpmachine', 'r')
out_string = out.read()
out.close()
# out_string is the target triplet cpu-vendor-os
# Cygwin's gcc sets the os to 'cygwin'
return out_string.strip().endswith('cygwin')
......@@ -84,6 +84,7 @@ Ben Bell
Thomas Bellman
Alexander “Саша” Belopolsky
David Benjamin
Oscar Benjamin
Andrew Bennetts
Andy Bensky
Bennett Benson
......
......@@ -32,6 +32,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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment