[Openmcl-devel] Invalid CDB Files?

Gary Byers gb at clozure.com
Wed Nov 1 02:07:33 PST 2006

The current source tarball in <ftp://clozure.com/pub/testing/ffigen4.tar.gz>
contains the following README file:

# $Log: README,v $
# Revision 1.2  2005/08/10 05:05:46  gb
# Updated.
# Revision 1.1  2005/04/08 07:03:16  gb
# New file.

'ffigen' is a modified version of the GCC backend, based on similar
modifications to the 'LCC' compiler described at:


It's a work derived from GCC, and therefore licensed under the GPL.

Versions of ffigen - based on GCC 2.95 sources - were distributed
as adjunct components of OpenMCL in 2001 and 2002.  It's become 
increasingly difficult to use those versions, since they're sensitive
to the exact format of the 2.95 C preprocessor output (and since GCC
2.95 is fading into obsolescence.)  The source distributions consisted
of a set of patches (relative to a canonical 2.95 source tree) and
a README file that explained the build process.

In the summer of 2004, Helmut Eller made available a set of patches
relative to GCC 3.4.1.  (Unlike previous versions, GCC 3.x's
preprocessor and frontend are a single program, so an ffigen program
derived from GCC 3 is likely to be a little more self-contained than
earlier versions.)

This version is based on GCC 4.0, builds on Helmut's work, and adds
some initial support for translating Objective-C class and method
information.  In addition, it provides a heavily conditionalized
Makefile which builds a binary package (.tar.gz file) on both LinuxPPC
and DarwinPPC.

In order to build the program, it's necessary to obtain canonical
versions of GCC (with ObjC support) for the target platform; the
Makefile tersely explains what's missing and suggests where to find
it.  You need to obtain the following files from gcc.gnu.org or a
mirror site and install them in this directory:


Once those archives are installed, doing:

shell> make

will build the modified frontend, create an archive containing that
frontend and related support files, and create a text file explaining
how to install things.

These patches are maintained in CVS on clozure.com.  For anonymous

shell> cvs -d :pserver:cvs at clozure.com:/usr/local/publiccvs login

[The anonymous CVS password is 'cvs']

shell> cvs -d :pserver:cvs at clozure.com:/usr/local/publiccvs get ffigen4

Despite the claim made in that file, it's probably more accurate to
call it "a modified version of GCC's frontend".

The version in CVS will build binaries for DarwinPPC32/64, LinuxPPC32/64,
Linuxx8664, and FreeBSDX8664.

Apple calls the version of GCC that enables x8664 code generation (or, 
more importantly for the FFI translator's purposes, x8664 type and alignment
stuff) "4.0.1" and makes it available (wherever they keep their versions
of Darwin opensource projects) as "gcc-358".  That version doesn't seem
to contain the same level of support for ObjC 2.0 as is found in some
branches in the gcc.gnu.org SVN repository.  (I was looking at this just
a few days ago, and have already forgotten the details; in general, I
don't think that I was able to find sources that both supported x8664
under Darwin and provided ObjC 2.0 support adequate to parse ... the
only ObjC 2.0 headers that I have access to.)

The DarwinX8664 interfaces in the last couple of OpenMCL snapshots were
actually generated on a LinuxX8664 box.  I did get a native FFIGEN working
on DarwinX8664 the other day (modulo the ObjC 2.0 issue) and could maybe
try merging a few SVN trees to resolve the x8664/ObjC 2.0 issues, but
wanted to poke around and see if anyone has already done so or to see if
Apple could be persuaded to stop violating the GPL earlier than would
otherwise be convenient for them to do so ...

On Tue, 31 Oct 2006, Brent Fulgham wrote:

> Hash: SHA1
> On Oct 31, 2006, at 11:42 PM, Brent Fulgham wrote:
>> Before I run around trying to regenerate the CDB files, I wanted to
>> make sure they didn't already exist someplace.  Are they already
>> present in a download someplace?
> FYI, the Wiki Documentation (http://www.openmcl.org/Doc/
> index.html#The-Interface-Translator) indicates that a README should
> be present in the source and binary tarballs, but neither the current
> PPC or the "older" version seems to contain these installation
> instructions.
> Thanks,
> - -Brent
> Version: GnuPG v1.4.5 (Darwin)
> Hx9v0u04yK6lwhhBz6EWS0k=
> =vbBO
> _______________________________________________
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
> http://clozure.com/mailman/listinfo/openmcl-devel

More information about the Openmcl-devel mailing list