[CM] MCL 5 with CLM

Michael Klingbeil michael@klingbeil.com
Fri, 17 Oct 2003 13:11:32 -0400

Perhaps I can clear up some of the MCL 4/MCL 5/OpenMCL confusion.

MCL 5 is *not* a commercial OpenMCL. OpenMCL is sort of a spinoff of 
the original MCL codebase. OpenMCL is MacOS X native in that it uses 
the Mach-o ABI.

MCL 5 is the continuation of the MCL 4 legacy. It is essentially a 
"carbonized" version of MCL 4, meaning that it uses the Carbon APIs 
which are compatible with both MacOS 9 and MacOS X. So MCL 5 is *not* 
MacOS X only. It runs on both 9 and X. MCL 5 does not use the Mach-o 
ABI. Like MCL 4 it uses PEF (aka CFM = Code Fragment Manager). MacOS 
X has a layer to handle CFM natively so MCL 5 is essentially a first 
class citizen on MacOS X.

To see if you are running on OS X with MCL 5 check ccl::*osx-p*.

Because MCL 5 is a CFM app and inherits from MCL 4, its ffi should be 
essentially the same as MCL 4. This means of course that the shared 
libraries must be CFM libraries which are different from Mach-o dylds 
or bundles.

My understanding is that Apple's gcc tools do not compile to CFM. For 
that you will need somthing like CodeWarrior (which now has command 
line tools for MacOS X). But I could be wrong about that.

It probably is also possible to make MCL 5 call a Mach-o bundle, but 
this would take extra work. I don't know if anyone has done this yet. 
It might be worth poking around on the MCL mailing list archives for 
more details.

I am including a message from the MCL list which explains some of 
this in more detail.



Subject: Re: core graphics
From: Alice Hartley <alice@...>
Date: Wed, 10 Sep 2003 17:15:19 -0400
Cc: info-mcl@...
Newsgroups: gmane.lisp.mcl.general

>>  Date: Tue, 9 Sep 2003 18:59:08 +0200
>>  From: james anderson <james.anderson@...>
>>  Subject: core graphics
>MCL 5 is a CFM program, and as such can run under both OS9 and OSX.
>There are some differences in how the Carbon APIs are implemented
>under OS9 and OSX, but MCL's inherent notion of what a shared library
>is, how foreign functions in shared libraries are found, and how foreign
>functions are called are all based on CFM and on the traditional MacOS
>MacOSX natively uses a different object file format (:"Mach-O"),
>different shared library technology ("dyld"), and a slightly
>different ABI.  All of OSX (except for the large chunk of Carbon)
>is accessible via Mach-O/dyld native libraries but not directly
>accessible to CFM applications like MCL.

>Digitool seems to be of the opinion that continued OS9 compatibility
>is more important than fuller support of/awareness of OSX;

Please, I must respectfully disagree.
At the moment OS9 comaptibility is almost 0 cost.
I do believe it is important to support OSX MachO frameworks
but doing that in the general case is a very big job.
It will take some time. Having done that, OS9 support
may be abandoned if it becomes at all costly. I'm not
sure whether it will.

I assume
>that this opinion is based on expressed and perceived priorities of
>their customers, and that this therefore means that for every MCL user
>who wishes that MCL 5 was a native OSX application that used native
>shared libraries there's somewhat more than one user who thinks that
>the status quo is more desirable.  I personally find this surprising,
>but it's enough of a dead horse that beating it further doesn't seem

>Now I'm confused!  Can I assume that CLM using MCL 5 will be
>OSX-only?  Is MCL 5 some sort of commercial openmcl, so I
>can use the openmcl FFI?
>Cmdist mailing list