diff --git a/src/tools/msvc/Project.pm b/src/tools/msvc/Project.pm
index bb6da337452053b63f4cc4d056ff954409e77fd7..385b757ed72162b2cfe4bf999117a3e2ca288b12 100644
--- a/src/tools/msvc/Project.pm
+++ b/src/tools/msvc/Project.pm
@@ -3,7 +3,7 @@ package Project;
 #
 # Package that encapsulates a Visual C++ project file generation
 #
-# $PostgreSQL: pgsql/src/tools/msvc/Project.pm,v 1.18 2008/02/19 16:15:14 mha Exp $
+# $PostgreSQL: pgsql/src/tools/msvc/Project.pm,v 1.19 2008/04/15 16:22:36 adunstan Exp $
 #
 use Carp;
 use strict;
@@ -259,7 +259,8 @@ sub AddDir
     }
 
     # Match rules that pull in source files from different directories
-    my $replace_re = qr{^([^:\n\$]+\.c)\s*:\s*(?:%\s*: )?\$(\([^\)]+\))\/(.*)\/[^\/]+$};
+    # example: pg_crc.c: $(top_srcdir)/src/backend/utils/hash/pg_crc.c
+    my $replace_re = qr{^([^:\n\$]+\.c)\s*:\s*(?:%\s*: )?\$(\([^\)]+\))\/(.*)\/[^\/]+$}m;
     while ($mf =~ m{$replace_re}m)
     {
         my $match = $1;