On 31/03/2022 14:20, Andy Bowery via Gcc-help wrote:
Thank you Ruoyao for your answer on this.
Does anyone in the community have experience of building 'libquadmath' on the ARM (aarch64) platform?Particularly using gcc, are there flags that I need to set in order to get it built? Or should I obtain the ARM compiler provided by ARM (which is not free unfortunately)?
Thanks,
Andy Bowery On Tuesday, 29 March 2022, 16:56:13 BST, Xi Ruoyao <xry111@xxxxxxxxxxxxxxxx> wrote:
On Tue, 2022-03-29 at 15:29 +0000, Andy Bowery via Gcc-help wrote:
Thank you Jonathan for your quick response. I am afraid at the moment
I don't have access to such a multicore system. I will investigate
setting one up.
I tried a different approach and that was to build within the
libgfortran subfolder, by running 'configure' followed by 'make' in
that subfolder. I needed to make libbacktrace.la and libbacktrace.a
available. However this worked and 'libgfortran.a' was created.
So I tried the same approach in the libquadmath subfolder in order to
build 'libquadmath.a'. So in this subfolder I ran:
automake./configuremake
However all I got was the following output and no files created:
make all-am
make[1]: Entering directory '/home/root/gcc/libquadmath'
make DO=all multi-do # make
make[2]: Entering directory '/home/root/gcc/libquadmath'
make[2]: Leaving directory '/home/root/gcc/libquadmath'
make[1]: Leaving directory '/home/root/gcc/libquadmath'
What should I do here? I presume that this is what the higher Makefile
in gcc runs in this subfolder. So if I was run 'make' of the gcc
folder all the through, I presume that it wouldn't make the file
'libquadmath.a' either. How do I get it to make libquadmath.a using
the Makefile in the libquadmath subfolder?
I don't think this is supported by GCC building system. libquadmath,
like other GCC target libraries, is only expected to be built with the
exact same GCC version in the release tarball. Using another compiler
may cause failure.
For this specific issue, take a look at configure.ac:
AM_CONDITIONAL(BUILD_LIBQUADMATH, [test "x$libquad_cv_have_float128" = xyes])
So, if your compiler does not support __float128, libquadmath building
system will do nothing.
From https://gcc.gnu.org/onlinedocs/gcc/Floating-Types.html:
__float128 is available on i386, x86_64, IA-64, and hppa HP-UX, as
well as on PowerPC GNU/Linux targets that enable the vector scalar
(VSX) instruction set.
So I guess __float128 is simply not available for your target. Then
there is no way to build libquadmath for it.
The AArch64 port of GCC provides _Float128, but it would appear it does
not provide __float128. Perhaps this is because the standards have
started to move towards the former and the latter is some GNU extension?
Perhaps you could hack this by building with -D__float128=_Float128.
R.