This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: libada configure contains wrong code and GNAT as a cross compiler in general
- From: Arnaud Charlet <charlet at adacore dot com>
- To: "Luke A. Guest" <laguest at archeia dot com>
- Cc: GCC ML <gcc at gcc dot gnu dot org>
- Date: Wed, 9 Jan 2013 09:57:01 +0100
- Subject: Re: libada configure contains wrong code and GNAT as a cross compiler in general
- References: <1357720991.14424.13.camel@rogue>
On Wed, Jan 09, 2013 at 08:43:11AM +0000, Luke A. Guest wrote:
> Hi,
>
> I'm trying to add GNAT to Yocto and still coming across problems. I have
> a number of questions about GNAT as a cross compiler, I know it wasn't
> designed as one within the GCC tree, but I think it needs to be capable
> of building as one to match the other compilers.
>
> 1) The latest problem I'm having is that it fails to build
> libgnat-4.6.so, I've managed to track it down to the following code
> inside libada/configure:
>
> # Determine what to build for 'gnatlib'
> if test $build = $target \
> && test ${enable_shared} = yes ; then
> # Note that build=target is almost certainly the wrong test; FIXME
> default_gnatlib_target="gnatlib-shared"
> else
> default_gnatlib_target="gnatlib-plain"
> fi
>
> Surely, it shouldn't matter whether the $build = $target is true or not,
> it should be whether the target supports shared libs or not. So, am I ok
> to remove this test (keeping the enable_shared test)? Is there anything
> else that could break because of this change?
>
> In fact, should the code in libada/configure script actually do platform
> tests, just as they are done in the gnattools/configure script?
I can't speak for libada/*, I'm not familiar enough with these, but they may
well contain errors indeed.
> 2) I also want to point out that inside
> gcc/ada/gcc-interface/Makefile.in there are lines such as:
>
> GNATLIB_SHARED = gnatlib-shared-dual
>
> Is these relics?
No, these are correct settings. If there's a mistake, it might be in libada.
> If so, shouldn't the above configure script also use
> the "-dual" and the other options available to it?
>
> 3) Coming back to gnattools, there are tests in there to set the
> TOOLS_TARGET_PAIRS variable, which are also set in
> gcc/ada/gcc-interface/Makefile.in, are the ones set in the Makefile.in
> also relics? Can they be removed from there?
No, these are not relics, these are actually the reference settings,
and used e.g. when using --disable-libada
> 4) What is the point of the --disable-libada flag exactly? I've seen a
To disable automatic build of gnatlib and gnattools. This is used e.g. at
AdaCore to configure in a more fine grained manner how gnatlib and gnattools
are built. Ideally we'd like to use the libada/gnatools mechanism, but
this mechanism isn't quite working as we'd need it, so this hasn't happened
yet.
gnattools will either use the run-time just built in case of a native compiler,
and will use the base compiler's run-time in case of a cross (hence the
requirement that you first need to build a native GNAT before building a cross,
using matching sources).
Arno