mirror of
https://github.com/postgres/postgres.git
synced 2025-09-02 04:21:28 +03:00
In the wake of commitsdac048f71
andecaf7c5df
, `make headerscheck` no longer generated all headers that are included by other headers, causing headerscheck/cpluspluscheck to fail. To fix, backpatch enough makefile rules from721856ff2
to generate all required headers. Reported by Marina Polyakova Backpatch to version 16 only, as the issue is not present on master Discussion: https://postgr.es/m/231ea1127719b2b3d6d1c05f75808981%40postgrespro.ru
117 lines
3.7 KiB
Makefile
117 lines
3.7 KiB
Makefile
#-------------------------------------------------------------------------
|
|
#
|
|
# Makefile for backend/utils
|
|
#
|
|
# Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
# Portions Copyright (c) 1994, Regents of the University of California
|
|
#
|
|
# src/backend/utils/Makefile
|
|
#
|
|
#-------------------------------------------------------------------------
|
|
|
|
subdir = src/backend/utils
|
|
top_builddir = ../../..
|
|
include $(top_builddir)/src/Makefile.global
|
|
|
|
OBJS = fmgrtab.o
|
|
SUBDIRS = \
|
|
activity \
|
|
adt \
|
|
cache \
|
|
error \
|
|
fmgr \
|
|
hash \
|
|
init \
|
|
mb \
|
|
misc \
|
|
mmgr \
|
|
resowner \
|
|
sort \
|
|
time
|
|
|
|
# location of Catalog.pm
|
|
catalogdir = $(top_srcdir)/src/backend/catalog
|
|
|
|
include $(top_srcdir)/src/backend/common.mk
|
|
|
|
all: distprep probes.h generated-header-symlinks
|
|
|
|
distprep: fmgr-stamp errcodes.h
|
|
|
|
.PHONY: generated-header-symlinks submake-adt-headers
|
|
|
|
generated-header-symlinks: $(top_builddir)/src/include/utils/header-stamp $(top_builddir)/src/include/utils/probes.h submake-adt-headers
|
|
|
|
submake-adt-headers:
|
|
$(MAKE) -C adt jsonpath_gram.h
|
|
|
|
$(SUBDIRS:%=%-recursive): fmgr-stamp errcodes.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 $(top_srcdir)/src/include/catalog/pg_proc.dat
|
|
$(PERL) -I $(catalogdir) $< --include-path=$(top_srcdir)/src/include/ $(top_srcdir)/src/include/catalog/pg_proc.dat
|
|
touch $@
|
|
|
|
errcodes.h: $(top_srcdir)/src/backend/utils/errcodes.txt generate-errcodes.pl
|
|
$(PERL) $(srcdir)/generate-errcodes.pl --outfile $@ $<
|
|
|
|
ifeq ($(enable_dtrace), yes)
|
|
probes.h: postprocess_dtrace.sed probes.h.tmp
|
|
sed -f $^ >$@
|
|
rm probes.h.tmp
|
|
|
|
probes.h.tmp: probes.d
|
|
$(DTRACE) -C -h -s $< -o $@
|
|
else
|
|
probes.h: Gen_dummy_probes.sed probes.d
|
|
sed -f $^ >$@
|
|
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" .
|
|
|
|
# Recipe for rebuilding the Perl version of Gen_dummy_probes
|
|
# Nothing depends on it, so it will never be called unless explicitly requested
|
|
# The last two lines of the recipe format the script according to our
|
|
# standard and put back some blank lines for improved readability.
|
|
Gen_dummy_probes.pl: Gen_dummy_probes.sed Gen_dummy_probes.pl.prolog
|
|
cp $(srcdir)/Gen_dummy_probes.pl.prolog $@
|
|
s2p -f $< | sed -e 1,3d -e '/# #/ d' -e '$$d' >> $@
|
|
perltidy --profile=$(srcdir)/../../tools/pgindent/perltidyrc $@
|
|
perl -pi -e '!$$lb && ( /^\t+#/ || /^# prototypes/ ) && print qq{\n};'\
|
|
-e '$$lb = m/^\n/; ' $@
|
|
|
|
.PHONY: install-data
|
|
install-data: errcodes.txt installdirs
|
|
$(INSTALL_DATA) $(srcdir)/errcodes.txt '$(DESTDIR)$(datadir)/errcodes.txt'
|
|
|
|
installdirs:
|
|
$(MKDIR_P) '$(DESTDIR)$(datadir)'
|
|
|
|
.PHONY: uninstall-data
|
|
uninstall-data:
|
|
rm -f $(addprefix '$(DESTDIR)$(datadir)'/, errcodes.txt)
|
|
|
|
# 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 probes.h.tmp
|
|
|
|
maintainer-clean: clean
|
|
rm -f fmgroids.h fmgrprotos.h fmgrtab.c fmgr-stamp errcodes.h
|