diff options
| author | Antoine Pitrou <solipsis@pitrou.net> | 2013-09-30 22:29:48 +0200 |
|---|---|---|
| committer | Antoine Pitrou <solipsis@pitrou.net> | 2013-09-30 22:29:48 +0200 |
| commit | 8625d3fa5ad3eeab4954e84f2c8fea737666ca47 (patch) | |
| tree | 4e1e57d548a1974a7a4eb4674e5140c2b172fa65 /cygwinccompiler.py | |
| parent | 387bb1d47128cf8d44ba629783bdc95e396316dd (diff) | |
| parent | 5cc44b40db683dc8402c77d5c7c13e726a4f7dec (diff) | |
| download | python-setuptools-git-8625d3fa5ad3eeab4954e84f2c8fea737666ca47.tar.gz | |
Issue #12641: Avoid passing "-mno-cygwin" to the mingw32 compiler, except when necessary.
Patch by Oscar Benjamin.
Diffstat (limited to 'cygwinccompiler.py')
| -rw-r--r-- | cygwinccompiler.py | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/cygwinccompiler.py b/cygwinccompiler.py index 0c23ab1b..d28b1b36 100644 --- a/cygwinccompiler.py +++ b/cygwinccompiler.py @@ -48,13 +48,14 @@ 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 from distutils.unixccompiler import UnixCCompiler from distutils.file_util import write_file -from distutils.errors import DistutilsExecError, CompileError, UnknownFileError +from distutils.errors import (DistutilsExecError, CCompilerError, + CompileError, UnknownFileError) from distutils import log from distutils.version import LooseVersion from distutils.spawn import find_executable @@ -294,11 +295,15 @@ 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' + if is_cygwingcc(): + raise CCompilerError( + 'Cygwin gcc cannot be used with --compiler=mingw32') + + self.set_executables(compiler='gcc -O -Wall', + compiler_so='gcc -mdll -O -Wall', + compiler_cxx='g++ -O -Wall', + linker_exe='gcc', + linker_so='%s %s %s' % (self.linker_dll, shared_option, entry_point)) # Maybe we should also append -mthreads, but then the finished @@ -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') |
