Makefile: disable 'printvars' and 'show-vars' recipes for Make 4.3

Make 4.3 is buggy and leads to a "Segmentation fault (core dumped)" when
calling 'make printvars' or 'make show-vars', so let's refuse to execute
those recipes if Make 4.3 by adding 'check-make-version' recipe as
depedendency of 'printvars' and 'show-vars' as suggested by Yann E. Morin.

Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
This commit is contained in:
Giulio Benetti 2022-01-01 22:40:34 +01:00 committed by Arnout Vandecappelle (Essensium/Mind)
parent 63b1ebe94d
commit 25cec5ea73

View File

@ -1058,13 +1058,20 @@ ifeq ($(NEED_WRAPPER),y)
$(Q)$(TOPDIR)/support/scripts/mkmakefile $(TOPDIR) $(O) $(Q)$(TOPDIR)/support/scripts/mkmakefile $(TOPDIR) $(O)
endif endif
.PHONY: check-make-version
check-make-version:
ifneq ($(filter $(RUNNING_MAKE_VERSION),4.3),)
@echo "Make 4.3 doesn't support 'printvars' and 'show-vars' recipes"
@exit 1
endif
# printvars prints all the variables currently defined in our # printvars prints all the variables currently defined in our
# Makefiles. Alternatively, if a non-empty VARS variable is passed, # Makefiles. Alternatively, if a non-empty VARS variable is passed,
# only the variables matching the make pattern passed in VARS are # only the variables matching the make pattern passed in VARS are
# displayed. # displayed.
# show-vars does the same, but as a JSON dictionnary. # show-vars does the same, but as a JSON dictionnary.
.PHONY: printvars .PHONY: printvars
printvars: printvars: check-make-version
@: @:
$(foreach V, \ $(foreach V, \
$(sort $(filter $(VARS),$(.VARIABLES))), \ $(sort $(filter $(VARS),$(.VARIABLES))), \
@ -1077,7 +1084,7 @@ printvars:
.PHONY: show-vars .PHONY: show-vars
show-vars: VARS?=% show-vars: VARS?=%
show-vars: show-vars: check-make-version
@: @:
$(info $(call clean-json, { \ $(info $(call clean-json, { \
$(foreach V, \ $(foreach V, \