Increase minimum supported GNU make version to 3.81.

We've long held the minimum at 3.80, but that's required more than
one workaround.  Commit 0f39b70a6 broke it again, because it turns
out that exporting a target-specific variable didn't work in 3.80.
Considering that 3.81 is now old enough to get a driver's license,
and that the only remaining buildfarm member testing 3.80 (prairiedog)
is likely to be retired soon, let's just stop supporting 3.80.

Adjust docs and Makefile.global's minimum-version check to match.
There are a couple of comments in the Makefiles suggesting that
random things could be done differently after we desupport 3.80,
but I couldn't get excited about changing any of them right now.

Back-patch to v15, as 0f39b70a6 was.

Discussion: https://postgr.es/m/20220720172321.GL12702@telsasoft.com
This commit is contained in:
Tom Lane 2022-07-23 12:12:42 -04:00
parent 634a89c708
commit 8efefa7487
2 changed files with 7 additions and 8 deletions

View File

@ -77,7 +77,7 @@ su - postgres
<primary>make</primary>
</indexterm>
<acronym>GNU</acronym> <application>make</application> version 3.80 or newer is required; other
<acronym>GNU</acronym> <application>make</application> version 3.81 or newer is required; other
<application>make</application> programs or older <acronym>GNU</acronym> <application>make</application> versions will <emphasis>not</emphasis> work.
(<acronym>GNU</acronym> <application>make</application> is sometimes installed under
the name <filename>gmake</filename>.) To test for <acronym>GNU</acronym>

View File

@ -635,7 +635,6 @@ submake-libpgfeutils: | submake-generated-headers
ifneq ($(USE_MODULE_DB),)
PL_TESTDB = pl_regression_$(NAME)
# Replace this with $(or ...) if we ever require GNU make 3.81.
ifneq ($(MODULE_big),)
CONTRIB_TESTDB=contrib_regression_$(MODULE_big)
ISOLATION_TESTDB=isolation_regression_$(MODULE_big)
@ -872,11 +871,11 @@ install-strip:
# allows parallel make across directories and lets make -k and -q work
# correctly.
# We need the $(eval) function and order-only prerequisites, which are
# available in GNU make 3.80. That also happens to be the version
# where the .VARIABLES variable was introduced, so this is a simple check.
ifndef .VARIABLES
$(error GNU make 3.80 or newer is required. You are using version $(MAKE_VERSION))
# We need the ability to export target-specific variables, which was
# added in GNU make 3.81. That also happens to be the version
# where the .FEATURES variable was introduced, so this is a simple check.
ifndef .FEATURES
$(error GNU make 3.81 or newer is required. You are using version $(MAKE_VERSION))
endif
# This function is only for internal use below. It should be called
@ -884,7 +883,7 @@ endif
# 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
# this function was written to not use any complicated constructs (like
# multiple targets on a line) and also not contain any lines that expand
# to more than about 200 bytes. This is why we make it apply to just one
# subdirectory at a time, rather than to a list of subdirectories.