Add implementation of _compile() and use default compile() method.

This commit is contained in:
Jeremy Hylton 2002-06-18 18:48:55 +00:00
parent 6e08d22b1a
commit 1b046e4314
3 changed files with 32 additions and 83 deletions

View file

@ -113,37 +113,20 @@ class CygwinCCompiler (UnixCCompiler):
# __init__ () # __init__ ()
# not much different of the compile method in UnixCCompiler,
# but we have to insert some lines in the middle of it, so
# we put here a adapted version of it.
# (If we would call compile() in the base class, it would do some
# initializations a second time, this is why all is done here.)
def compile(self, sources,
output_dir=None, macros=None, include_dirs=None, debug=0,
extra_preargs=None, extra_postargs=None, depends=None):
macros, objects, extra_postargs, pp_opts, build = \ def _compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts):
self._setup_compile(output_dir, macros, include_dirs, sources, if ext == '.rc' or ext == '.res':
depends, extra_postargs) # gcc needs '.res' and '.rc' compiled to object files !!!
cc_args = self._get_cc_args(pp_opts, debug, extra_preargs) try:
self.spawn(["windres", "-i", src, "-o", obj])
for obj, (src, ext) in build.items(): except DistutilsExecError, msg:
if ext == '.rc' or ext == '.res': raise CompileError, msg
# gcc needs '.res' and '.rc' compiled to object files !!! else: # for other files use the C-compiler
try: try:
self.spawn (["windres","-i",src,"-o",obj]) self.spawn(self.compiler_so + cc_args + [src, '-o', obj] +
except DistutilsExecError, msg: extra_postargs)
raise CompileError, msg except DistutilsExecError, msg:
else: # for other files use the C-compiler raise CompileError, msg
try:
self.spawn (self.compiler_so + cc_args +
[src, '-o', obj] +
extra_postargs)
except DistutilsExecError, msg:
raise CompileError, msg
# Return *all* object filenames, not just the ones we just built.
return objects
def link (self, def link (self,
target_desc, target_desc,

View file

@ -76,41 +76,19 @@ class EMXCCompiler (UnixCCompiler):
# __init__ () # __init__ ()
# not much different of the compile method in UnixCCompiler, def _compile(self, obj, src, ext, cc_args, extra_postargs):
# but we have to insert some lines in the middle of it, so if ext == '.rc':
# we put here a adapted version of it. # gcc requires '.rc' compiled to binary ('.res') files !!!
# (If we would call compile() in the base class, it would do some try:
# initializations a second time, this is why all is done here.) self.spawn(["rc", "-r", src])
except DistutilsExecError, msg:
def compile(self, sources, raise CompileError, msg
output_dir=None, macros=None, include_dirs=None, debug=0, else: # for other files use the C-compiler
extra_preargs=None, extra_postargs=None, depends=None): try:
self.spawn(self.compiler_so + cc_args + [src, '-o', obj] +
macros, objects, extra_postargs, pp_opts, build = \ extra_postargs)
self._setup_compile(output_dir, macros, include_dirs, sources, except DistutilsExecError, msg:
depends, extra_postargs) raise CompileError, msg
cc_args = self._get_cc_args(pp_opts, debug, extra_preargs)
for obj, (src, ext) in build.items():
if ext == '.rc':
# gcc requires '.rc' compiled to binary ('.res') files !!!
try:
self.spawn (["rc","-r",src])
except DistutilsExecError, msg:
raise CompileError, msg
else: # for other files use the C-compiler
try:
self.spawn (self.compiler_so + cc_args +
[src, '-o', obj] +
extra_postargs)
except DistutilsExecError, msg:
raise CompileError, msg
# Return *all* object filenames, not just the ones we just built.
return objects
# compile ()
def link (self, def link (self,
target_desc, target_desc,

View file

@ -105,24 +105,12 @@ class UnixCCompiler(CCompiler):
except DistutilsExecError, msg: except DistutilsExecError, msg:
raise CompileError, msg raise CompileError, msg
def compile(self, sources, def _compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts):
output_dir=None, macros=None, include_dirs=None, debug=0, try:
extra_preargs=None, extra_postargs=None, depends=None): self.spawn(self.compiler_so + cc_args + [src, '-o', obj] +
extra_postargs)
macros, objects, extra_postargs, pp_opts, build = \ except DistutilsExecError, msg:
self._setup_compile(output_dir, macros, include_dirs, sources, raise CompileError, msg
depends, extra_postargs)
cc_args = self._get_cc_args(pp_opts, debug, extra_preargs)
for obj, (src, ext) in build.items():
try:
self.spawn(self.compiler_so + cc_args +
[src, '-o', obj] + extra_postargs)
except DistutilsExecError, msg:
raise CompileError, msg
# Return *all* object filenames, not just the ones we just built.
return objects
def create_static_lib(self, objects, output_libname, def create_static_lib(self, objects, output_libname,
output_dir=None, debug=0): output_dir=None, debug=0):