diff --git a/ghc/utils/mkdependHS/mkdependHS.prl b/ghc/utils/mkdependHS/mkdependHS.prl
index ef1d6701821d87d8963596bee5cad173b605b376..980a858b8f9dfaad7aa29d81e7a810af75867fca 100644
--- a/ghc/utils/mkdependHS/mkdependHS.prl
+++ b/ghc/utils/mkdependHS/mkdependHS.prl
@@ -133,8 +133,11 @@ if (!$Include_prelude) {
 foreach $lib ( @Syslibs ) {
     local($dir);
 
+    # Yuck ^ 2
     if ( $lib eq 'win32' && ! $INSTALLING ) {
       $dir = "${TopPwd}/hslibs/${lib}/src";
+    } elsif ( $lib eq 'com' && ! $INSTALLING ) {
+      $dir = "${TopPwd}/hdirect/lib";
     } else {
       $dir = ($INSTALLING) ? "${InstLibDirGhc}/imports/${lib}" 
 	                   : "${TopPwd}/ghc/lib/${lib}";
@@ -338,7 +341,11 @@ sub preprocess_import_dirs {
 	for ($_ = readdir(DIR); $_; $_ = readdir(DIR)) {
 	    next unless /(.*)\.hi$/;
 	    $thing = $1;
-	    if ($ModuleIn{$thing} && $ModuleIn{$thing} ne $d) {
+ 	    # 
+ 	    # dLL_ifs.hi is used to indicate whether a directory
+ 	    # contains interface files whose object codes reside in a Win32 DLL.
+ 	    # 
+	    if ($ModuleIn{$thing} && $ModuleIn{$thing} ne $d && $thing ne 'dLL_ifs') {
 		print STDERR "$Pgm: warning: $thing.hi appears in both $ModuleIn{$thing} and $d!\n" if ($Warnings);
 	    } else {
 		$ModuleIn{$thing} = $d;