aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/Makefile49
-rw-r--r--src/backend/catalog/Makefile5
-rw-r--r--src/backend/utils/.gitignore1
-rw-r--r--src/backend/utils/Makefile44
-rw-r--r--src/include/Makefile2
-rw-r--r--src/include/utils/.gitignore1
6 files changed, 48 insertions, 54 deletions
diff --git a/src/backend/Makefile b/src/backend/Makefile
index 1aaf1ec2f59..25af514fba5 100644
--- a/src/backend/Makefile
+++ b/src/backend/Makefile
@@ -53,7 +53,7 @@ endif
##########################################################################
-all: submake-libpgport submake-catalog-headers postgres $(POSTGRES_IMP)
+all: submake-libpgport submake-catalog-headers submake-utils-headers postgres $(POSTGRES_IMP)
ifneq ($(PORTNAME), cygwin)
ifneq ($(PORTNAME), win32)
@@ -136,24 +136,15 @@ parser/gram.h: parser/gram.y
storage/lmgr/lwlocknames.h: storage/lmgr/generate-lwlocknames.pl storage/lmgr/lwlocknames.txt
$(MAKE) -C storage/lmgr lwlocknames.h lwlocknames.c
-utils/errcodes.h: utils/generate-errcodes.pl utils/errcodes.txt
- $(MAKE) -C utils errcodes.h
-
-# see notes in src/backend/parser/Makefile
-utils/fmgrprotos.h: utils/fmgroids.h
- touch $@
-
-utils/fmgroids.h: utils/Gen_fmgrtab.pl catalog/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.dat $(top_srcdir)/src/include/access/transam.h
- $(MAKE) -C utils fmgroids.h fmgrprotos.h
-
-utils/probes.h: utils/probes.d
- $(MAKE) -C utils probes.h
-
# run this unconditionally to avoid needing to know its dependencies here:
submake-catalog-headers:
$(MAKE) -C catalog distprep generated-header-symlinks
-.PHONY: submake-catalog-headers
+# run this unconditionally to avoid needing to know its dependencies here:
+submake-utils-headers:
+ $(MAKE) -C utils distprep generated-header-symlinks
+
+.PHONY: submake-catalog-headers submake-utils-headers
# Make symlinks for these headers in the include directory. That way
# we can cut down on the -I options. Also, a symlink is automatically
@@ -168,7 +159,7 @@ submake-catalog-headers:
.PHONY: generated-headers
-generated-headers: $(top_builddir)/src/include/parser/gram.h $(top_builddir)/src/include/storage/lwlocknames.h $(top_builddir)/src/include/utils/errcodes.h $(top_builddir)/src/include/utils/fmgroids.h $(top_builddir)/src/include/utils/fmgrprotos.h $(top_builddir)/src/include/utils/probes.h submake-catalog-headers
+generated-headers: $(top_builddir)/src/include/parser/gram.h $(top_builddir)/src/include/storage/lwlocknames.h submake-catalog-headers submake-utils-headers
$(top_builddir)/src/include/parser/gram.h: parser/gram.h
prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \
@@ -180,25 +171,6 @@ $(top_builddir)/src/include/storage/lwlocknames.h: storage/lmgr/lwlocknames.h
cd '$(dir $@)' && rm -f $(notdir $@) && \
$(LN_S) "$$prereqdir/$(notdir $<)" .
-$(top_builddir)/src/include/utils/errcodes.h: utils/errcodes.h
- prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \
- cd '$(dir $@)' && rm -f $(notdir $@) && \
- $(LN_S) "$$prereqdir/$(notdir $<)" .
-
-$(top_builddir)/src/include/utils/fmgroids.h: utils/fmgroids.h
- prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \
- cd '$(dir $@)' && rm -f $(notdir $@) && \
- $(LN_S) "$$prereqdir/$(notdir $<)" .
-
-$(top_builddir)/src/include/utils/fmgrprotos.h: utils/fmgrprotos.h
- prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \
- cd '$(dir $@)' && rm -f $(notdir $@) && \
- $(LN_S) "$$prereqdir/$(notdir $<)" .
-
-$(top_builddir)/src/include/utils/probes.h: utils/probes.h
- cd '$(dir $@)' && rm -f $(notdir $@) && \
- $(LN_S) "../../../$(subdir)/utils/probes.h" .
-
utils/probes.o: utils/probes.d $(SUBDIROBJS)
$(DTRACE) $(DTRACEFLAGS) -C -G -s $(call expand_subsys,$^) -o $@
@@ -213,7 +185,7 @@ distprep:
$(MAKE) -C catalog distprep
$(MAKE) -C replication repl_gram.c repl_scanner.c syncrep_gram.c syncrep_scanner.c
$(MAKE) -C storage/lmgr lwlocknames.h lwlocknames.c
- $(MAKE) -C utils fmgrtab.c fmgroids.h fmgrprotos.h errcodes.h
+ $(MAKE) -C utils distprep
$(MAKE) -C utils/misc guc-file.c
$(MAKE) -C utils/sort qsort_tuple.c
@@ -325,6 +297,7 @@ distclean: clean
maintainer-clean: distclean
$(MAKE) -C catalog $@
+ $(MAKE) -C utils $@
rm -f bootstrap/bootparse.c \
bootstrap/bootscanner.c \
parser/gram.c \
@@ -336,10 +309,6 @@ maintainer-clean: distclean
replication/syncrep_scanner.c \
storage/lmgr/lwlocknames.c \
storage/lmgr/lwlocknames.h \
- utils/fmgroids.h \
- utils/fmgrprotos.h \
- utils/fmgrtab.c \
- utils/errcodes.h \
utils/misc/guc-file.c \
utils/sort/qsort_tuple.c
diff --git a/src/backend/catalog/Makefile b/src/backend/catalog/Makefile
index a54197da517..0865240f11f 100644
--- a/src/backend/catalog/Makefile
+++ b/src/backend/catalog/Makefile
@@ -79,8 +79,11 @@ distprep: bki-stamp
generated-header-symlinks: $(top_builddir)/src/include/catalog/header-stamp
+# bki-stamp records the last time we ran genbki.pl. We don't rely on
+# the timestamps of the individual output files, because the Perl script
+# won't update them if they didn't change (to avoid unnecessary recompiles).
# Technically, this should depend on Makefile.global which supplies
-# $(MAJORVERSION); but then postgres.bki would need to be rebuilt after every
+# $(MAJORVERSION); but then genbki.pl would need to be re-run after every
# configure run, even in distribution tarballs. So depending on configure.in
# instead is cheating a bit, but it will achieve the goal of updating the
# version number when it changes.
diff --git a/src/backend/utils/.gitignore b/src/backend/utils/.gitignore
index f26215c6315..06855569594 100644
--- a/src/backend/utils/.gitignore
+++ b/src/backend/utils/.gitignore
@@ -1,5 +1,6 @@
/fmgrtab.c
/fmgroids.h
/fmgrprotos.h
+/fmgr-stamp
/probes.h
/errcodes.h
diff --git a/src/backend/utils/Makefile b/src/backend/utils/Makefile
index 343637af858..966e3bc2ed3 100644
--- a/src/backend/utils/Makefile
+++ b/src/backend/utils/Makefile
@@ -21,23 +21,26 @@ catalogdir = $(top_srcdir)/src/backend/catalog
include $(top_srcdir)/src/backend/common.mk
-all: errcodes.h fmgroids.h fmgrprotos.h probes.h
+all: distprep probes.h generated-header-symlinks
-$(SUBDIRS:%=%-recursive): fmgroids.h fmgrprotos.h
+distprep: fmgr-stamp errcodes.h
+
+.PHONY: generated-header-symlinks
+
+generated-header-symlinks: $(top_builddir)/src/include/utils/header-stamp $(top_builddir)/src/include/utils/probes.h
+
+$(SUBDIRS:%=%-recursive): fmgr-stamp errcodes.h
FMGR_DATA := $(addprefix $(top_srcdir)/src/include/catalog/,\
pg_language.dat pg_proc.dat \
)
-# see notes in src/backend/parser/Makefile
-fmgrprotos.h: fmgroids.h
- touch $@
-
-fmgroids.h: fmgrtab.c
- touch $@
-
-fmgrtab.c: Gen_fmgrtab.pl $(catalogdir)/Catalog.pm $(FMGR_DATA) $(top_srcdir)/src/include/access/transam.h
+# fmgr-stamp records the last time we ran Gen_fmgrtab.pl. We don't rely on
+# the timestamps of the individual output files, because the Perl script
+# won't update them if they didn't change (to avoid unnecessary recompiles).
+fmgr-stamp: Gen_fmgrtab.pl $(catalogdir)/Catalog.pm $(FMGR_DATA) $(top_srcdir)/src/include/access/transam.h
$(PERL) -I $(catalogdir) $< -I $(top_srcdir)/src/include/ $(FMGR_DATA)
+ touch $@
errcodes.h: $(top_srcdir)/src/backend/utils/errcodes.txt generate-errcodes.pl
$(PERL) $(srcdir)/generate-errcodes.pl $< > $@
@@ -55,6 +58,23 @@ else
sed -f $(srcdir)/Gen_dummy_probes.sed $< >$@
endif
+# These generated headers must be symlinked into builddir/src/include/,
+# using absolute links for the reasons explained in src/backend/Makefile.
+# We use header-stamp to record that we've done this because the symlinks
+# themselves may appear older than fmgr-stamp.
+$(top_builddir)/src/include/utils/header-stamp: fmgr-stamp errcodes.h
+ prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \
+ cd '$(dir $@)' && for file in fmgroids.h fmgrprotos.h errcodes.h; do \
+ rm -f $$file && $(LN_S) "$$prereqdir/$$file" . ; \
+ done
+ touch $@
+
+# probes.h is handled differently because it's not in the distribution tarball.
+$(top_builddir)/src/include/utils/probes.h: probes.h
+ cd '$(dir $@)' && rm -f $(notdir $@) && \
+ $(LN_S) "../../../$(subdir)/probes.h" .
+
+
.PHONY: install-data
install-data: errcodes.txt installdirs
$(INSTALL_DATA) $(srcdir)/errcodes.txt '$(DESTDIR)$(datadir)/errcodes.txt'
@@ -66,10 +86,10 @@ installdirs:
uninstall-data:
rm -f $(addprefix '$(DESTDIR)$(datadir)'/, errcodes.txt)
-# fmgroids.h, fmgrprotos.h, fmgrtab.c and errcodes.h are in the
+# fmgroids.h, fmgrprotos.h, fmgrtab.c, fmgr-stamp, and errcodes.h are in the
# distribution tarball, so they are not cleaned here.
clean:
rm -f probes.h
maintainer-clean: clean
- rm -f fmgroids.h fmgrprotos.h fmgrtab.c errcodes.h
+ rm -f fmgroids.h fmgrprotos.h fmgrtab.c fmgr-stamp errcodes.h
diff --git a/src/include/Makefile b/src/include/Makefile
index ba4b5f27fc6..901eddbd448 100644
--- a/src/include/Makefile
+++ b/src/include/Makefile
@@ -77,7 +77,7 @@ uninstall:
clean:
- rm -f utils/fmgroids.h utils/fmgrprotos.h utils/errcodes.h
+ rm -f utils/fmgroids.h utils/fmgrprotos.h utils/errcodes.h utils/header-stamp
rm -f parser/gram.h storage/lwlocknames.h utils/probes.h
rm -f catalog/schemapg.h catalog/pg_*_d.h catalog/header-stamp
diff --git a/src/include/utils/.gitignore b/src/include/utils/.gitignore
index 25db658da51..05cfa7a8d6c 100644
--- a/src/include/utils/.gitignore
+++ b/src/include/utils/.gitignore
@@ -2,3 +2,4 @@
/fmgrprotos.h
/probes.h
/errcodes.h
+/header-stamp