[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