This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: preprocessor/6521: -MG creates dependency with wrong path

Zack Weinberg wrote:-

> I'm not entirely sure I understand this.
> I've never really liked -MG; it is too inflexible.  With <> it does
> something fairly silly, as Robert points out; but with "" it does
> something equally silly, which is to assume that splatting whatever
> string the user provided into the dependency list will work.  (It does
> _not_ assume they live in the same directory as the source file;
> consider split source and build trees.  The current behavior is
> more likely to work in practice than the documented one, but...

Good point, I'd not thought of that.  I tend to think, though, that
-MG should never really be being used with <>, so whatever we do
isn't that important.  That makes me like Robert's patch as it
deletes code, and does what is documented after all.

> The behavior under discussion predates cpplib, incidentally.
> It seems to me that we should leave -MG alone, since there are
> undoubtedly Makefiles out there depending on every last quirk of its
> semantics (remember all the fallout the last time we decided to
> improve the semantics of the -M switches?).  We should instead come up
> with a new way to do it that lets the user say where the generated
> file is expected to turn up... perhaps -Mx <path> puts all the
> dependencies on generated files in <path>.  (Where 'x' is some
> appropriate letter; I am too tired to think of a good one right now.)

Hmm, I guess.  We have too many options, really.  It's a shame -MG
can't die.  Fancy doing it with your "closing same file twice" patch?

> Come to think of it, -MG and -MP clash.  We should mark entries added
> to the list by -MG and not generate phony targets for them under -MP,
> or Make will pitch a fit about multiple rules for the same target.

You mean because the missing file presumably has a make rule specifying
how to generate it elsewhere?


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]