mirror of https://github.com/python/cpython.git
Changed to pay attention to the 'runtime_library_dirs' list (= 'rpath'
option in the 'build_ext' command): * in ccompiler.py: 'gen_lib_options()' now takes 'runtime_library_dirs' parameter * in unixccompiler.py and msvccompiler.py: now pass 'self.runtime_library_dirs' to 'gen_lib_options()', and define 'runtime_library_dir_option()' (although in msvccompiler.py it blows up with a DistutilsPlatformError right now!)
This commit is contained in:
parent
295765630a
commit
d03f88a38f
|
@ -770,7 +770,7 @@ def gen_preprocess_options (macros, include_dirs):
|
||||||
# gen_preprocess_options ()
|
# gen_preprocess_options ()
|
||||||
|
|
||||||
|
|
||||||
def gen_lib_options (compiler, library_dirs, libraries):
|
def gen_lib_options (compiler, library_dirs, runtime_library_dirs, libraries):
|
||||||
"""Generate linker options for searching library directories and
|
"""Generate linker options for searching library directories and
|
||||||
linking with specific libraries. 'libraries' and 'library_dirs'
|
linking with specific libraries. 'libraries' and 'library_dirs'
|
||||||
are, respectively, lists of library names (not filenames!) and
|
are, respectively, lists of library names (not filenames!) and
|
||||||
|
@ -783,6 +783,9 @@ def gen_lib_options (compiler, library_dirs, libraries):
|
||||||
for dir in library_dirs:
|
for dir in library_dirs:
|
||||||
lib_opts.append (compiler.library_dir_option (dir))
|
lib_opts.append (compiler.library_dir_option (dir))
|
||||||
|
|
||||||
|
for dir in runtime_library_dirs:
|
||||||
|
lib_opts.append (compiler.runtime_library_dir_option (dir))
|
||||||
|
|
||||||
# XXX it's important that we *not* remove redundant library mentions!
|
# XXX it's important that we *not* remove redundant library mentions!
|
||||||
# sometimes you really do have to say "-lfoo -lbar -lfoo" in order to
|
# sometimes you really do have to say "-lfoo -lbar -lfoo" in order to
|
||||||
# resolve all symbols. I just hope we never have to say "-lfoo obj.o
|
# resolve all symbols. I just hope we never have to say "-lfoo obj.o
|
||||||
|
|
|
@ -307,7 +307,9 @@ def link_shared_object (self,
|
||||||
self._fix_link_args (objects, output_dir, takes_libs=1,
|
self._fix_link_args (objects, output_dir, takes_libs=1,
|
||||||
libraries=libraries, library_dirs=library_dirs)
|
libraries=libraries, library_dirs=library_dirs)
|
||||||
|
|
||||||
lib_opts = gen_lib_options (self, library_dirs, libraries)
|
lib_opts = gen_lib_options (self,
|
||||||
|
library_dirs, self.runtime_library_dirs,
|
||||||
|
libraries)
|
||||||
if type (output_dir) not in (StringType, NoneType):
|
if type (output_dir) not in (StringType, NoneType):
|
||||||
raise TypeError, "'output_dir' must be a string or None"
|
raise TypeError, "'output_dir' must be a string or None"
|
||||||
if output_dir is not None:
|
if output_dir is not None:
|
||||||
|
@ -348,6 +350,10 @@ def link_shared_object (self,
|
||||||
def library_dir_option (self, dir):
|
def library_dir_option (self, dir):
|
||||||
return "/LIBPATH:" + dir
|
return "/LIBPATH:" + dir
|
||||||
|
|
||||||
|
def runtime_library_dir_option (self, dir):
|
||||||
|
raise DistutilsPlatformError, \
|
||||||
|
"don't know how to set runtime library search path for MSVC++"
|
||||||
|
|
||||||
def library_option (self, lib):
|
def library_option (self, lib):
|
||||||
return self.library_filename (lib)
|
return self.library_filename (lib)
|
||||||
|
|
||||||
|
|
|
@ -197,7 +197,9 @@ def link_shared_object (self,
|
||||||
self._fix_link_args (objects, output_dir, takes_libs=1,
|
self._fix_link_args (objects, output_dir, takes_libs=1,
|
||||||
libraries=libraries, library_dirs=library_dirs)
|
libraries=libraries, library_dirs=library_dirs)
|
||||||
|
|
||||||
lib_opts = gen_lib_options (self, library_dirs, libraries)
|
lib_opts = gen_lib_options (self,
|
||||||
|
library_dirs, self.runtime_library_dirs,
|
||||||
|
libraries)
|
||||||
if type (output_dir) not in (StringType, NoneType):
|
if type (output_dir) not in (StringType, NoneType):
|
||||||
raise TypeError, "'output_dir' must be a string or None"
|
raise TypeError, "'output_dir' must be a string or None"
|
||||||
if output_dir is not None:
|
if output_dir is not None:
|
||||||
|
@ -234,7 +236,9 @@ def link_executable (self,
|
||||||
self._fix_link_args (objects, output_dir, takes_libs=1,
|
self._fix_link_args (objects, output_dir, takes_libs=1,
|
||||||
libraries=libraries, library_dirs=library_dirs)
|
libraries=libraries, library_dirs=library_dirs)
|
||||||
|
|
||||||
lib_opts = gen_lib_options (self, library_dirs, libraries)
|
lib_opts = gen_lib_options (self,
|
||||||
|
library_dirs, self.runtime_library_dirs,
|
||||||
|
libraries)
|
||||||
output_filename = output_progname # Unix-ism!
|
output_filename = output_progname # Unix-ism!
|
||||||
if output_dir is not None:
|
if output_dir is not None:
|
||||||
output_filename = os.path.join (output_dir, output_filename)
|
output_filename = os.path.join (output_dir, output_filename)
|
||||||
|
@ -262,6 +266,9 @@ def link_executable (self,
|
||||||
def library_dir_option (self, dir):
|
def library_dir_option (self, dir):
|
||||||
return "-L" + dir
|
return "-L" + dir
|
||||||
|
|
||||||
|
def runtime_library_dir_option (self, dir):
|
||||||
|
return "-R" + dir
|
||||||
|
|
||||||
def library_option (self, lib):
|
def library_option (self, lib):
|
||||||
return "-l" + lib
|
return "-l" + lib
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue