Re: [PATCH v2] gdbserver: Suffix generated C files with -generated

Simon Marchi
2017-03-31T19:39:49Z

On 2017-03-31 14:46, Simon Marchi wrote:
> Note that when updating past this commit and rebuilding, or in general
> hopping back and forth between branches that have this commit and
> branches that don't and rebuilding, you may stumble on errors like:
>
> make: *** No rule to make target `version.c', needed by `version.o'.
> Stop.
>
> It's the same issue some people had when environ.c was moved to
> common/environ.c, and it will happen every time we move a source file.
> The reason is the leftover dependency file in .deps, containing
> something like:
>
> version.o: version.c
>
> These files are automatically generated by gcc and state all the files
> that went into creating version.o during the last build. That rule
> states that version.c should exist when for version.o to be built, and
> that version.o should be rebuilt if version.c is more recent. But
> version.c was moved and no longer exists, hence the error.
>
> One thing I see we could do to mitigate the problem is clear the .deps
> directory when doing a "make clean". After all, when doing a clean,
> all objects are deleted and are going to be rebuilt, so we don't care
> about the dependencies anymore. So if somebody stumbles on that
> problem, there's a chance they'll try to clean and build again, which
> would fix the problem.
>
> Do you have any better idea?
>
> Simon

Huh, I've just noticed that gdb does this already:

rm -f $(DEPDIR)/*

which translates to:

rm -f .deps/*

So I guess it'd make sense to do it as well in gdbserver.