mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	Patch 1046644 - improved distutils support for SWIG.
This commit is contained in:
		
							parent
							
								
									78f58abea7
								
							
						
					
					
						commit
						a024034b94
					
				
					 5 changed files with 35 additions and 5 deletions
				
			
		|  | @ -81,6 +81,10 @@ class build_ext (Command): | |||
|          "specify the compiler type"), | ||||
|         ('swig-cpp', None, | ||||
|          "make SWIG create C++ files (default is C)"), | ||||
|         ('swig-opts=', None, | ||||
|          "list of SWIG command line options"), | ||||
|         ('swig=', None, | ||||
|          "path to the SWIG executable"), | ||||
|         ] | ||||
| 
 | ||||
|     boolean_options = ['inplace', 'debug', 'force', 'swig-cpp'] | ||||
|  | @ -107,8 +111,9 @@ def initialize_options (self): | |||
|         self.debug = None | ||||
|         self.force = None | ||||
|         self.compiler = None | ||||
|         self.swig = None | ||||
|         self.swig_cpp = None | ||||
| 
 | ||||
|         self.swig_opts = None | ||||
| 
 | ||||
|     def finalize_options (self): | ||||
|         from distutils import sysconfig | ||||
|  | @ -205,6 +210,11 @@ def finalize_options (self): | |||
|         if self.undef: | ||||
|             self.undef = string.split(self.undef, ',') | ||||
| 
 | ||||
|         if self.swig_opts is None: | ||||
|             self.swig_opts = [] | ||||
|         else: | ||||
|             self.swig_opts = self.swig_opts.split(' ') | ||||
| 
 | ||||
|     # finalize_options () | ||||
| 
 | ||||
| 
 | ||||
|  | @ -429,7 +439,7 @@ def build_extension(self, ext): | |||
|         # First, scan the sources for SWIG definition files (.i), run | ||||
|         # SWIG on 'em to create .c files, and modify the sources list | ||||
|         # accordingly. | ||||
|         sources = self.swig_sources(sources) | ||||
|         sources = self.swig_sources(sources, ext) | ||||
| 
 | ||||
|         # Next, compile the source code to object files. | ||||
| 
 | ||||
|  | @ -492,7 +502,7 @@ def build_extension(self, ext): | |||
|             target_lang=language) | ||||
| 
 | ||||
| 
 | ||||
|     def swig_sources (self, sources): | ||||
|     def swig_sources (self, sources, extension): | ||||
| 
 | ||||
|         """Walk the list of source files in 'sources', looking for SWIG | ||||
|         interface (.i) files.  Run SWIG on all that are found, and | ||||
|  | @ -510,6 +520,9 @@ def swig_sources (self, sources): | |||
|         # the temp dir. | ||||
| 
 | ||||
|         if self.swig_cpp: | ||||
|             log.warn("--swig-cpp is deprecated - use --swig-opts=-c++") | ||||
| 
 | ||||
|         if self.swig_cpp or ('-c++' in self.swig_opts): | ||||
|             target_ext = '.cpp' | ||||
|         else: | ||||
|             target_ext = '.c' | ||||
|  | @ -526,11 +539,17 @@ def swig_sources (self, sources): | |||
|         if not swig_sources: | ||||
|             return new_sources | ||||
| 
 | ||||
|         swig = self.find_swig() | ||||
|         swig = self.swig or self.find_swig() | ||||
|         swig_cmd = [swig, "-python"] | ||||
|         swig_cmd.extend(self.swig_opts) | ||||
|         if self.swig_cpp: | ||||
|             swig_cmd.append("-c++") | ||||
| 
 | ||||
|         # Do not override commandline arguments | ||||
|         if not self.swig_opts: | ||||
|             for o in extension.swig_opts: | ||||
|                 swig_cmd.append(o) | ||||
| 
 | ||||
|         for source in swig_sources: | ||||
|             target = swig_targets[source] | ||||
|             log.info("swigging %s to %s", source, target) | ||||
|  |  | |||
|  | @ -54,7 +54,7 @@ def gen_usage (script_name): | |||
|                       'define_macros', 'undef_macros', | ||||
|                       'library_dirs', 'libraries', 'runtime_library_dirs', | ||||
|                       'extra_objects', 'extra_compile_args', 'extra_link_args', | ||||
|                       'export_symbols', 'depends', 'language') | ||||
|                       'swig_opts', 'export_symbols', 'depends', 'language') | ||||
| 
 | ||||
| def setup (**attrs): | ||||
|     """The gateway to the Distutils: do everything your setup script needs | ||||
|  |  | |||
|  | @ -75,6 +75,9 @@ class Extension: | |||
|         used on all platforms, and not generally necessary for Python | ||||
|         extensions, which typically export exactly one symbol: "init" + | ||||
|         extension_name. | ||||
|       swig_opts : [string] | ||||
|         any extra options to pass to SWIG if a source file has the .i | ||||
|         extension. | ||||
|       depends : [string] | ||||
|         list of files that the extension depends on | ||||
|       language : string | ||||
|  | @ -95,6 +98,7 @@ def __init__ (self, name, sources, | |||
|                   extra_compile_args=None, | ||||
|                   extra_link_args=None, | ||||
|                   export_symbols=None, | ||||
|                   swig_opts = None, | ||||
|                   depends=None, | ||||
|                   language=None, | ||||
|                   **kw                      # To catch unknown keywords | ||||
|  | @ -116,6 +120,7 @@ def __init__ (self, name, sources, | |||
|         self.extra_compile_args = extra_compile_args or [] | ||||
|         self.extra_link_args = extra_link_args or [] | ||||
|         self.export_symbols = export_symbols or [] | ||||
|         self.swig_opts = swig_opts or [] | ||||
|         self.depends = depends or [] | ||||
|         self.language = language | ||||
| 
 | ||||
|  |  | |||
|  | @ -284,6 +284,7 @@ Eric Huss | |||
| Jeremy Hylton | ||||
| Mihai Ibanescu | ||||
| Juan David Ibáñez Palomar | ||||
| Lars Immisch | ||||
| Tony Ingraldi | ||||
| John Interrante | ||||
| Bob Ippolito | ||||
|  |  | |||
|  | @ -47,6 +47,11 @@ Extension modules | |||
| Library | ||||
| ------- | ||||
| 
 | ||||
| - Patch 1046644: distutils build_ext grew two new options - --swig for | ||||
|   specifying the swig executable to use, and --swig-opts to specify  | ||||
|   options to pass to swig. --swig-opts="-c++" is the new way to spell | ||||
|   --swig-cpp. | ||||
| 
 | ||||
| - Patch 983206: distutils now obeys environment variable LDSHARED, if | ||||
|   it is set. | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Anthony Baxter
						Anthony Baxter