summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane2022-07-23 16:12:42 +0000
committerTom Lane2022-07-23 16:12:42 +0000
commit8efefa748777baf6a61a0e5ec3858a2b90fd8e84 (patch)
tree4da7dbcec23b2d7390b123974ae632feaf9d7ef3
parent634a89c7082538e9521a97e5e92126090b68645c (diff)
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
-rw-r--r--doc/src/sgml/installation.sgml2
-rw-r--r--src/Makefile.global.in13
2 files changed, 7 insertions, 8 deletions
diff --git a/doc/src/sgml/installation.sgml b/doc/src/sgml/installation.sgml
index 32e0d3fd9d3..70d188e2bc4 100644
--- a/doc/src/sgml/installation.sgml
+++ b/doc/src/sgml/installation.sgml
@@ -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>
diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index bb177a81622..14fdd4ef7b1 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
@@ -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.