Ian Lance Taylor wrote:
Steve Kenton <[EMAIL PROTECTED]> writes:

Is it ever possible to build libmudflap, libssp, or libgomp when
inhibit_libc is set?

It seems unlikely.
OK, then I'll pursue this idea
If not, is is reasonable to add a check to the top level configure to detect
situations that will cause gcc configure to set inhibit_libc and add those
libraries to either skipdirs or noconfigdirs.  (Which would be preferred?)
It looks like just a couple of lines in configure to exclude them
automatically
if they can never build under that condition on any target.

That seems reasonable in principle.  They should be added to
skipdirs.  Ideally the condition expressing when inhibit_libc should
be set should be done in a single place, and then somehow communicated
to other places.

In the current inhibit_libc condition I don't understand the
interaction between --with-newlib and --with-headers.  If newlib is
available, inhibit_libc normally should not be defined.

Ian
I've puzzled over it too. Below is the section from the gcc subdirectory configure.

The "if" first line clearly means "we are cross compiling and do not have sysroot" I've seen scripts that use --with-newlib=yes without newlib source being present
to mean forcibly set inhibit_libc, which probably explains the second line,
(it looks like a kludge, but apparently commonly used by some people)
and the third line of course means "so long as we also do not have headers".

The top level configure already checks for and sets a variable for cross compiling.
I thought that would be a good place to add a check for sysroot and headers
and add things to skipdirs. I assume libmudflap, libssp and libgomp can build with newlib if it is really present, so that should probably not be checked at the top level. Are the headers "xno" checks a legacy thing, or should there also be one for sysroot?

Steve Kenton

# If this is a cross-compiler that does not
# have its own set of headers then define
# inhibit_libc

# If this is using newlib, without having the headers available now,
# then define inhibit_libc in LIBGCC2_CFLAGS.
# This prevents libgcc2 from containing any code which requires libc
# support.
inhibit_libc=false
if { { test x$host != x$target && test "x$with_sysroot" = x ; } ||
      test x$with_newlib = xyes ; } &&
    { test "x$with_headers" = x || test "x$with_headers" = xno ; } ; then
      inhibit_libc=true
fi

Reply via email to