Problem with FreeBSD 10.0-RELEASE change in "make" behavior
Dave Hines
freebsd at dph.fluff.org
Fri Jun 6 17:58:11 UTC 2014
I have a Makefile which builds a library, which used to work using
FreeBSD make but which fails using the default make installed in
FreeBSD 10.0-RELEASE.
It appears that library dependancy line which correctly causes out
of date .o files to be re-created, will not always cause the commands
following it to be executed.
eg. using the following Makefile:
make # This correctly builds the .c, .o & library files
touch x.c # update x.o so the library needs updating
make # This updates x.o, but does not update the library
Is this change in how make works intended ? - and if so how should I
be making a library now ?
Thanks -- Dave Hines.
---------------------- Test Makefile follows ----------------------
# Test Makefile which works with old FreeBSD make, but fails
# with the make installed by default in FreeBSD 10.0-RELEASE
# Demonstrate using "make; touch x.c; make", and note that although
# x.o is updated by the second "make", none of the commands following
# the library dependancy are executed, so the libray itself is not
# updated.
OBJ= x.o y.o
LIB= lib.a
$(LIB): $(LIB)($(OBJ))
ar cru $(.TARGET) $(.OODATE)
$(RANLIB) $(.TARGET)
rm -f $(.OODATE)
$(OBJ:.o=.c):
touch $(.TARGET)
clean:
rm -f $(LIB) $(OBJ) $(OBJ:.o=.c)
More information about the freebsd-questions
mailing list