diff --git a/Lib/distutils/ccompiler.py b/Lib/distutils/ccompiler.py
index b146f89..53d4fa5 100644
--- a/Lib/distutils/ccompiler.py
+++ b/Lib/distutils/ccompiler.py
@@ -414,6 +414,22 @@
     # -- Worker methods ------------------------------------------------
     # (must be implemented by subclasses)
 
+    def preprocess (self,
+                    source,
+                    output_file=None,
+                    macros=None,
+                    include_dirs=None,
+                    extra_preargs=None,
+                    extra_postargs=None):
+        """Preprocess a single C/C++ source file, named in 'source'.
+        Output will be written to file named 'output_file', or stdout if
+        'output_file' not supplied.  'macros' is a list of macro
+        definitions as for 'compile()', which will augment the macros set
+        with 'define_macro()' and 'undefine_macro()'.  'include_dirs' is a
+        list of directory names that will be added to the default list.
+        """
+        pass
+
     def compile (self,
                  sources,
                  output_dir=None,
diff --git a/Lib/distutils/unixccompiler.py b/Lib/distutils/unixccompiler.py
index 4d38e4d..47d8ad6 100644
--- a/Lib/distutils/unixccompiler.py
+++ b/Lib/distutils/unixccompiler.py
@@ -21,6 +21,7 @@
 from types import *
 from copy import copy
 from distutils import sysconfig
+from distutils.dep_util import newer
 from distutils.ccompiler import \
      CCompiler, gen_preprocess_options, gen_lib_options
 from distutils.errors import \
@@ -104,6 +105,37 @@
     # __init__ ()
 
 
+    def preprocess (self,
+                    source,
+                    output_file=None,
+                    macros=None,
+                    include_dirs=None,
+                    extra_preargs=None,
+                    extra_postargs=None):
+
+        (_, macros, include_dirs) = \
+            self._fix_compile_args (None, macros, include_dirs)
+        pp_opts = gen_preprocess_options (macros, include_dirs)
+        cc_args = ['-E'] + pp_opts
+        if output_file:
+            cc_args.extend(['-o', output_file])
+        if extra_preargs:
+            cc_args[:0] = extra_preargs
+        if extra_postargs:
+            extra_postargs.extend(extra_postargs)
+
+        # We need to preprocess: either we're being forced to, or the
+        # source file is newer than the target (or the target doesn't
+        # exist).
+        if self.force or (output_file and newer(source, output_file)):
+            if output_file:
+                self.mkpath(os.path.dirname(output_file))
+            try:
+                self.spawn ([self.cc] + cc_args)
+            except DistutilsExecError, msg:
+                raise CompileError, msg
+
+
     def compile (self,
                  sources,
                  output_dir=None,
