Commit 8969b8de 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 64b0129e
...@@ -48,7 +48,7 @@ cygwin in no-cygwin mode). ...@@ -48,7 +48,7 @@ cygwin in no-cygwin mode).
import os import os
import sys import sys
import copy import copy
from subprocess import Popen, PIPE from subprocess import Popen, PIPE, check_output
import re import re
from distutils.ccompiler import gen_preprocess_options, gen_lib_options from distutils.ccompiler import gen_preprocess_options, gen_lib_options
...@@ -294,13 +294,18 @@ class Mingw32CCompiler(CygwinCCompiler): ...@@ -294,13 +294,18 @@ class Mingw32CCompiler(CygwinCCompiler):
else: else:
entry_point = '' entry_point = ''
self.set_executables(compiler='gcc -mno-cygwin -O -Wall', if self.gcc_version < '4' or is_cygwingcc():
compiler_so='gcc -mno-cygwin -mdll -O -Wall', no_cygwin = ' -mno-cygwin'
compiler_cxx='g++ -mno-cygwin -O -Wall', else:
linker_exe='gcc -mno-cygwin', no_cygwin = ''
linker_so='%s -mno-cygwin %s %s'
% (self.linker_dll, shared_option, self.set_executables(compiler='gcc%s -O -Wall' % no_cygwin,
entry_point)) 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 # Maybe we should also append -mthreads, but then the finished
# dlls need another dll (mingwm10.dll see Mingw32 docs) # dlls need another dll (mingwm10.dll see Mingw32 docs)
# (-mthreads: Support thread-safe exception handling on `Mingw32') # (-mthreads: Support thread-safe exception handling on `Mingw32')
...@@ -393,3 +398,8 @@ def get_versions(): ...@@ -393,3 +398,8 @@ def get_versions():
""" """
commands = ['gcc -dumpversion', 'ld -v', 'dllwrap --version'] commands = ['gcc -dumpversion', 'ld -v', 'dllwrap --version']
return tuple([_find_exe_version(cmd) for cmd in commands]) 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 ...@@ -101,6 +101,7 @@ Thomas Bellman
Alexander “Саша” Belopolsky Alexander “Саша” Belopolsky
Eli Bendersky Eli Bendersky
David Benjamin David Benjamin
Oscar Benjamin
Andrew Bennetts Andrew Bennetts
Andy Bensky Andy Bensky
Bennett Benson Bennett Benson
......
...@@ -71,6 +71,9 @@ Core and Builtins ...@@ -71,6 +71,9 @@ Core and Builtins
Library 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. - Properly initialize all fields of a SSL object after allocation.
- Issue #4366: Fix building extensions on all platforms when --enable-shared - 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