Gondoltam egy merészet és telepítettem MacOSX Leopard 10.5.1-et és Xcode 3.0 fejlesztő környezetet. Minden erőfeszítés nélkül tökéletesen működik olyannyira, hogy ezt a post-ot is már belőle írom, bár a blog szerkesztője nem működik tökéletesen, de ez a Safari problémája (majd telepítek Mozillát).
Ha már MacOSX, akkor jó lenne iPhone alkalmazásokat fejleszteni is. A toolchaint kicsit másként kell felépíteni, mint Cygwin-ben.
Itt is az első dolgunk a megfelelő modulok letöltése a megfelelő SVN repository-kból. Egyik konzolban az iPhone fejlesztő könyzetet, mivel ez kicsit több időt vesz igénybe. Ha befejeződött a letöltés, ezt a konzolt nyugodtan bezárhatjuk.
svn checkout http://iphone-dev.googlecode.com/svn/trunk/ iphone-dev
Másik konzolban az LLVM forrását. Fontos, hogy ezt a konzolt hagyjuk nyitva, mert ezzel fogunk dolgozni a későbbiekben.
svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm-svn -r 42498
Amint ez utóbbi befejeződött, kezdhetjük is a fordítást.
cd llvm-svn
./configure --enable-optimized
make ENABLE_OPTIMIZED=1
sudo make install
LLVMOBJDIR=`pwd`
cd ..
A toolchain könyvtárát is hozzuk létre.
sudo mkdir /usr/local/arm-apple-darwin
Ha az első konzolban az LLVM letöltése befejeződött, akkor folytathatjuk az ODCCTools fordításával.
cd iphone-dev
mkdir -p build/odcctools
cd build/odcctools
../../odcctools/configure --target=arm-apple-darwin --disable-ld64
export INCPRIVEXT="-isysroot /Developer/SDKs/MacOSX10.4u.sdk"
make
sudo make install
cd ../..
Most hozzuk létre a könyvtárat, ahova a telefonról a file-okat másoljuk és a HEAVENLY környezeti változót állítsuk be.
sudo mkdir /usr/local/share/iphone-filesystem
HEAVENLY=/usr/local/share/iphone-filesystem
A file-ok lemásolását mindenkinek a saját fantáziájára bízom, én a Windows particióról lemásoltam az előző tartalmat. Egyenlőre a symlink-eket nem javítottam, majd ha szükségem lesz rájuk, majd akkor megcsinálom. Tudniillik a Cygwin a Linux-os symlinkeket Windows rendszerben lnk file-okkal oldotta meg és azokat kellene lecserélni.
A header file-okat másoltassuk a helyükre.
cd include
./configure --with-macosx-sdk=/Developer/SDKs/MacOSX10.4u.sdk
sudo bash install-headers.sh
cd ..
Készítsuk el a CSU-t is.
mkdir -p build/csu
cd build/csu
../../csu/configure --host=arm-apple-darwin
sudo make install
cd ../..
Mielőtt az utolsó lépésbe velevágunk, ellenőrizzük a $LLVMOBJDIR és a $HEAVENLY változók tartalmát. Ha minden rendben van, akkor kezdjük el a fordító elkészítését.
mv llvm-gcc-4.0-iphone/configure llvm-gcc-4.0-iphone/configure.old
sed 's/^FLAGS_FOR_TARGET=$/FLAGS_FOR_TARGET=${FLAGS_FOR_TARGET-}/g' \
llvm-gcc-4.0-iphone/configure.old > llvm-gcc-4.0-iphone/configure
sudo ln -s /usr/local/arm-apple-darwin/lib/crt1.o /usr/local/arm-apple-darwin/lib/crt1.10.5.o
mkdir -p build/llvm-gcc-4.0-iphone
cd build/llvm-gcc-4.0-iphone
export FLAGS_FOR_TARGET="-mmacosx-version-min=10.1"
../../llvm-gcc-4.0-iphone/configure --enable-llvm=`llvm-config --obj-root` \
--enable-languages=c,c++,objc,obj-c++ --target=arm-apple-darwin --enable-sjlj-exceptions \
--with-heavenly=$HEAVENLY --with-as=/usr/local/bin/arm-apple-darwin-as \
--with-ld=/usr/local/bin/arm-apple-darwin-ld
make LLVM_VERSION_INFO=2.0-svn-iphone-dev-0.3-svn
sudo make install
cd ../..
Ha az llvm-gcc-4.0-iphone/configure futtatása során permission denied üzenetet kaptam és a következőt csináltam.
sudo chmod 775 ../../llvm-gcc-4.0-iphone/configure
A lépést ismételten megpróbáltam és így már működött.
A puding próbja az evés, a HelloWorld alkalmazás jól fordul, azonban volt némi problémám. Az első, amit könnyebb orvosolni, hogy header file-okba belenyúltam és az enumerációs típusok hiányoznak. Mivel nem akarok erről a szokásomról lemondani és a továbbiakban is szeretném javítgatni, léltrehoztam egy symlinket a root-ban.
ln -s /usr/local/arm-apple-darwin /iphoneheaders
Így már a Finder-ben is be lehet jutni a headerek közé. Azonban még így is van egy kis probléma. A header file-ok permission-jei állítgatásának ellenére sem tudtam módosítani a fejlécfileokat Xcode-ban. Ezt úgy hidaltam át, hogy Admin jogosultsággal indítottam el a programot.
cd /Developer/Applications/Xcode.app/Contents/MacOS
sudo ./Xcode
Adminisztrátori jelszó megadása után már működik minden. Ugyan ez a megoldás körülményes, de járható út, ráadásul a fejlécek módosításáre nincs szükség gyakran.
A másik bánatom, hogy az SQLite-ot használó alkalmazásokat nem tudok lefordítani. Erre még nem találtam ki semmit.