[fpc-devel] Mac OS X interfaces updated
Jonas Maebe
jonas.maebe at elis.ugent.be
Sat Nov 7 14:19:55 CET 2009
Hello,
I've updated the Mac OS X Common Pascal Interfaces in the FPC svn
repository, from the http://svn.freepascal.org/svn/macosxintf/trunk
repository.
As mentioned earlier, the main new things are:
* all headers that were present have been updated to their Mac OS X
10.6 version
* all headers are now 64 bit clean (and when compiled for 64 bit, only
functions available to 64 bit programs are made visible)
* the headers can now also be used when compiling for iPhoneOS/ARM
* CoreType, CoreVideo and AudioUnits header translations have been added
There are however some changes to the headers that can cause problems
for programs written against the older version of the headers. I've
compared all functions/procedures with their old declarations, and
posted a list of the differences at
http://wiki.freepascal.org/User_Changes_Trunk#MacOSAll_unit:_changed_parameter_types
I did not compare the declarations of all types though (it's harder to
generate an easily comparable list for those), so there may be more
differences in that respect.
Note especially the last part of this remark: "Remedy: Either adjust
your code, or file bug reports asking to revert to the old signatures
(especially for deprecated routines that won't be updated in the
future anymore anyway, this should be no problem)."
There is also two special things when using the 64 bit version of the headers:
a) the MacOSAll unit will in that case by default only link against
the CoreFoundation framework, rather than against the Carbon
framework. The reason is that although there is a 64 bit version of
the Carbon framework, it will go away in the future and hence it's not
a good idea to make programs depend on it.
b) the GetKeys routine is not available in the 64 bit version of
MacOSAll. The reason is that this function is implemented using a
wrapper, which in turn calls the real GetKeys routine from the Carbon
framework. As a result, if smart linking/dead code stripping is not
enabled, then the presence of this wrapper in your program makes your
program depend on the Carbon framework, which as mentioned above is
not very nice for 64 bit programs. Therefore this one function is
available in a separate unit called KeyEvents when compiling for 64
bit. For 32 bit programs, this units also exists, but is empty (simply
to avoid requiring ifdefs in case you need this routine in 64 bit).
Jonas
----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.
More information about the fpc-devel
mailing list