[fpc-devel] Objective-Pascal support merged to trunk
Jonas Maebe
jonas.maebe at elis.ugent.be
Thu Nov 5 18:15:44 CET 2009
Hello,
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,
ARM),
see http://wiki.freepascal.org/FPC_PasCocoa and
http://wiki.freepascal.org/FPC_PasCocoa/Differences for some
dialect
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
out).
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
file.
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"
units.
Jonas
More information about the fpc-devel
mailing list