mirror of https://github.com/python/cpython
Added 'link_executable()' method (Berthold Hoellmann).
Two small fixes to 'link_shared_object()'.
This commit is contained in:
parent
316778860f
commit
f70c603149
|
@ -333,15 +333,13 @@ class MSVCCompiler (CCompiler) :
|
||||||
(libraries, library_dirs, runtime_library_dirs) = \
|
(libraries, library_dirs, runtime_library_dirs) = \
|
||||||
self._fix_lib_args (libraries, library_dirs, runtime_library_dirs)
|
self._fix_lib_args (libraries, library_dirs, runtime_library_dirs)
|
||||||
|
|
||||||
if self.runtime_library_dirs:
|
if runtime_library_dirs:
|
||||||
self.warn ("I don't know what to do with 'runtime_library_dirs': "
|
self.warn ("I don't know what to do with 'runtime_library_dirs': "
|
||||||
+ str (runtime_library_dirs))
|
+ str (runtime_library_dirs))
|
||||||
|
|
||||||
lib_opts = gen_lib_options (self,
|
lib_opts = gen_lib_options (self,
|
||||||
library_dirs, runtime_library_dirs,
|
library_dirs, runtime_library_dirs,
|
||||||
libraries)
|
libraries)
|
||||||
if type (output_dir) not in (StringType, NoneType):
|
|
||||||
raise TypeError, "'output_dir' must be a string or None"
|
|
||||||
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)
|
||||||
|
|
||||||
|
@ -372,6 +370,53 @@ class MSVCCompiler (CCompiler) :
|
||||||
# link_shared_object ()
|
# link_shared_object ()
|
||||||
|
|
||||||
|
|
||||||
|
def link_executable (self,
|
||||||
|
objects,
|
||||||
|
output_progname,
|
||||||
|
output_dir=None,
|
||||||
|
libraries=None,
|
||||||
|
library_dirs=None,
|
||||||
|
runtime_library_dirs=None,
|
||||||
|
debug=0,
|
||||||
|
extra_preargs=None,
|
||||||
|
extra_postargs=None):
|
||||||
|
|
||||||
|
(objects, output_dir) = self._fix_object_args (objects, output_dir)
|
||||||
|
(libraries, library_dirs, runtime_library_dirs) = \
|
||||||
|
self._fix_lib_args (libraries, library_dirs, runtime_library_dirs)
|
||||||
|
|
||||||
|
if runtime_library_dirs:
|
||||||
|
self.warn ("I don't know what to do with 'runtime_library_dirs': "
|
||||||
|
+ str (runtime_library_dirs))
|
||||||
|
|
||||||
|
lib_opts = gen_lib_options (self,
|
||||||
|
library_dirs, runtime_library_dirs,
|
||||||
|
libraries)
|
||||||
|
output_filename = output_progname + self.exe_extension
|
||||||
|
if output_dir is not None:
|
||||||
|
output_filename = os.path.join (output_dir, output_filename)
|
||||||
|
|
||||||
|
if self._need_link (objects, output_filename):
|
||||||
|
|
||||||
|
if debug:
|
||||||
|
ldflags = self.ldflags_shared_debug[1:]
|
||||||
|
else:
|
||||||
|
ldflags = self.ldflags_shared[1:]
|
||||||
|
|
||||||
|
ld_args = ldflags + lib_opts + \
|
||||||
|
objects + ['/OUT:' + output_filename]
|
||||||
|
|
||||||
|
if extra_preargs:
|
||||||
|
ld_args[:0] = extra_preargs
|
||||||
|
if extra_postargs:
|
||||||
|
ld_args.extend (extra_postargs)
|
||||||
|
|
||||||
|
self.mkpath (os.path.dirname (output_filename))
|
||||||
|
self.spawn ([self.link] + ld_args)
|
||||||
|
else:
|
||||||
|
self.announce ("skipping %s (up-to-date)" % output_filename)
|
||||||
|
|
||||||
|
|
||||||
# -- Miscellaneous methods -----------------------------------------
|
# -- Miscellaneous methods -----------------------------------------
|
||||||
# These are all used by the 'gen_lib_options() function, in
|
# These are all used by the 'gen_lib_options() function, in
|
||||||
# ccompiler.py.
|
# ccompiler.py.
|
||||||
|
|
Loading…
Reference in New Issue