Commit 5cc44b40 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 f67dd5be
...@@ -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')
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