Problems building libgcj...

Scott Bambrough scottb@netwinder.org
Sat Apr 1 00:00:00 GMT 2000


Hi,

I've been porting libgcj to run on our ARM based NetWinder for a while now. 
I've patched gcc-2.95.2 with Bryce McKinlay's patches and have been moderately
successful.

I've run into a bug in the Makefiles however:

c++ -DHAVE_CONFIG_H -I. -I../../../../libgcj/libjava -I./include
-I../../../../libgcj/libjava -Iinclude
-I../../../../libgcj/libjava/include -I../../../../libgcj/libjava/../boehm-gc
-I./../boehm-gc -DSILENT=1 -DNO_SIGNALS=1
-DNO_DEBUGGING=1 -DJAVA_FINALIZATION=1 -I../../../../libgcj/libjava/libltdl
-I./libltdl
-I../../../../libgcj/libjava/../compat-include
-I../../../../libgcj/libjava/../zlib
-I../../../../libgcj/libjava/../libffi/include -I../libffi/include -fno-rtti
-fvtable-thunks -fsjlj-exceptions -W -Wall
-D_GNU_SOURCE -g -O2 -fvtable-thunks -D_GNU_SOURCE -msoft-float -c  -fPIC -DPIC
../../../../libgcj/libjava/java/lang/reflect/natMethod.cc -o
java/lang/reflect/.libs/natMethod.lo
../../../../libgcj/libjava/java/lang/reflect/natMethod.cc:44: ffi.h: No such
file or directory
make[4]: *** [java/lang/reflect/natMethod.lo] Error 1
make[4]: Leaving directory
`/home/scottb/cvstree/libgcj-build/armv4l-unknown-linux-gnu/soft-float/libjava'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory
`/home/scottb/cvstree/libgcj-build/armv4l-unknown-linux-gnu/soft-float/libjava'
make[2]: *** [multi-do] Error 1
make[2]: Leaving directory
`/home/scottb/cvstree/libgcj-build/armv4l-unknown-linux-gnu/libjava'
make[1]: *** [all-multi] Error 2
make[1]: Leaving directory
`/home/scottb/cvstree/libgcj-build/armv4l-unknown-linux-gnu/libjava'
make: *** [all-target-libjava] Error 2

The problem seems to be the multilibbing.  The include paths for libffi are not
correct on the compiler command line (they need another ../) when building in
soft-float/libjava.  Hence ffi.h cannot be found.  I had a look at the
makefiles, but I was hoping someone here might be more familiar with the
Makefile so the fix could be made without me having to analyze the Makefile.

I also have a couple of other questions:

1) The version of Double.h generated by gcj.h has 5 static jdouble constants at
the end of the class.  Only the first two get initialized with values (on x86
and ARM).  Is this correct?

  static const jdouble MIN_VALUE = 4.9406564584124654e-324;
  static const jdouble MAX_VALUE = 1.7976931348623157e+308;
  static const jdouble NEGATIVE_INFINITY;
  static const jdouble POSITIVE_INFINITY;
  static const jdouble NaN;

2) I had to modify the sources in the compilers gcc/java directory to get the
above file generated correctly.  ARM sets FLOAT_WORDS_BIG_ENDIAN to 1, and I had
to tweak it in a couple of places.  Should I submit the patches for this here,
or on gcc-patches?  I have a copyright assignment on file for gcc.  These
changes for the compiler should be covered by that copyright assignment right?

3) I had a look at the copyright assignment for libgcj.  Is it affected by
RedHat's purchase of Cygnus?

Scott

-- 
Scott Bambrough - Software Engineer
REBEL.COM    http://www.rebel.com
NetWinder    http://www.netwinder.org


More information about the Java mailing list