[fpc-devel] Objective-Pascal support merged to trunk

Jonas Maebe jonas.maebe at elis.ugent.be
Thu Nov 5 18:15:44 CET 2009


Since the existing Objective-C support has stabilised quite well, I've  
merged it from the objc branch into trunk. All future Objective-Pascal  
development will also happen in trunk, and the objc branch is now  
closed for further development. Note that you have to start the  
initial compilation with FPC 2.2.4/2.3.x/2.4.0rc1 (not yet released),  
starting the compilation with a previously compiled trunk compiler  
will fail.

As the commit messages says, this branch basically adds the following:

* merged objc branch:
     + basic support for Objective-Pascal: objcclass, objcprotocol,
       objcselector on all Darwin platforms (ppc32/64, i386, x86_64,  
       see http://wiki.freepascal.org/FPC_PasCocoa and
       http://wiki.freepascal.org/FPC_PasCocoa/Differences for some  
       details. Use {$modeswitch objectivec1} to activate
     + Cocoa, iPhone/UIKit and WebKit interfaces for use with the new
       syntax mode

For those that had the objc branch checked out and would like to  
convert it to trunk without checking out a completely clean copy, you  
can use the following command (only execute it once; afterwards you  
can use "svn up" as before to update to newer versions):

svn switch http://svn.freepascal.org/svn/fpc/trunk fpcobjc

(replace fpcobjc with the directory where your objc branch was checked  

Ryan, I've given you write access to the newly created cocoaint  
directory in trunk, so you can still commit newer versions of your  
header translations and conversion scripts.

In the near future, I'll also commit the result of the work that  
Gorazd Krosl and I did to bring the univint headers (MacOSAll and  
friends) up-to-date. All existing headers have been updated to Mac OS  
X 10.6, they have been made 64 bit safe (to the extent that they are  
supported on 64 bit systems), and support for the iPhoneOS has been  
added (i.e., routines not available on the iPhoneOS are ifdef'ed out  
when compiling for Darwin/ARM -- the reason that this was possible, is  
that the Mac OS X 10.6 headers contain this information as well, and  
do not fall under the iPhone SDK "no derivative works" agreement).

One implementation change is that the MacOSAll unit for FPC will no  
longer be a single gigantic file. The reason is that the new file  
became 14MB (it was 10MB) and svn chokes on calculating the diff with  
the previous version (I let it run more than 5 minutes at 100% cpu on  
my MacBook before I killed it, and it would not be sustainable if svn  
would cause the same load on the server every time someone updated or  
asked for that diff).

Instead, every independent unit from which MacOSAll was built will  
contain ifdef's that make it usable both as a separate unit, and as an  
include file in a single MacOSAll unit. The new MacOSAll unit will  
simply set this define and then include all units in the appropriate  
order. This will make no difference whatsoever for your programs, but  
it will no longer be possible to conveniently browse/search a single  
file for all routines. If you want, you will always still be able  
check out the http://svn.freepascal.org/svn/macosxintf/trunk  
repository, type "make fpcpinterfaces -j 2" and afterwards open the  
generated Build/FPC/MacOSAll.pas unit to still see everything in one  

We're also considering to split the MacOSAll unit somewhat in the  
future. Carbon, CoreServices and CoreFoundation will probably remain  
together due to interdependencies (possibly a few others as well, it  
depends on the dependencies), but some independent frameworks (such as  
AddressBook, CoreVideo, etc.) will probably get their own "collection"  


More information about the fpc-devel mailing list