Probablemente no deberías hacer esto; estás rompiendo el patrón básico de cómo funciona Make. Pero aqui esta:
action:
@echo action $(filter-out $@,$(MAKECMDGOALS))
%: # thanks to chakrit
@: # thanks to William Pursell
EDITAR:
Para explicar el primer comando,
$(MAKECMDGOALS)
es la lista de "objetivos" detallada en la línea de comando, por ejemplo, "acción valor1 valor2".
$@
es una variable automática para el nombre del destino de la regla, en este caso "acción".
filter-out
es una función que elimina algunos elementos de una lista. Entonces $(filter-out bar, foo bar baz)
regresa foo baz
(puede ser más sutil, pero no necesitamos sutileza aquí).
Ponlos juntos y $(filter-out $@,$(MAKECMDGOALS))
devuelve la lista de objetivos especificados en la línea de comando que no sean "acción", que podría ser "valor1 valor2".