[kaffe] Kaffe ieee754_scalb - uClibc status

Gustavo Guillermo Pérez gustavo at compunauta.com
Tue Oct 18 10:30:33 PDT 2005

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.
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 
undefined reference to `KaffeMath_isnan'
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

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
 #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 
:) please if you see something helpful, let me know.
Gustavo Guillermo Pérez
Compunauta uLinux

More information about the kaffe mailing list