summaryrefslogtreecommitdiffstats
path: root/Lib/distutils/msvccompiler.py
diff options
context:
space:
mode:
authorGustavo Niemeyer <gustavo@niemeyer.net>2002-11-05 16:12:02 (GMT)
committerGustavo Niemeyer <gustavo@niemeyer.net>2002-11-05 16:12:02 (GMT)
commit6b016852f83621178ae053509c044d6fd27f46e3 (patch)
tree6d0b5702488fce2d3d503847015f672fc068bcb0 /Lib/distutils/msvccompiler.py
parent173f11da5dae76c504dac3606c27b74673ccfee4 (diff)
downloadcpython-6b016852f83621178ae053509c044d6fd27f46e3.zip
cpython-6b016852f83621178ae053509c044d6fd27f46e3.tar.gz
cpython-6b016852f83621178ae053509c044d6fd27f46e3.tar.bz2
This patch fixes the following bugs:
[#413582] g++ must be called for c++ extensions [#454030] distutils cannot link C++ code with GCC topdir = "Lib/distutils" * bcppcompiler.py (BCPPCompiler.create_static_lib): Fixed prototype, removing extra_preargs and extra_postargs parameters. Included target_lang parameter. (BCPPCompiler.link): Included target_lang parameter. * msvccompiler.py (MSVCCompiler.create_static_lib): Fixed prototype, removing extra_preargs and extra_postargs parameters. Included target_lang parameter. (MSVCCompiler.link): Included target_lang parameter. * ccompiler.py (CCompiler): New language_map and language_order attributes, used by CCompiler.detect_language(). (CCompiler.detect_language): New method, will return the language of a given source, or list of sources. Individual source language is detected using the language_map dict. When mixed sources are used, language_order will stablish the language precedence. (CCompiler.create_static_lib, CCompiler.link, CCompiler.link_executable, CCompiler.link_shared_object, CCompiler.link_shared_lib): Inlcuded target_lang parameter. * cygwinccompiler.py (CygwinCCompiler.link): Included target_lang parameter. * emxccompiler.py (EMXCCompiler.link): Included target_lang parameter. * mwerkscompiler.py (MWerksCompiler.link): Included target_lang parameter. * extension.py (Extension.__init__): New 'language' parameter/attribute, initialized to None by default. If provided will overlap the automatic detection made by CCompiler.detect_language(), in build_ext command. * sysconfig.py (customize_compiler): Check Makefile for CXX option, and also the environment variable CXX. Use the resulting value in the 'compiler_cxx' parameter of compiler.set_executables(). * unixccompiler.py (UnixCCompiler): Included 'compiler_cxx' in executables dict, defaulting to 'cc'. (UnixCCompiler.create_static_lib): Included target_lang parameter. (UnixCCompiler.link): Included target_lang parameter, and made linker command use compiler_cxx, if target_lang is 'c++'. * command/build_ext.py (build_ext.build_extension): Pass new ext.language attribute to compiler.link_shared_object()'s target_lang parameter. If ext.language is not provided, detect language using compiler.detect_language(sources) instead. * command/config.py (config._link): Pass already available lang parameter as target_lang parameter of compiler.link_executable().
Diffstat (limited to 'Lib/distutils/msvccompiler.py')
-rw-r--r--Lib/distutils/msvccompiler.py10
1 files changed, 3 insertions, 7 deletions
diff --git a/Lib/distutils/msvccompiler.py b/Lib/distutils/msvccompiler.py
index 65b1143..a2459ad 100644
--- a/Lib/distutils/msvccompiler.py
+++ b/Lib/distutils/msvccompiler.py
@@ -367,8 +367,7 @@ class MSVCCompiler (CCompiler) :
output_libname,
output_dir=None,
debug=0,
- extra_preargs=None,
- extra_postargs=None):
+ target_lang=None):
(objects, output_dir) = self._fix_object_args (objects, output_dir)
output_filename = \
@@ -378,10 +377,6 @@ class MSVCCompiler (CCompiler) :
lib_args = objects + ['/OUT:' + output_filename]
if debug:
pass # XXX what goes here?
- if extra_preargs:
- lib_args[:0] = extra_preargs
- if extra_postargs:
- lib_args.extend (extra_postargs)
try:
self.spawn ([self.lib] + lib_args)
except DistutilsExecError, msg:
@@ -404,7 +399,8 @@ class MSVCCompiler (CCompiler) :
debug=0,
extra_preargs=None,
extra_postargs=None,
- build_temp=None):
+ build_temp=None,
+ target_lang=None):
(objects, output_dir) = self._fix_object_args (objects, output_dir)
(libraries, library_dirs, runtime_library_dirs) = \