crunchgen: slap a dependency on the generated makefile for .lo

crunchgen generates a foo.lo for each binary it will end up crunching
into the final product.  While they have a dependency on the libs that
are used to link them, nothing will force relinking if the set of libs
needed to link them is changed.  Because of this, incremental builds may
not be possible if one builds a version of, e.g., rescue/ with a broken
set of libs specified for a project -- a subsequent fix won't be rolled
in cleanly, it will require purging the rescue/ objdir.

This is a bit crude, but the foo.mk we generate doesn't actually get
regenerated all that often in practice, so a spurious relink for the
vast majority of crunched objects won't actually happen all that often.

Reviewed by:	bapt, emaste, imp
Differential Revision:	https://reviews.freebsd.org/D43869
This commit is contained in:
Kyle Evans 2024-03-08 20:01:17 -06:00
parent a650ec0e55
commit 6e2cfb24ee

View file

@ -1114,8 +1114,8 @@ prog_makefile_rules(FILE *outmk, prog_t *p)
"int _crunched_%s_stub(int argc, char **argv, char **envp)"
"{return main(argc,argv,envp);}\" >%s_stub.c\n",
p->ident, p->ident, p->name);
fprintf(outmk, "%s.lo: %s_stub.o $(%s_OBJPATHS)",
p->name, p->name, p->ident);
fprintf(outmk, "%s.lo: %s_stub.o $(%s_OBJPATHS) %s",
p->name, p->name, p->ident, outmkname);
if (p->libs)
fprintf(outmk, " $(%s_LIBS)", p->ident);