mingw and environment variables

It seems to be a problem with distutils currently that g++ isn't used to link at the appropriate time. Ideally you'd split linking into C++ and C variations, and detect whether the C++ compiler was used and use the C++ linker if it was. And, a bug related to this, is that you can't easily override the linker when using mingw; the customize_compiler() function checks for a type of 'unix': def customize_compiler(compiler): """Do any platform-specific customization of a CCompiler instance. Mainly needed on Unix, so we can plug in the information that varies across Unices and is stored in Python's Makefile. """ if compiler.compiler_type == "unix": But the mingw compiler (which is unix compatible) has a compiler_type 'mingw32', not 'unix'. The easiest "band-aid" patch would be to use if compiler.compiler_type in ("unix", "mingw32"): but I wonder whether: if isinstance(compiler, UnixCCompiler): would be more appropriate? The workaround I came up with is: # Force g++ for linking import distutils.sysconfig old_customize_compiler = distutils.sysconfig.customize_compiler def customize_compiler(compiler): old_customize_compiler(compiler) if compiler.compiler_type == 'mingw': compiler.set_executables(linker_so='g++ -mno-cygwin -shared') distutils.sysconfig.customize_compiler = customize_compiler
participants (1)
-
Dobes Vandermeer