[distcc] Preprocessed output to make's stdout instead of to remote distccd

Martin Pool mbp at samba.org
Mon Oct 7 13:46:01 GMT 2002


On  2 Oct 2002, Terry Griffin <terryg at axian.com> wrote:
> > Building distcc using distcc works OK for me.  What version of gcc are
> > you using?
> 
> For building distcc I was using Red Hat's gcc 2.96 (not an official
> GNU release). For the clients project it's gcc 3.0.4.

I wonder if Red Hat did something wierd to their version to make it
behave differently to both earlier and later GNU versions?

At the moment I can't what can be done to make it work.  If you want
to use that (buggy?) compiler, you will need to leave off -MD.

If what you're saying is correct, then we can't know what will go into
the -o output file when one of the -MD options is used.  We can't just
remove the -MD option from the preprocessor invocation, because that
needs to happen as part of preprocessing to have the right side
effect.  We also can't just leave off the -E, because then the
compiler will run locally.

> I'm assuming it would have been an object file instead of preprocessed
> output, but -E suppressed object output so it doesn't really matter.

It's not really accurate to say -E suppresses object output.  What it
actually does is suppress running the compiler.  So -o with -E always
specifies the preprocessor output.

> >> Since -o is meant for the object file when -MM or -MMD are used,
> >> preprocessed output is sent to stdout.
> >
> > Why do you say that?
> 
> Again, because I tried it and that's what happened. The gcc documentation
> says that -MM and -MMD don't inhibit compilation, so object code must
> go one place and preprocessed output must go elsewhere. From that I
> infered that -o is reserved for the object code in this scenario.

-MD and -MMD just cause side effects of running the preprocessor.  The
preprocessed output gets fed into the compiler; it doesn't have to go
anywhere else.

-- 
Martin 



More information about the distcc mailing list