Cocotron — это реализация runtime для Objective-C, похожего на рантайм Apple — Cocoa. Он достаточно сильно отличается от другого популярного открытого рантайма — GNUstep, как в целях, так и в реализации.
Cocotron отлично подходит для портирования кода с платформы OSX на Win32. Конечно реализация API далека до идеала, но, как показывает практика, разработчики всегда быстро решают проблемы.
Изначально Cocotron использовался только при кросс-сборке на базе XCode и mingw-toolchain. При кросс-сборке доступно развертывание на Windows, Linux и Solaris.
Конечно такой подход оставлял в цепочке разработки самый сложный и дорогой этап — OSX (оптимально — на оригинальном железе). Возможность Cocotron, как платформы, не могла быть полностью раскрыта из-за этой зависимости.
Cocotron не может работать с оригинальным GCC, где используется другой runtime Objective-C. По этой причине GCC необходимо собрать с патчами Apple, которые, помимо всего прочего, немного расширяют язык от того, что есть в vanilla GCC.
Процесс установки GCC вполне традиционен, для начала необходимо скачать дерево исходных кодов:
и потом скомпилировать его:
здесь я испльзую префикс /opt/objc для GCC и Cocotron.
Как вариант — можно использовать собранный deb пакет, который любезно предоставил новоприбывший хабровчанин pfactum.
Теперь можно перейти к конкретно сборке Cocotron. На данный момент нативная сборка поддерживается для Linux, OpenBSD (и, вероятно, FreeBSD) и Darwin (т.е. OSX). Для сборки необходимо забрать форк официального дерева с github:
(кстати ветка master автоматически синхронизируется с официальным svn, так что если кто-то хочет «поковырять» исходники и предпочитает git — милости прошу).
Система сборки основана на CMake, причем не моложе 2.6:
пока что она собирает только Foundation, работа над скриптами сборки AppKit в процессе.
Собранную библиотеку можно протестировать:
Я надеюсь, что развитие Cocotron привлечет к нему новых разработчиков и повысит популярность Objective-C, очень интересного языка программирования.
Cocotron отлично подходит для портирования кода с платформы OSX на Win32. Конечно реализация API далека до идеала, но, как показывает практика, разработчики всегда быстро решают проблемы.
Изначально Cocotron использовался только при кросс-сборке на базе XCode и mingw-toolchain. При кросс-сборке доступно развертывание на Windows, Linux и Solaris.
Конечно такой подход оставлял в цепочке разработки самый сложный и дорогой этап — OSX (оптимально — на оригинальном железе). Возможность Cocotron, как платформы, не могла быть полностью раскрыта из-за этой зависимости.
Cocotron не может работать с оригинальным GCC, где используется другой runtime Objective-C. По этой причине GCC необходимо собрать с патчами Apple, которые, помимо всего прочего, немного расширяют язык от того, что есть в vanilla GCC.
Процесс установки GCC вполне традиционен, для начала необходимо скачать дерево исходных кодов:
svn checkout http://cocotron-tools-gpl3.googlecode.com/svn/trunk/gcc cocotron-gcc
и потом скомпилировать его:
mkdir gcc-build
cd gcc-build
../cocotron-gcc/configure --prefix=/opt/objc --with-gnu-as --with-gnu-ld --without-newlib --disable-multilib \
--disable-libssp --disable-nls --disable-libobjc --enable-libffi --enable-objc-gc \
--enable-languages=c,objc,c++,obj-c++ --enable-checking=release
make -j2
sudo make installздесь я испльзую префикс /opt/objc для GCC и Cocotron.
Как вариант — можно использовать собранный deb пакет, который любезно предоставил новоприбывший хабровчанин pfactum.
Теперь можно перейти к конкретно сборке Cocotron. На данный момент нативная сборка поддерживается для Linux, OpenBSD (и, вероятно, FreeBSD) и Darwin (т.е. OSX). Для сборки необходимо забрать форк официального дерева с github:
git clone git://github.com/farcaller/cocotron.git cd cocotron git checkout origin/native-build -b native-build
(кстати ветка master автоматически синхронизируется с официальным svn, так что если кто-то хочет «поковырять» исходники и предпочитает git — милости прошу).
Система сборки основана на CMake, причем не моложе 2.6:
mkdir build
cd build
cmake -DCMAKE_C_COMPILER=/opt/objc/bin/gcc \
-DCMAKE_CXX_COMPILER=/opt/objc/bin/g++ \
-DCMAKE_INSTALL_PREFIX=/opt/objc ..
make
sudo make installпока что она собирает только Foundation, работа над скриптами сборки AppKit в процессе.
Собранную библиотеку можно протестировать:
cat > test.m <<EOF
#import <Foundation/Foundation.h>
int main(int argc, char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSLog(@"Hello, Objective-C World!");
[pool drain];
return 0;
}
EOF/opt/objc/bin/gcc test.m -o test -I/opt/objc/include -L/opt/objc/lib \ -lFoundation -lpthread -ldl
Я надеюсь, что развитие Cocotron привлечет к нему новых разработчиков и повысит популярность Objective-C, очень интересного языка программирования.