AC_NO_EXECUTABLES in libc/machine/sh

Jeff Johnston jjohnstn@redhat.com
Tue Apr 25 14:56:00 GMT 2006


DJ Delorie wrote:
> With the 2.13->2.59 change, it seems that sh-elf has broken as gcc is
> trying to do a test compile in libc/machine/sh to satisfy
> prerequisites for AC_EGREP_CPP.  Of course that fails as we're still
> building the C library.  A simple addition of AC_NO_EXECUTABLES seems
> to get around that.  However, in a local discussion, one of us also
> noted that the objects in that directory don't seem to be correctly
> overriding the generic C implementations of those functions, due to
> new object naming conventions.  We're not sure what to do about that.
> Furthermore, another one of us noted that the AC_NO_EXECUTABLES macro
> is not documented in autoconf, so we're not even sure this is the
> right fix.  Also, perhaps this macro should go in a common file?
> Anyway, comments welcome.
>

In doing the transformation, I remember trying AC_NO_EXECUTABLES and 
running into problems.  It might have been when I was building for 
x86-linux which uses libtool, but I can't remember exactly what the 
problem was being that it was so many iterations ago.  It also could 
easily have been caused by a screw-up on my part in the early parts of 
the transformation work.

The top-level acinclude.m4 defines the LIB_AC_PROG_CC and LIB_AM_PROG_AS 
macros which are meant to be used to avoid the executable tests.  I was 
not aware that sh was bringing in AC_EGREP_CPP.  That said, I believe 
this to be isolated to sh and your fix is fine.  Feel free to check it in.

Regarding the use of the macro, I found the following comment for it:

# AC_NO_EXECUTABLES
# -----------------
# FIXME: The GCC team has specific needs which the current Autoconf
# framework cannot solve elegantly.  This macro implements a dirty
# hack until Autoconf is able to provide the services its users
# need.
#
# Several of the support libraries that are often built with GCC can't
# assume the tool-chain is already capable of linking a program: the
# compiler often expects to be able to link with some of such
# libraries.
#
# In several of these libraries, workarounds have been introduced to
# avoid the AC_PROG_CC_WORKS test, that would just abort their
# configuration.  The introduction of AC_EXEEXT, enabled either by
# libtool or by CVS autoconf, have just made matters worse.
#
# Unlike an earlier version of this macro, using AC_NO_EXECUTABLES does
# not disable link tests at autoconf time, but at configure time.
# This allows AC_NO_EXECUTABLES to be invoked conditionally.

-- Jeff J.

> 	* libc/machine/sh/configure.in: Avoid link tests.
> 	* libc/machine/sh/configure: Regenerate.
> 
> Index: configure.in
> ===================================================================
> RCS file: /cvs/src/src/newlib/libc/machine/sh/configure.in,v
> retrieving revision 1.3
> diff -p -U3 -r1.3  configure.in
> --- configure.in	13 Apr 2006 19:56:26 -0000	1.3
> +++ configure.in	24 Apr 2006 18:33:42 -0000
> @@ -10,6 +10,8 @@ AC_CONFIG_AUX_DIR(../../../..)
>  
>  NEWLIB_CONFIGURE(../../..)
>  
> +AC_NO_EXECUTABLES
> +
>  AC_EGREP_CPP([sh5], [
>  #if __SH5__
>    sh5



More information about the Newlib mailing list