--- /dev/null
+#################################################################################
+#
+# ghc/tests/mk/boilerplate.mk
+#
+# Boilerplate Makefile for an fptools project
+#
+#################################################################################
+
+# Begin by slurping in the boilerplate from one level up,
+# with standard TOP-mangling
+# Remember, TOP is the top level of the innermost level
+# ( FPTOOLS_TOP, which will be set while processing
+# toplevel boilerplate, is the fptools top )
+
+TEST_TOP := $(TOP)
+TOP := $(TOP)/..
+include $(TOP)/mk/boilerplate.mk
+TOP:=$(TEST_TOP)
+
+
+# -----------------------------------------------------------------
+# Everything after this point
+# augments or overrides previously set variables.
+# (these files are optional, so `make' won't fret if it
+# cannot get to them).
+# -----------------------------------------------------------------
+
+
+# Define TEST_PROG. In ..../nofib/imaginary/exp3_8, PROG is exp3_8 by default.
+#
+TEST_PROG = $(notdir $(shell pwd))$(_way)
+
+# Eventually, have the binary purged
+CLEAN_FILES += $(TEST_PROG)
+
--- /dev/null
+#################################################################################
+#
+# target.mk
+#
+# ghc/tests standard target rules
+#
+#################################################################################
+
+
+# Link step
+$(TEST_PROG) : $(OBJS)
+ $(HC) $(HC_FLAGS) $(OBJS) -o $(TEST_PROG)
+
+# Run test
+runtest : $(TEST_PROG)
+ $(RUNTEST) ./$< \
+ $(addprefix -i ,$(wildcard $(TEST_PROG).stdin)) \
+ $(addprefix -o1 ,$(wildcard $(TEST_PROG).stdout)) \
+ $(addprefix -o2 ,$(wildcard $(TEST_PROG).stderr)) \
+ $(RUNTEST_OPTS)
+
+
+# Include standard boilerplate
+# We do this at the end for cosmetic reasons: it means that the "normal-way"
+# runtests will precede the "other-way" recursive invocations of make
+
+include $(FPTOOLS_TOP)/mk/target.mk
+