Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 3b474a2

Browse files
committed
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 0f39b70 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 0f39b70 was. Discussion: https://postgr.es/m/20220720172321.GL12702@telsasoft.com
1 parent 1846202 commit 3b474a2

File tree

2 files changed

+7
-8
lines changed

2 files changed

+7
-8
lines changed

doc/src/sgml/installation.sgml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ su - postgres
7777
<primary>make</primary>
7878
</indexterm>
7979

80-
<acronym>GNU</acronym> <application>make</application> version 3.80 or newer is required; other
80+
<acronym>GNU</acronym> <application>make</application> version 3.81 or newer is required; other
8181
<application>make</application> programs or older <acronym>GNU</acronym> <application>make</application> versions will <emphasis>not</emphasis> work.
8282
(<acronym>GNU</acronym> <application>make</application> is sometimes installed under
8383
the name <filename>gmake</filename>.) To test for <acronym>GNU</acronym>

src/Makefile.global.in

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -633,7 +633,6 @@ submake-libpgfeutils: | submake-generated-headers
633633

634634
ifneq ($(USE_MODULE_DB),)
635635
PL_TESTDB = pl_regression_$(NAME)
636-
# Replace this with $(or ...) if we ever require GNU make 3.81.
637636
ifneq ($(MODULE_big),)
638637
CONTRIB_TESTDB=contrib_regression_$(MODULE_big)
639638
ISOLATION_TESTDB=isolation_regression_$(MODULE_big)
@@ -870,19 +869,19 @@ install-strip:
870869
# allows parallel make across directories and lets make -k and -q work
871870
# correctly.
872871

873-
# We need the $(eval) function and order-only prerequisites, which are
874-
# available in GNU make 3.80. That also happens to be the version
875-
# where the .VARIABLES variable was introduced, so this is a simple check.
876-
ifndef .VARIABLES
877-
$(error GNU make 3.80 or newer is required. You are using version $(MAKE_VERSION))
872+
# We need the ability to export target-specific variables, which was
873+
# added in GNU make 3.81. That also happens to be the version
874+
# where the .FEATURES variable was introduced, so this is a simple check.
875+
ifndef .FEATURES
876+
$(error GNU make 3.81 or newer is required. You are using version $(MAKE_VERSION))
878877
endif
879878

880879
# This function is only for internal use below. It should be called
881880
# using $(eval). It will set up a target so that it recurses into a
882881
# given subdirectory. For the tree-wide all/install/check/installcheck cases,
883882
# ensure we do our one-time tasks before recursing (see targets above).
884883
# Note that to avoid a nasty bug in make 3.80,
885-
# this function has to avoid using any complicated constructs (like
884+
# this function was written to not use any complicated constructs (like
886885
# multiple targets on a line) and also not contain any lines that expand
887886
# to more than about 200 bytes. This is why we make it apply to just one
888887
# subdirectory at a time, rather than to a list of subdirectories.

0 commit comments

Comments
 (0)