Added 'runtime_library_dirs' parameter to 'link_*()' methods.
Split '_fix_link_args()' up into '_fix_object_args()' (for use of
  'create_static_lib() and link methods) and '_fix_lib_args()' (for the
  link methods only).
diff --git a/Lib/distutils/ccompiler.py b/Lib/distutils/ccompiler.py
index 4a8c1d3..ffad294 100644
--- a/Lib/distutils/ccompiler.py
+++ b/Lib/distutils/ccompiler.py
@@ -338,16 +338,11 @@
     # _prep_compile ()
 
 
-    def _fix_link_args (self, objects, output_dir,
-                        takes_libs=0, libraries=None, library_dirs=None):
-        """Typecheck and fix up some of the arguments supplied to the
-           'link_*' methods and return the fixed values.  Specifically:
-           ensure that 'objects' is a list; if output_dir is None, use
-           self.output_dir; ensure that 'libraries' and 'library_dirs' are
-           both lists, and augment them with 'self.libraries' and
-           'self.library_dirs'.  If 'takes_libs' is true, return a tuple
-           (objects, output_dir, libraries, library_dirs; else return
-           (objects, output_dir)."""
+    def _fix_object_args (self, objects, output_dir):
+        """Typecheck and fix up some arguments supplied to various
+           methods.  Specifically: ensure that 'objects' is a list; if
+           output_dir is None, replace with self.output_dir.  Return fixed
+           versions of 'objects' and 'output_dir'."""
 
         if type (objects) not in (ListType, TupleType):
             raise TypeError, \
@@ -359,28 +354,45 @@
         elif type (output_dir) is not StringType:
             raise TypeError, "'output_dir' must be a string or None"
 
-        if takes_libs:
-            if libraries is None:
-                libraries = self.libraries
-            elif type (libraries) in (ListType, TupleType):
-                libraries = list (libraries) + (self.libraries or [])
-            else:
-                raise TypeError, \
-                      "'libraries' (if supplied) must be a list of strings"
+        return (objects, output_dir)
 
-            if library_dirs is None:
-                library_dirs = self.library_dirs
-            elif type (library_dirs) in (ListType, TupleType):
-                library_dirs = list (library_dirs) + (self.library_dirs or [])
-            else:
-                raise TypeError, \
-                      "'library_dirs' (if supplied) must be a list of strings"
 
-            return (objects, output_dir, libraries, library_dirs)
+    def _fix_lib_args (self, libraries, library_dirs, runtime_library_dirs):
+        """Typecheck and fix up some of the arguments supplied to the
+           'link_*' methods.  Specifically: ensure that all arguments are
+           lists, and augment them with their permanent versions
+           (eg. 'self.libraries' augments 'libraries').  Return a tuple
+           with fixed versions of all arguments."""
+
+        if libraries is None:
+            libraries = self.libraries
+        elif type (libraries) in (ListType, TupleType):
+            libraries = list (libraries) + (self.libraries or [])
         else:
-            return (objects, output_dir)
+            raise TypeError, \
+                  "'libraries' (if supplied) must be a list of strings"
 
-    # _fix_link_args ()
+        if library_dirs is None:
+            library_dirs = self.library_dirs
+        elif type (library_dirs) in (ListType, TupleType):
+            library_dirs = list (library_dirs) + (self.library_dirs or [])
+        else:
+            raise TypeError, \
+                  "'library_dirs' (if supplied) must be a list of strings"
+
+        if runtime_library_dirs is None:
+            runtime_library_dirs = self.runtime_library_dirs
+        elif type (runtime_library_dirs) in (ListType, TupleType):
+            runtime_library_dirs = (list (runtime_library_dirs) +
+                                    (self.runtime_library_dirs or []))
+        else:
+            raise TypeError, \
+                  "'runtime_library_dirs' (if supplied) " + \
+                  "must be a list of strings"
+
+        return (libraries, library_dirs, runtime_library_dirs)
+
+    # _fix_lib_args ()
 
 
     def _need_link (self, objects, output_file):
@@ -480,6 +492,7 @@
                          output_dir=None,
                          libraries=None,
                          library_dirs=None,
+                         runtime_library_dirs=None,
                          debug=0,
                          extra_preargs=None,
                          extra_postargs=None):
@@ -522,6 +535,7 @@
                             output_dir=None,
                             libraries=None,
                             library_dirs=None,
+                            runtime_library_dirs=None,
                             debug=0,
                             extra_preargs=None,
                             extra_postargs=None):
@@ -540,6 +554,7 @@
                          output_dir=None,
                          libraries=None,
                          library_dirs=None,
+                         runtime_library_dirs=None,
                          debug=0,
                          extra_preargs=None,
                          extra_postargs=None):