David Chisnall wrote:
On 21 May 2009, at 10:34, Wolfgang Lux wrote:
Have you ever looked at what Apple is doing? I can use executables
compiled on Mac OS X 10.2 on Mac OS X 10.5 without any problems
and Mac OS X does ship with only a single instance of all its
libraries/frameworks
Only half of this is true. Apple only ships one version of its
frameworks. Each framework, however, contains different versions
of the libraries. You may have noticed all of the OS X version
macros in the headers. Each of those defines the parts of the
interface that are visible in a particular version of the
framework, but they are also used when compiling. Each version of
OS X has a Foundation.framework containing several
libFoundation.dylib files, one compiled for compatibility with each
previous version. Without access to their source, I can't be
completely sure how they are doing this, but my guess is that each
ivar and each method - even each typedef - has the same feature
macros in front of it and their build system automatically
generates a backwards-compatible version as long as these changes
are made.
I'm sorry, but this is just plain wrong. There is just one
Foundation, AppKit, etc. library on each system. Maybe you are
thinking of the libraries in the /Developer/SDKs/MacOSX10xxx.sdk
directories, but these are just stub libraries that are provided in
order to allow *linking* of executables for another OS version. These
stub libraries just contain the necessary symbol definitions but no
code at all.
It would be nice if GNUstep make had facilities for doing this, but
I imagine it would be a lot of effort. It would also be easier if
we could rely on a loader that supported frameworks properly, but I
believe Matt Rice is the only person who has one of these on a non-
NeXT/Apple platform.
I don't think that frameworks are the issue here. After all,
frameworks are just a convenient way to group headers, libraries, and
resources of a particular project together. Sure, they also provide
for versioning, but Apple does not seem to use that, e.g., Apple's
Foundation and AppKit libraries are both at version C since the
advent of Mac OS X.
Wolfgang
_______________________________________________
Gnustep-dev mailing list
Gnustep-dev@gnu.org
http://lists.gnu.org/mailman/listinfo/gnustep-dev