diff --git a/ghc/tests/mk/should_run.mk b/ghc/tests/mk/should_run.mk
new file mode 100644
index 0000000000000000000000000000000000000000..eab6786c7a7a52eb95ee710de40d2df495018591
--- /dev/null
+++ b/ghc/tests/mk/should_run.mk
@@ -0,0 +1,18 @@
+#-----------------------------------------------------------------------------
+# template for should_run tests.
+
+HS_SRCS = $(wildcard *.hs)
+BINS = $(patsubst %.o,%.bin,$(HS_OBJS))
+RUNTESTS = $(patsubst %.bin,%.run,$(BINS))
+
+SRC_RUNTEST_OPTS += -o1 $*.stdout -o2 $*.stderr -x 0
+
+all :: $(RUNTESTS)
+
+%.run : %.bin
+	$(RUNTEST) $< $(RUNTEST_OPTS)
+
+%.bin : %.o
+	$(HC) $(HC_OPTS) $< -o $@
+
+CLEAN_FILES += $(BINS)