diff --git a/src/tools/msvc/vcregress.pl b/src/tools/msvc/vcregress.pl
index 08e94ffa576f04878e81b6fab1048dfbbf706eef..d6ab91782c6360fcea13d5dd48d4f92a33fef899 100644
--- a/src/tools/msvc/vcregress.pl
+++ b/src/tools/msvc/vcregress.pl
@@ -323,9 +323,13 @@ sub fetchRegressOpts
 	if ($m =~ /^\s*REGRESS_OPTS\s*=(.*)/m)
 	{
 
-		# ignore options that use makefile variables - can't handle those
-		# ignore anything that isn't an option staring with --
-		@opts = grep { $_ !~ /\$\(/ && $_ =~ /^--/ } split(/\s+/, $1);
+		# Substitute known Makefile variables, then ignore options that retain
+		# an unhandled variable reference.  Ignore anything that isn't an
+		# option starting with "--".
+		@opts = grep {
+			s/\Q$(top_builddir)\E/\"$topdir\"/;
+			$_ !~ /\$\(/ && $_ =~ /^--/
+		} split(/\s+/, $1);
 	}
 	if ($m =~ /^\s*ENCODING\s*=\s*(\S+)/m)
 	{