[Python-checkins] python/dist/src/Lib/distutils/command build_ext.py,1.87,1.88 config.py,1.12,1.13

niemeyer@users.sourceforge.net niemeyer@users.sourceforge.net
Tue, 05 Nov 2002 08:12:07 -0800


Update of /cvsroot/python/python/dist/src/Lib/distutils/command
In directory usw-pr-cvs1:/tmp/cvs-serv27486/command

Modified Files:
	build_ext.py config.py 
Log Message:
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().



Index: build_ext.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/distutils/command/build_ext.py,v
retrieving revision 1.87
retrieving revision 1.88
diff -C2 -d -r1.87 -r1.88
*** build_ext.py	4 Nov 2002 19:50:03 -0000	1.87
--- build_ext.py	5 Nov 2002 16:12:01 -0000	1.88
***************
*** 478,481 ****
--- 478,484 ----
          extra_args = ext.extra_link_args or []
  
+         # Detect target language, if not provided
+         language = ext.language or self.compiler.detect_language(sources)
+ 
          self.compiler.link_shared_object(
              objects, ext_filename,
***************
*** 486,490 ****
              export_symbols=self.get_export_symbols(ext),
              debug=self.debug,
!             build_temp=self.build_temp)
  
  
--- 489,494 ----
              export_symbols=self.get_export_symbols(ext),
              debug=self.debug,
!             build_temp=self.build_temp,
!             target_lang=language)
  
  

Index: config.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/distutils/command/config.py,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** config.py	9 Sep 2002 12:10:00 -0000	1.12
--- config.py	5 Nov 2002 16:12:02 -0000	1.13
***************
*** 149,153 ****
          self.compiler.link_executable([obj], prog,
                                        libraries=libraries,
!                                       library_dirs=library_dirs)
  
          prog = prog + self.compiler.exe_extension
--- 149,154 ----
          self.compiler.link_executable([obj], prog,
                                        libraries=libraries,
!                                       library_dirs=library_dirs,
!                                       target_lang=lang)
  
          prog = prog + self.compiler.exe_extension