Building Java3D-1.5.1 on FreeBSD 6.2-R/i386
Dr. Gary E. RAFE
drgerlists at gmail.com
Sun Feb 3 10:52:54 PST 2008
In case anyone else might be interested in this,
building and installing a native Java 3D is not difficult.
This procedure was developed and tested on a Toshiba Satellite Pro 6100
running FreeBSD 6.2-R, XFree86-4.7.0, NVIDIA-96.43.01 OpenGL 1.3,
JDK-1.5.0_13p7, Ant-1.6.5, and GCC-3.4.6
0. Fetch the source code from CVS at java.net (registration/login required):
$ mkdir J3D_WRKDIR
$ cd J3D_WRKDIR
$ cvs -d :pserver:MYLOGIN at cvs.dev.java.net:/cvs login
$ cvs -d :pserver:MYLOGIN at cvs.dev.java.net:/cvs checkout -r rel-1_5_1-fcs \
j3d-core j3d-core-utils vecmath
1. Build and install vecmath package:
$ cd vecmath
$ ant jar-opt
# mkdir -p /PATH_TO/java3d/lib/ext
# cd build/opt/lib/ext
# install -m 0644 -o root -g wheel vecmath.jar /PATH_TO/java3d/lib/ext
# cd /PATH_TO/j2se/jre/lib/ext
# ln -s ../../../../java3d/lib/ext/vecmath.jar vecmath.jar
2. Patch, build, and install j3d-core/j3d-utils packages and
native OpenGL connection shared library:
$ cd J3D_WRKDIR/j3d-core
$ fetch http://drgerlists.googlepages.com/patches-j3dcore-151-fbsd-i386.tbz
$ tar xjf patches-j3dcore-151-fbsd-i386.tbz
$ patch -p0 < patches-j3d-core-1.5.1
$ ant -Dbuild.type=fcs jar-opt
# cd build/freebsd-i386/opt/lib/ext
# install -m 0644 -o root -g wheel j3dcore.jar /PATH_TO/java3d/lib/ext
# install -m 0644 -o root -g wheel j3dutils.jar /PATH_TO/java3d/lib/ext
# cd ../i386
# mkdir -p /PATH_TO/java3d/lib/i386
# install -m 0755 -o root -g wheel libj3dcore-ogl.so /PATH_TO/java3d/lib/i386
# cd /PATH_TO/j2se/jre/lib/ext
# ln -s ../../../../java3d/lib/ext/j3dcore.jar j3dcore.jar
# ln -s ../../../../java3d/lib/ext/j3dutils.jar j3dutils.jar
# cd ../i386
# ln -s ../../../../java3d/lib/ext/libj3dcore-ogl.so libj3dcore-ogl.so
Some additional observations:
Additional optimizations to the native shared library may be included
in the ANT build file J3D_WRKDIR/j3d-core/src/native/build.xml.
Check out the "value" for the property "bldFlag" under the target
"nativeSetup-opt-freebsd". Currently, only "-O" is specified here,
though my build uses "-O2 -march=pentium4m".
The shared object libj3dcore-ogl.so is linked dynamically to libjawt.so,
which lives in JDK_HOME/jre/lib/i386/. The shared object libjawt.so,
in turn, requires libmawt.so, which, on my system, resides in
either JDK_HOME/jre/lib/i386/headless/, .../i386/motif21/,
or .../i386/xawt/. Perhaps a method is available to configure this
in the JRE directly -- if so, this would be useful information.
For initial testing of the j3d-example applications, I used
LD_LIBRARY_PATH=JDK_HOME/jre/lib/i386/motif21 to pick the appropriate
shared library. Once Java 3D looked like it was working OK,
I put a symbolic link in JDK_HOME/jre/lib/i386/ to this library:
# ln -s ./motif21/libmawt.so libmawt.so
which allows it to get picked up when testing Java 3D applets
from Firefox.
I couldn't test the Shading Language (Cg or GLSL) examples in j3d-example,
as the video device in this (old) notebook doesn't have these
capabilities. Further research into this in NVIDIA documents
related to their FreeBSD/Linux drivers suggest that more recent
devices can do GLSL. I'd be interested to hear about successes
in this area, when it comes time to replace this old Toshiba.
I didn't add any capability to build a distribution here
(see J3D_WRKDIR/j3d-core/build-tools/).
I expect to follow-up on this with the Java 3D project itself
to see whether they would entertain an "official" FreeBSD-x86
port/distribution.
Comments, corrections, and improvements to any of this
are encouraged and welcome.
--
Dr Gary E RAFE: drgerlists at gmail dot com
More information about the freebsd-java
mailing list