SUPPORTED_COMMANDS := list
SUPPORTS_MAKE_ARGS := $(findstring $(firstword $(MAKECMDGOALS)), $(SUPPORTED_COMMANDS))
ifneq "$(SUPPORTS_MAKE_ARGS)" ""
  COMMAND_ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS))
  $(eval $(COMMAND_ARGS):;@:)
endif

list:
  ls $(COMMAND_ARGS)

En détail

SUPPORTED_COMMANDS := list

Liste des commandes makefile auxquels on veut passer des parametres séparé par un espace.

SUPPORTS_MAKE_ARGS := $(findstring $(firstword $(MAKECMDGOALS)), $(SUPPORTED_COMMANDS))

MAKECMDGOALS contient la liste des paramètres (les goals) passés après la commande make. Provide any goals given on the command line in the variable MAKECMDGOALS.

firstword retourne le premier mot de la chaine donnée en paramètre. https://www.gnu.org/software/make/manual/make.html#index-firstword

findstring $(findstring find,in) recherche la valeur find dans la chaine in. Ici cherche la valeur de $(firstword $(MAKECMDGOALS)) dans $(SUPPORTED_COMMANDS).

words compte le nombre de mots.

wordlist permet de truncate la chaine passer en parametre https://www.gnu.org/software/make/manual/make.html#index-wordlist