diff --git a/src/backend/Makefile b/src/backend/Makefile
index 82975f514ab6ce857d1c9c86d9b4f1d5af7351ff..7a0bbb29424d145f3ec5b67a299f7dfcd8d8054d 100644
--- a/src/backend/Makefile
+++ b/src/backend/Makefile
@@ -139,7 +139,10 @@ storage/lmgr/lwlocknames.h: storage/lmgr/generate-lwlocknames.pl storage/lmgr/lw
 utils/errcodes.h: utils/generate-errcodes.pl utils/errcodes.txt
 	$(MAKE) -C utils errcodes.h
 
-utils/fmgroids.h utils/fmgrprotos.h: utils/Gen_fmgrtab.pl catalog/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.h
+# see explanation in parser/Makefile
+utils/fmgrprotos.h: utils/fmgroids.h ;
+
+utils/fmgroids.h: utils/Gen_fmgrtab.pl catalog/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.h
 	$(MAKE) -C utils $(notdir $@)
 
 utils/probes.h: utils/probes.d
diff --git a/src/backend/utils/Makefile b/src/backend/utils/Makefile
index 4fa5ac26f7d42913f50c3af68bb8dfe23b0824f6..2e35ca58cca5d25ef2459fde06a41e5cef0ceb06 100644
--- a/src/backend/utils/Makefile
+++ b/src/backend/utils/Makefile
@@ -21,7 +21,8 @@ all: errcodes.h fmgroids.h fmgrprotos.h probes.h
 $(SUBDIRS:%=%-recursive): fmgroids.h fmgrprotos.h
 
 # see explanation in ../parser/Makefile
-fmgroids.h fmgrprotos.h: fmgrtab.c ;
+fmgrprotos.h: fmgroids.h ;
+fmgroids.h: fmgrtab.c ;
 
 fmgrtab.c: Gen_fmgrtab.pl $(catalogdir)/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.h
 	$(PERL) -I $(catalogdir) $< $(top_srcdir)/src/include/catalog/pg_proc.h