wsd@CS.BROWN.EDU (09/30/89)
We in the Graphics Group at Brown have adopted GNUmake as part of our
software standards. In doing so, we made a few changes that others
might find useful:
1) . allowed in vpath (why was this explicitly excluded?)
just remove the lines
if (len == 1 && *v == '.')
continue;
from construct_vpath_list() in vpath.c. This is useful in conjunction
with vpsearch.
2) vpsearch function
This takes a bunch of filenames, finds them in the vpath, then
attaches the directory where each was found to each file. So, if
VPATH is ../include:. and ../include contains foo and . contains bar,
then $(vpsearch foo bar) returns "../include/foo ./bar". An example
of its use is:
wc:
wc $(vpsearch $(src))
here's the code (for expand_function() in function.c):
case function_vpsearch:
text = expand_argument(text, end);
i = strlen(text);
p3 = text;
while (p = find_next_token(&p3, NULL)) {
p2 = p;
if (vpath_search(&p2)) {
o = variable_buffer_output(o, p2, strlen(p2));
o = variable_buffer_output(o, " ", 1);
doneany = 1;
}
else error("vpsearch couldn't find file %s", p);
}
if (doneany) --o;
free(p2);
free(text);
break;
These contributions are from Paul Strauss, Mike Natkin, and Scott
Draves.