Ensure we build generated headers at the start of some more cases.

"make installcheck" and some related cases, when invoked from the toplevel
directory, start out by doing "make all" in src/test/regress.  Since that's
one make recursion level down, the submake-generated-headers target will
do nothing, causing us to fail to create/update generated headers before
building pg_regress.  This is, I believe, a new failure mode induced by
commit 3b8f6e75f, so let's fix it.  To do so, we have to invoke
submake-generated-headers at the top level.

Discussion: https://postgr.es/m/0401efec-68f1-679d-3ea3-21d4e8dd11af@gmail.com
This commit is contained in:
Tom Lane 2018-07-30 18:04:39 -04:00
parent 4f10e7ea7b
commit 7dc5a96aa2
2 changed files with 8 additions and 8 deletions

View File

@ -63,7 +63,7 @@ distclean maintainer-clean:
@rm -rf autom4te.cache/
rm -f config.cache config.log config.status GNUmakefile
check check-tests installcheck installcheck-parallel installcheck-tests:
check check-tests installcheck installcheck-parallel installcheck-tests: submake-generated-headers
$(MAKE) -C src/test/regress $@
$(call recurse,check-world,src/test src/pl src/interfaces/ecpg contrib src/bin,check)

View File

@ -355,11 +355,11 @@ BZIP2 = bzip2
# available before building, but we don't want parallel makes all trying
# to build the same headers. These rules, together with the recursion rules
# below, ensure that we update the generated headers once, if needed,
# at the top level of any "make all/install/check" request. If a particular
# subdirectory knows this isn't needed in itself or its children, it can set
# NO_GENERATED_HEADERS.
# at the top level of any "make all/install/check/installcheck" request.
# If a particular subdirectory knows this isn't needed in itself or its
# children, it can set NO_GENERATED_HEADERS.
all install check: submake-generated-headers
all install check installcheck: submake-generated-headers
.PHONY: submake-generated-headers
@ -806,8 +806,8 @@ $(error GNU make 3.80 or newer is required. You are using version $(MAKE_VERSIO
endif
# This function is only for internal use below. It should be called
# using $(eval). It will set up a target so that it recurses into
# a given subdirectory. For the tree-wide all/install/check cases,
# using $(eval). It will set up a target so that it recurses into a
# given subdirectory. For the tree-wide all/install/check/installcheck cases,
# ensure we do our one-time tasks before recursing (see targets above).
# Note that to avoid a nasty bug in make 3.80,
# this function has to avoid using any complicated constructs (like
@ -820,7 +820,7 @@ endif
define _create_recursive_target
.PHONY: $(1)-$(2)-recurse
$(1): $(1)-$(2)-recurse
$(1)-$(2)-recurse: $(if $(filter all install check, $(3)), submake-generated-headers) $(if $(filter check, $(3)), temp-install)
$(1)-$(2)-recurse: $(if $(filter all install check installcheck, $(3)), submake-generated-headers) $(if $(filter check, $(3)), temp-install)
$$(MAKE) -C $(2) $(3)
endef
# Note that the use of $$ on the last line above is important; we want