Event though the bug with make 4.3 has been reported and fixed, there has not been a release of make with the fix for a long time, see [1]. As the root cause seems the 'filter' command cannot handle large chunks of data, like .VARIABLES, we can workaround the problem by using a foreach command over .VARIABLES, then use the filter command. It might not be logical to program it that way, but at least the functionality is now usable. [1] https://savannah.gnu.org/bugs/?59093#comment10 Signed-off-by: Henri Roosen --- Makefile | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index bf101ff770..a856f69685 100644 --- a/Makefile +++ b/Makefile @@ -1056,23 +1056,16 @@ ifeq ($(NEED_WRAPPER),y) $(Q)$(TOPDIR)/support/scripts/mkmakefile $(TOPDIR) $(O) 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 # Makefiles. Alternatively, if a non-empty VARS variable is passed, # only the variables matching the make pattern passed in VARS are # displayed. # show-vars does the same, but as a JSON dictionnary. .PHONY: printvars -printvars: check-make-version +printvars: @: $(foreach V, \ - $(sort $(filter $(VARS),$(.VARIABLES))), \ + $(sort $(foreach X, $(.VARIABLES), $(filter $(VARS),$(X)))), \ $(if $(filter-out environment% default automatic, \ $(origin $V)), \ $(if $(QUOTED_VARS),\ @@ -1082,11 +1075,11 @@ printvars: check-make-version .PHONY: show-vars show-vars: VARS?=% -show-vars: check-make-version +show-vars: @: $(info $(call clean-json, { \ $(foreach V, \ - $(sort $(filter $(VARS),$(.VARIABLES))), \ + $(sort $(foreach X, $(.VARIABLES), $(filter $(VARS),$(X)))), \ $(if $(filter-out environment% default automatic, $(origin $V)), \ "$V": { \ "expanded": $(call mk-json-str,$($V))$(comma) \ -- 2.30.2