Don't add a target to its own also_make list * src/dep.h (copy_dep): Make a copy of one struct dep. * src/misc.c (copy_dep): Implement the new function. (copy_dep_chain): Call copy_dep() for each dep in the chain. * src/read.c (record_files): Write our own copy loop and omit the current file from its own also_make list. Since we don't keep the function's also_make, free it.