mirror of https://github.com/python/cpython
If the "build_lib" command built any C libraries, link with them all
when building extensions (uses build_lib's 'get_library_names()' method). Ensure that the relative structure of source filenames is preserved in the temporary build tree, eg. foo/bar.c compiles to build/temp.<plat>/foo/bar.o.
This commit is contained in:
parent
833dfd52e5
commit
60f64330d1
|
@ -165,6 +165,14 @@ class build_ext (Command):
|
|||
if self.link_objects is not None:
|
||||
self.compiler.set_link_objects (self.link_objects)
|
||||
|
||||
if self.distribution.libraries:
|
||||
build_lib = self.find_peer ('build_lib')
|
||||
self.libraries = build_lib.get_library_names () or []
|
||||
self.library_dirs = [build_lib.build_clib]
|
||||
else:
|
||||
self.libraries = []
|
||||
self.library_dirs = []
|
||||
|
||||
# Now the real loop over extensions
|
||||
self.build_extensions (self.extensions)
|
||||
|
||||
|
@ -237,6 +245,7 @@ class build_ext (Command):
|
|||
include_dirs = build_info.get ('include_dirs')
|
||||
objects = self.compiler.compile (sources,
|
||||
output_dir=self.build_temp,
|
||||
keep_dir=1,
|
||||
macros=macros,
|
||||
include_dirs=include_dirs,
|
||||
debug=self.debug)
|
||||
|
@ -247,8 +256,8 @@ class build_ext (Command):
|
|||
extra_objects = build_info.get ('extra_objects')
|
||||
if extra_objects:
|
||||
objects.extend (extra_objects)
|
||||
libraries = build_info.get ('libraries')
|
||||
library_dirs = build_info.get ('library_dirs')
|
||||
libraries = self.libraries + build_info.get ('libraries')
|
||||
library_dirs = self.library_dirs + build_info.get ('library_dirs')
|
||||
extra_args = build_info.get ('extra_link_args') or []
|
||||
|
||||
if self.compiler.compiler_type == 'msvc':
|
||||
|
|
Loading…
Reference in New Issue