Irix make loop (stmp-multilib)

Jim Wilson
Tue Apr 28 20:24:00 GMT 1998

	  - stmp-fixproto needs	stmp-headers
	  - stmp-headers needs	gfloat.h
	  - gfloat.h needs	float.h-nat
	  - float.h-nat needs	enquire
	  - enquire needs	$(GCC_PARTS)
	  - $(GCC_PARTS) needs	$(LIBGCC)
	  - $(LIBGCC) needs	libgcc2.ready
	  - libgcc2.ready needs	$(STMP_FIXPROTO)
	  - STMP_FIXPROTO is stmp-fixproto, hence goto begin of loop :-(

I think any attempt to break this loop needs to start with enquire.

One possible solution is to stop running enquire at build time.  Running
enquire does not work for cross builds, so we have the awkward situation that
native builds create float.h differently than cross builds.  If we use the
cross method (setting float_format in the configure file), then we no longer
need enquire, and the dependency loop is broken.

If we want to keep enquire as a consistency check, we could still do that.
We could write a rule that compiles and runs enquire, and then compares
the output against the float.h file, and fails with an error if they
are different.  This could be done in rest.encap after the LIBGCC and
STMP_FIXPROTO rules.  This check can not be done for cross builds, or at
least not this way.  It would be possible to put something in the testsuite
that could work for native and cross builds, since the testsuite already knows
how to run programs on the target.

Alternatively, we could bring the gfloat.h rule out of stmp-headers, and
put it in rest.encap/all.cross.  There is no real need to create it
before fixproto is run, because there should never be anything that needs to
be fixed in this file.  This seems less elegant though, as stmp-headers
no longer creates all of the header files.

Or going back to the beginning, we could take the stdlib.h/unistd.h includes
out of libgcc2.c/frame.c, and find some other way to make the prototypes
available here if we need them.


More information about the Gcc-bugs mailing list