I am told that it is possible to use gcj to compile
the output of the abcl compiler to native code.
However, I cannot find any documentation anywhere as
to how this is done. Can anyone point me in the right
From: Peter Graves <peter@ar...> - 2005-07-27 00:04:09
On Tue, 26 Jul 2005 at 16:16:38 -0700, Eric wrote:
> I am told that it is possible to use gcj to compile
> the output of the abcl compiler to native code.
> However, I cannot find any documentation anywhere as
> to how this is done. Can anyone point me in the right
The abcl compiler outputs .cls files, which are simply .class files by
another name (to facilitate deleting them while leaving alone the
=2Eclass files that are built from .java files by javac or jikes).
According to man gcj:
A gcj command is like a gcc command, in that it consists of a number o=
options and file names. The following kinds of input file names are
Java source files.
Java bytecode files.
So, in principle, you should be able to rename the .cls files to .class
files and feed them as input to gcj. (Obviously, you'll need to link in
the .class files in abcl's runtime library too, or their corresponding
Note that I haven't actually tried to do any of this myself.
There's a function BUILD-ABCL-EXECUTABLE in build-abcl.lisp which, at
one time, was able to use gcj to build an executable version of abcl's
kernel, without the .abcl/.cls files generated by the compiler. I don't
know if this still works.
The last time I tried to use gcj was quite a while ago. At that time,
building the abcl kernel worked fine, and the resulting executable was
able to start up, load the .abcl/.cls files, and do simple things, but
it crapped out pretty quickly when I tried to run ansi-tests. I should
try gcj again one of these days, but there are only so many hours in
Note also that the version of abcl in current CVS outputs, by default,
for foo.lisp, a compressed foo.abcl file that contains what would have
been the uncompressed foo.abcl file, renamed to foo._, plus all of the
foo-nn.cls files. You can inhibit the compression and get the old
behavior of separate files back by binding SYS:*COMPILE-FILE-ZIP* to
NIL around COMPILE-FILE, and/or doing (COMPILE-SYSTEM :ZIP NIL).
The new behavior is very new indeed and by no means 100% nailed down