Reading <http://gcc.gnu.org/news/dependencies.html>, I find that
dependency files should be created along the lines of

%.o:  %.c ...

In gcc version 4.4.4 (Slackware64 Linux version 13.0), I execute the
following commands:

touch a.c
gcc -c -MMD -MP -MF"a.d" -MT"a.d" -o "a.o" "a.c"
cat a.c

and get the following output:

a.d a.o: a.c

which is precisely what I want.  However, I have a cross compiler using
gcc version 4.7.3 which produces the following output using the same
commands (obviously, with gcc replace with <path to >/bin/gcc:

a.d: a.c

I have been looking for the reason for the change, but am unable to find
the rational.

Please advise whether this is a bug, or if this is meant to be the way
gcc will work for all future releases.  As I see it, this complicates my
Makefile(s) as I have two gcc version that behave differently.  This
implies that my Makefile(s) will now require a section specifically
dedicated to the .d file generation.  Whereas I remember that this used
to be the way I had to construct the dependency list, this was
cumbersome and the way e.g. 4.4.4 supported automatic dependency
generation is preferable to me.

Thank you for your time,
Andy

Reply via email to