This is the mail archive of the gcc@gcc.gnu.org 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: resurrecting automatic dependencies


Tom> There may be more missing dependencies.  Please try out this branch if
Tom> you would.  You can report bugs to me, just send the build log.

I tried -j33 on a bigger machine and found a problem with Go.

The dependency patch uses the language Makefile conventions to add some
order-only dependencies to ensure that generated files are made early
enough (this code is actually already in gcc, but it has some latent
bugs).  In particular it uses the $(lang)_OBJS variable (via
ALL_HOST_OBJS).

However, Go does not set go_OBJS, so a sufficiently large -j setting
will cause a build failure, as a Go file is compiled before a generated
header.

Fixing this is simple enough in go/Make-lang.in; but this also has the
side effect of defining IN_GCC_FRONT_END for the various Go
compilations:

$(foreach file,$(ALL_HOST_FRONTEND_OBJS),$(eval CFLAGS-$(file) += -DIN_GCC_FRONTEND))

... which causes build failures for go-backend.c (uses rtl.h) and
go-lang.c (uses except.h), since with this defined, certain headers are
prohibited.


A short term solution is to keep Go using explicit dependencies.

For a long term solution ... well, I'm CCing Ian.

The except.h doesn't seem to be needed.  At least, I removed the include
and go-lang.c still compiled.  The go-backend.c problem looks harder,
though.  Thoughts?

Tom


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