diff --git a/src/Makefile b/src/Makefile
index 4469d2cdf2..a0460342e8 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -50,14 +50,19 @@ uninstall: uninstall-local
 uninstall-local:
 	rm -f $(addprefix '$(DESTDIR)$(pgxsdir)/$(subdir)'/, Makefile.global Makefile.port Makefile.shlib nls-global.mk)
 
+distprep:
+	$(MAKE) -C test/isolation $@
+
 clean:
 	$(MAKE) -C test $@
 	$(MAKE) -C tutorial NO_PGXS=1 $@
+	$(MAKE) -C test/isolation $@
 	$(MAKE) -C test/thread $@
 
 distclean maintainer-clean:
 	$(MAKE) -C test $@
 	$(MAKE) -C tutorial NO_PGXS=1 $@
+	$(MAKE) -C test/isolation $@
 	$(MAKE) -C test/thread $@
 	rm -f Makefile.port Makefile.global
 
diff --git a/src/backend/Makefile b/src/backend/Makefile
index 2b2c9bb9a2..f29d28d491 100644
--- a/src/backend/Makefile
+++ b/src/backend/Makefile
@@ -193,10 +193,12 @@ utils/probes.o: utils/probes.d $(SUBDIROBJS)
 
 ##########################################################################
 
+# Be sure that these files get removed by the maintainer-clean target
 distprep:
 	$(MAKE) -C parser	gram.c gram.h scan.c
 	$(MAKE) -C bootstrap	bootparse.c bootscanner.c
 	$(MAKE) -C catalog	schemapg.h postgres.bki postgres.description postgres.shdescription
+	$(MAKE) -C replication	repl_gram.c repl_scanner.c
 	$(MAKE) -C utils	fmgrtab.c fmgroids.h errcodes.h
 	$(MAKE) -C utils/misc	guc-file.c
 
@@ -300,12 +302,14 @@ maintainer-clean: distclean
 	rm -f bootstrap/bootparse.c \
 	      bootstrap/bootscanner.c \
 	      parser/gram.c \
-	      parser/scan.c \
 	      parser/gram.h \
+	      parser/scan.c \
 	      catalog/schemapg.h \
 	      catalog/postgres.bki \
 	      catalog/postgres.description \
 	      catalog/postgres.shdescription \
+	      replication/repl_gram.c \
+	      replication/repl_scanner.c \
 	      utils/fmgroids.h \
 	      utils/fmgrtab.c \
 	      utils/errcodes.h \
diff --git a/src/test/isolation/Makefile b/src/test/isolation/Makefile
index 82ce248a07..0f709a1e3c 100644
--- a/src/test/isolation/Makefile
+++ b/src/test/isolation/Makefile
@@ -29,7 +29,7 @@ all: isolationtester pg_isolation_regress
 isolationtester: $(OBJS) | submake-libpq submake-libpgport
 	$(CC) $(CFLAGS) $(OBJS) $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
 
-distprep: specparse.c
+distprep: specparse.c specscanner.c
 
 # There is no correct way to write a rule that generates two files.
 # Rules with two targets don't have that meaning, they are merely
@@ -58,7 +58,9 @@ ifdef FLEX
 else
 	@$(missing) flex $< $@
 endif
-# specparse.c is in the distribution tarball, so is not cleaned here
+
+# specparse.c and specscanner.c are in the distribution tarball,
+# so do not clean them here
 clean distclean:
 	rm -f isolationtester$(X) pg_isolation_regress$(X) $(OBJS) isolation_main.o
 	rm -f pg_regress.o