Make(1) bug in SVR2
Kent Forschmiedt
kent at happym.UUCP
Sat Oct 29 06:33:15 AEST 1988
Make did a very evil thing. I had created a circular dependency in my
makefile, and was using make -d to find it. A condensed version,
showing my mistake, follows.
There are about 35 object files in the library that it was building.
There is an odd rule for one of the objects, because part of its source
is generated by another program. I had accidentally made the program
dependent on the library, thus creating the circle.
In the context of the example below, $(LIB)(file1.o) was not up to date
realtive to s.file1.c, and $(LIB)(file2.o) was up to date.
I was watching it go, using ^S/^Q to stop and start it, until I found
the problem, then hit ^C (DEL, for purists) to stop it. I couldn't see
what it was doing when I did that, since ^C flushes the tty output
buffer.
It said "*** s.file2.c removed ***" !!!
And it was true!
LIBOBJ = $(LIB)(file1.o) $(LIB)(file2.o)
# file1.c #includes x.i
$(LIB)(file1.o): file1.c funnycmd
funnycmd >x.i
$(CC) -c $(CFLAGS) file1.c
ar rv $(LIB) file1.o
rm -f file1.o
funnycmd: $(LIB)
.c.a:
$(LINT) $(LINTFLAGS) -u -lm -Ldb -c $<
$(CC) $(CFLAGS) -c $<
ar rv $@ $*.o
rm -f $*.o
.c~.a:
$(GET) $(GFLAGS) -p $< > $*.c
$(LINT) $(LINTFLAGS) -u -lm -Ldb -c $*.c
$(CC) -c $(CFLAGS) $*.c
ar rv $@ $*.o
rm -f $*.[co]
--
kent at happym.UUCP, tikal!camco!happym!kent, Happy Man Corp. USA 206-282-9598
More information about the Comp.bugs.sys5
mailing list