When I define a custom function in a Makefile, like this
define add_target
${1}: ${2} ${3}
endef
How can I get a list of all arguments, that have been provided to $(call add_target, ...)
?
So:
$(call add_target, A, B)
will be expanded to A: B
$(call add_target, A, B, C, D)
will be expanded to A: B C D
GNU manual only says that
When make expands this function, it assigns each param to temporary variables $(1), $(2), etc. The variable $(0) will contain variable. There is no maximum number of parameter arguments.
but nothing about how to get all params.
There is no way, except by writing out $1 $2 $3 $4 $5 $6 ...
Of course no matter how many variables you enumerate the caller could have used more.
However, in your example the simplest thing to do is just pass two arguments: the target name and the prerequisite list (as a single argument). So it would be:
define add_target
${1}: ${2}
endef
... $(call add_target, A, B)
... $(call add_target, A, B C D)
(no commas separating the prerequisites in the list)