diff --git a/ghc/tests/mk/should_compile.mk b/ghc/tests/mk/should_compile.mk
index d0b7e1f784874751df90a60ecaaf5cd56ad03c8f..929ced279909532f1e309e8bb820fb17f85643fb 100644
--- a/ghc/tests/mk/should_compile.mk
+++ b/ghc/tests/mk/should_compile.mk
@@ -3,7 +3,9 @@
 
 HS_SRCS = $(wildcard *.hs)
 
-SRC_RUNTEST_OPTS += -o1 $*.stdout -o2 $*.stderr -x 0
+SRC_RUNTEST_OPTS += -x 0 \
+	$(foreach i,$(wildcard $*.stdout),-o1 $(i)) \
+	$(foreach i,$(wildcard $*.stderr),-o2 $(i))
 
 %.o : %.hs
 	@echo ---- Testing for successful compilation of $<
diff --git a/ghc/tests/mk/should_fail.mk b/ghc/tests/mk/should_fail.mk
index ec390115c902ec6c34e88d658abe3a21864f5ffb..17b10e6b9faf8ef3d46b0d186c8acac89ebe4d5e 100644
--- a/ghc/tests/mk/should_fail.mk
+++ b/ghc/tests/mk/should_fail.mk
@@ -3,7 +3,9 @@
 
 HS_SRCS = $(wildcard *.hs)
 
-SRC_RUNTEST_OPTS += -o1 $*.stdout -o2 $*.stderr -x 1
+SRC_RUNTEST_OPTS += -x 1 \
+	$(foreach i,$(wildcard $*.stdout),-o1 $(i)) \
+	$(foreach i,$(wildcard $*.stderr),-o2 $(i))
 
 %.o : %.hs
 	@echo ---- Testing for failure to compile $<
diff --git a/ghc/tests/mk/should_run.mk b/ghc/tests/mk/should_run.mk
index 7c5850821fdfb783d5d05ec7a1c117e65723e1f8..eb0336b55c7e16ff2e3d8ceaf4a83221a0b9cf2c 100644
--- a/ghc/tests/mk/should_run.mk
+++ b/ghc/tests/mk/should_run.mk
@@ -5,7 +5,9 @@ HS_SRCS = $(wildcard *.hs)
 BINS = $(patsubst %.o,%.bin,$(HS_OBJS))
 RUNTESTS = $(filter-out $(OMITTED_RUNTESTS), $(patsubst %.bin,%.run,$(BINS)))
 
-SRC_RUNTEST_OPTS += -o1 $*.stdout -o2 $*.stderr -x 0
+SRC_RUNTEST_OPTS += -x 0 \
+	$(foreach i,$(wildcard $*.stdout),-o1 $(i)) \
+	$(foreach i,$(wildcard $*.stderr),-o2 $(i))
 
 all :: $(RUNTESTS)