diff --git a/src/Makefile.am b/src/Makefile.am
index 1cb824f605b5c7510224c67d5fe19738645e034a..4adfdcb1ae423f7a607478317ed25aa36ba32ffc 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -52,10 +52,10 @@ include $(top_srcdir)/flymake.mk
 MKOCTFILE ?= mkoctfile
 OCTAVE    ?= octave
 
-OCTAVE_MODULES= duneminimise duneevaluate
+OCTAVE_MODULES= duneminimise.oct duneevaluate.oct
 
 .PHONY: run-octave
-run-octave: $(addsuffix .oct,$(OCTAVE_MODULES))
+run-octave: $(OCTAVE_MODULES)
 	$(OCTAVE) --path $(abs_builddir) --path $(abs_srcdir)
 
 include $(srcdir)/octave.mk
diff --git a/src/octave.mk b/src/octave.mk
index f9271953d4ac85aff528d9953dec6d45b3781e92..673fbdcf518e90b5a4d9ba1c51bd004d0e94d3e8 100644
--- a/src/octave.mk
+++ b/src/octave.mk
@@ -1,12 +1,7 @@
-define OCTFILE_template =
-$(1).oct: $(1).o
-	$$(MKOCTFILE) -o $$@ $$< -ldunecommon
+$(OCTAVE_MODULES): %.oct: %.o
+	$(MKOCTFILE) -o $@ $< -ldunecommon
 
-$(1).o: $(1).cc duneoctave.hh
-	$$(MKOCTFILE) $$(DEFS) $$(AM_CPPFLAGS) -c -o $$@ $$<
-endef
-
-$(foreach octave_module,$(OCTAVE_MODULES),$(eval $(call OCTFILE_template,$(octave_module))))
-
-CLEANFILES = $(addsuffix .oct,$(OCTAVE_MODULES)) $(addsuffix .o,$(OCTAVE_MODULES))
+$(OCTAVE_MODULES:.oct=.o): %.o: %.cc duneoctave.hh
+	$(MKOCTFILE) $(DEFS) $(AM_CPPFLAGS) -c -o $@ $<
 
+CLEANFILES = $(OCTAVE_MODULES) $(OCTAVE_MODULES:.oct=.o)