[ccache] ccache with "g++ -MD"

Tal Ben Avidor TalBA at corrigent.com
Wed Apr 25 11:00:04 GMT 2007


Hello CCachers,

I'm trying to use ccache with Windriver Workbench. At first it seemed to
work fine. Compilation is a lot faster, it saves tons of time. Only
later  have we noticed that the dependency tracking isn't working at
all.
After some digging, I'm convinced that the problem is related to "-MD"
parameter which the workbench generated makefile passes to g++.
The dependenciy file xxx.d is created in one place when using g++, and
in another place when using ccache as frontend to g++.

Am I doing something wrong, or is there a workaround for this problem?


The makfile command line is:
g++ $(DEBUGFLAGS_C++-Compiler) -mpowerpc -mcpu=603e -pipe -Wall -Wextra
-Wno-unused $(IDE_INCLUDES) -MD -MP -c -DARCH=$(ARCH) -o "$@" "$<"

Some relevant info from gcc manual page:
-MD	-MD is equivalent to -M -MF file, except that -E is not implied.
The driver determines file
           based on whether an -o option is given.  If it is, the driver
uses its argument but with a suffix
           of .d, otherwise it take the basename of the input file and
applies a .d suffix.

           If -MD is used in conjunction with -E, any -o switch is
understood to specify the dependency out-
           put file (but @pxref{dashMF,,-MF}), but if used without -E,
each -o is understood to specify a
           target object file.

           Since -E is not implied, -MD can be used to generate a
dependency output file as a side-effect of
           the compilation process.


Regards,
Tal


More information about the ccache mailing list