[kaffe] Re: Kaffe ieee754_scalb - uClibc status

Peter S. Mazinger ps.m at gmx.net
Tue Oct 18 15:53:55 PDT 2005

On Tue, 18 Oct 2005, Gustavo Guillermo Pérez wrote:

> Hello list, here the update info abour building kaffe on uClibc.
> 1)I'm not going to use X and awt.
> 2)Do not want native language support.
> 3)kaffe 1.1.6 and CVS, are the same proccess
> 4)uClibc version 0.9.28 (cvs snapshot)
> Kaffe still not want to load shared libraries as many other programs do on 
> uClibc then, the use of --enable-static --with-staticlib is mandatory.

Use gentoo, there this issue is solved ;)

It is caused by old configure scripts that need patching so that they 
correctly recognise shared lib support in uClibc.
Signs for incorrect recognition when running configure:
a. shared lib support is disabled although you used --enabled-shared
b. dependancy : unknown

The above sentences about static are incorrect, I have built kaffe w/ 
shared lib support, both 1.1.5 and .6 in a gentoo env.

> You still need jikes, build them static on libc env and copy to chrooted env, 
> if you just will use the jre and not javac, you'll not need anymore jikes you 
> can delete them after kaffe build.
> My Configure line:
> ./configure --prefix=/usr/local/kaffe --without-esd 
> --without-classpath-gtk-awt --without-alsa --disable-nls --enable-static 
> --with-staticlib --enable-gmp
> It will produce at time of linking:
> gcc -g -O2 -Wall -W -Wextra -pthread -o kaffe-bin main.o 
> version.o .libs/kaffe-binS.o 
> -Wl,--export-dynamic  ../../libraries/clib/native/.libs/libnative.a ../../libraries/clib/net/.libs/libnet.a ../../libraries/clib/io/.libs/libio.a ../../libraries/clib/nio/.libs/libnio.a /usr/lib/libiconv.so ../../libraries/clib/zip/.libs/libzip.a 
> -lz ../../libraries/clib/management/.libs/libmanagement.a ../../libraries/clib/security/.libs/libsecurity.a /var/tmp/kaffe-1.1.6/work/kaffe-1.1.6/kaffe/kaffevm/.libs/libkaffevm.a ../../kaffe/kaffevm/.libs/libkaffevm.a 
> -ldl -lm ../../replace/.libs/libreplace.a
> ../../libraries/clib/native/.libs/libnative.a(e_scalb.o): In function 
> `__ieee754_scalb':
> /var/tmp/kaffe-1.1.6/work/kaffe-1.1.6/libraries/clib/fdlibm/e_scalb.c:43: 
> undefined reference to `KaffeMath_isnan'
> /var/tmp/kaffe-1.1.6/work/kaffe-1.1.6/libraries/clib/fdlibm/e_scalb.c:43: 
> undefined reference to `KaffeMath_isnan'
> collect2: ld returned 1 exit status
> In the file: namespace.h (generated by build_mathnamespace)
> #define isnan KaffeMath_isnan
> #define finite KaffeMath_finite

I had only the first one missing and removed #define isnan ... from 
namespace.h (I am using the full susv3 patches from bugs.uclibc.org 
though, so my libm is different from upstream)


> This two definitions isnan and finite, does not appears in the code :(
> But isnan and finite are being used on __ieee754_scalb
> We can enable the special definition _SCALB_INT just for uclibc (remember this 
> is a special build).
> apply this temporary patch over libraries/clib/fdlibm/e_scalb.c (we use the 
> alternative definitions) 
> ---------------------------------
> --- /d/uLinuxTS3/GUS/kaffe-1.1.6/work/kaffe-1.1.6/libraries/clib/fdlibm/e_scalb.c	
> 2005-04-22 12:03:49.000000000 -0500
> +++ /mnt/GUS/kaffe20051017/kaffe/libraries/clib/fdlibm/e_scalb.c	2005-10-17 
> 22:55:31.000000000 -0500
> @@ -21,6 +21,10 @@
>  #ifndef _DOUBLE_IS_32BITS
> +#ifdef __UCLIBC__
> +#define _SCALB_INT 1
> +#endif 
> +
>  #ifdef _SCALB_INT
>  #ifdef __STDC__
>  	double __ieee754_scalb(double x, int fn)
> ---------------------------------
> Kaffe still build proper on uClibc and works faster and good as expected for 
> me.
> :) please if you see something helpful, let me know.

Peter S. Mazinger <ps dot m at gmx dot net>           ID: 0xA5F059F2
Key fingerprint = 92A4 31E1 56BC 3D5A 2D08  BB6E C389 975E A5F0 59F2

More information about the kaffe mailing list