diff --git a/ChangeLog b/ChangeLog
index 110342dfd09f27812f517759439b0189109ffd6e..e30a0f7a1be83d6da323f06560e95612a3b73684 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2013-01-02  Niels Möller  <nisse@lysator.liu.se>
+
+	* examples/Makefile.in: Explicit rules for building objects in
+	parent directory.
+	* tools/Makefile.in: Likewise.
+	* testsuite/Makefile.in: Likewise.
+
 2013-01-01  Niels Möller  <nisse@lysator.liu.se>
 
 	* nettle.texinfo (Recommended hash functions): Document additional
diff --git a/examples/Makefile.in b/examples/Makefile.in
index 3becd088a37adf35ec8f71b4cab79847753e1064..71af8d439a5cf1fb54a8f97bb557068ef8bd6247 100644
--- a/examples/Makefile.in
+++ b/examples/Makefile.in
@@ -39,8 +39,14 @@ all: $(TARGETS)
 .c.$(OBJEXT):
 	$(COMPILE) -c $< && $(DEP_PROCESS)
 
-$(getopt_OBJS) ../nettle-internal.$(OBJEXT):
-	( cd .. && $(MAKE) $@ )
+# NOTE: If we required GNU make, we could use a single rule with $(@F)
+# or $(notdir $@)
+../getopt.$(OBJEXT):
+	( cd .. && $(MAKE) getopt.$(OBJEXT))
+../getopt1.$(OBJEXT):
+	( cd .. && $(MAKE) getopt1.$(OBJEXT))
+../nettle-internal.$(OBJEXT):
+	( cd .. && $(MAKE) nettle-internal.$(OBJEXT))
 
 # For Solaris and BSD make, we have to use an explicit rule for each executable
 next-prime$(EXEEXT): next-prime.$(OBJEXT) $(GETOPT_OBJS) ../libhogweed.a
diff --git a/testsuite/Makefile.in b/testsuite/Makefile.in
index 9f2c6c6b70932d1c216ee7e00decc360295d4159..71e133f942d25d8e21e602c303850620ca571cc2 100644
--- a/testsuite/Makefile.in
+++ b/testsuite/Makefile.in
@@ -75,7 +75,7 @@ TEST_OBJS = testutils.$(OBJEXT) ../nettle-internal.$(OBJEXT) \
 	    $(LIB_HOGWEED) -lnettle $(LIBS)
 
 ../nettle-internal.$(OBJEXT):
-	( cd .. && $(MAKE) $@ )
+	( cd .. && $(MAKE) nettle-internal.$(OBJEXT) )
 
 .PHONY: test-rules
 test-rules:
diff --git a/tools/Makefile.in b/tools/Makefile.in
index a14e908bcad5b7f253a4b65ab3896e4c8486c999..29d55e88f0b3f65935f35b711045c0b45fa969e8 100644
--- a/tools/Makefile.in
+++ b/tools/Makefile.in
@@ -53,8 +53,12 @@ nettle-hash$(EXEEXT): $(nettle_hash_OBJS) ../libnettle.a
 .c.$(OBJEXT):
 	$(COMPILE) -c $< && $(DEP_PROCESS)
 
-$(getopt_OBJS):
-	( cd .. && $(MAKE) $@ )
+# NOTE: If we required GNU make, we could use a single rule with $(@F)
+# or $(notdir $@)
+../getopt.$(OBJEXT):
+	( cd .. && $(MAKE) getopt.$(OBJEXT))
+../getopt1.$(OBJEXT):
+	( cd .. && $(MAKE) getopt1.$(OBJEXT))
 
 Makefile: $(srcdir)/Makefile.in ../config.status
 	cd .. && $(SHELL) ./config.status tools/$@