make(1) guru question
Jens Schweikhardt
schweikh at schweikhardt.net
Tue Apr 6 11:27:45 PDT 2004
Fellow hackers,
suppose you have a long list of files in a make variable V, exceeding
kern.argmax. This means there is no way you can write a rule where $(V)
is a command argument in any way shape or form. There is also no way to
pass the value of V to xargs that I know of. For example with this
Makefile:
# Make V exceed kern.argmax (64K).
V != jot 12440
all:
@ echo $(V)
This fails with
echo:Argument list too long
*** Error code 1
Furthermore the workaround of creating a process for each file in V with
V != jot 12440
all:
.for v in $(V)
@ echo $(v)
.endfor
is not acceptable because it creates too much overhead for process
creation (think of echo being an expensive command.) Question: is there
any other way (short of increasing kern.argmax) to maybe divide and
conquer the V contents by use of substitution magic? I'm thinking of
something along repeatedly cramming N items in some variable and then
calling echo less often.
The original problem can be found in
http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/52765
Regards,
Jens
--
Jens Schweikhardt http://www.schweikhardt.net/
SIGSIG -- signature too long (core dumped)
More information about the freebsd-hackers
mailing list