Ditched '_gen_preprocess_options()' and '_gen_lib_options()' -- they're
  now provided (minus the leading underscore) by the ccompiler module.
Fix 'compile()' to return the list of object files generated.
Cosmetic tweaks/delete cruft.
diff --git a/Lib/distutils/unixccompiler.py b/Lib/distutils/unixccompiler.py
index 6594043..a868451 100644
--- a/Lib/distutils/unixccompiler.py
+++ b/Lib/distutils/unixccompiler.py
@@ -21,7 +21,7 @@
 from types import *
 from sysconfig import \
      CC, CCSHARED, CFLAGS, OPT, LDSHARED, LDFLAGS, RANLIB, AR, SO
-from ccompiler import CCompiler
+from ccompiler import CCompiler, gen_preprocess_options, gen_lib_options
 
 
 # XXX Things not currently handled:
@@ -101,8 +101,8 @@
             raise TypeError, \
                   "'includes' (if supplied) must be a list of strings"
 
-        pp_opts = _gen_preprocess_options (self.macros + macros,
-                                           self.include_dirs + includes)
+        pp_opts = gen_preprocess_options (self.macros + macros,
+                                          self.include_dirs + includes)
 
         # use of ccflags_shared means we're blithely assuming that we're
         # compiling for inclusion in a shared object! (will have to fix
@@ -111,10 +111,9 @@
                   self.ccflags + self.ccflags_shared + \
                   sources
 
-        # this will change to 'spawn' when I have it!
-        #print string.join ([self.cc] + cc_args, ' ')
         self.spawn ([self.cc] + cc_args)
-
+        return self.object_filenames (sources)
+    
 
     # XXX punting on 'link_static_lib()' for now -- it might be better for
     # CCompiler to mandate just 'link_binary()' or some such to build a new
@@ -149,12 +148,12 @@
         if build_info is None:
             build_info = {}
         
-        lib_opts = _gen_lib_options (self.libraries + libraries,
-                                     self.library_dirs + library_dirs)
+        lib_opts = gen_lib_options (self.libraries + libraries,
+                                    self.library_dirs + library_dirs,
+                                    "-l%s", "-L%s")
         ld_args = self.ldflags_shared + lib_opts + \
                   objects + ['-o', output_filename]
 
-        #print string.join ([self.ld_shared] + ld_args, ' ')
         self.spawn ([self.ld_shared] + ld_args)
 
 
@@ -174,8 +173,6 @@
     def shared_library_filename (self, libname):
         return "lib%s%s" % (libname, self._shared_lib_ext )
 
-
-
 # class UnixCCompiler
 
 
@@ -184,60 +181,3 @@
        the list of arguments; return them as (cmd, arglist)."""
     args = string.split (cmd)
     return (args[0], args[1:])
-
-
-def _gen_preprocess_options (macros, includes):
-
-    # XXX it would be nice (mainly aesthetic, and so we don't generate
-    # stupid-looking command lines) to go over 'macros' and eliminate
-    # redundant definitions/undefinitions (ie. ensure that only the
-    # latest mention of a particular macro winds up on the command
-    # line).  I don't think it's essential, though, since most (all?)
-    # Unix C compilers only pay attention to the latest -D or -U
-    # mention of a macro on their command line.  Similar situation for
-    # 'includes'.  I'm punting on both for now.  Anyways, weeding out
-    # redundancies like this should probably be the province of
-    # CCompiler, since the data structures used are inherited from it
-    # and therefore common to all CCompiler classes.
-
-
-    pp_opts = []
-    for macro in macros:
-        if len (macro) == 1:        # undefine this macro
-            pp_opts.append ("-U%s" % macro[0])
-        elif len (macro) == 2:
-            if macro[1] is None:    # define with no explicit value
-                pp_opts.append ("-D%s" % macro[0])
-            else:
-                # XXX *don't* need to be clever about quoting the
-                # macro value here, because we're going to avoid the
-                # shell at all costs when we spawn the command!
-                pp_opts.append ("-D%s=%s" % macro)
-
-    for dir in includes:
-        pp_opts.append ("-I%s" % dir)
-
-    return pp_opts
-
-# _gen_preprocess_options ()
-
-
-def _gen_lib_options (libraries, library_dirs):
-
-    lib_opts = []
-
-    for dir in library_dirs:
-        lib_opts.append ("-L%s" % dir)
-
-    # XXX it's important that we *not* remove redundant library mentions!
-    # 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
-    # -lbar" to get things to work -- that's certainly a possibility, but a
-    # pretty nasty way to arrange your C code.
-
-    for lib in libraries:
-        lib_opts.append ("-l%s" % lib)
-
-    return lib_opts
-
-# _gen_lib_options ()