Vous êtes ici

Tutoriel : cross-compiler sous Linux pour Mac OS X (Vala)

Objectif : compiler une application Vala/GTK+ sous Linux à destination de Mac OS X.

Nous avons une application codée en Vala, utilisant GTK+2 pour son rendu graphique :

Nnous désirons en produire une version Mac OS X sans modifier le code source ni installer d'outils de développement sur Mac.

PS 1 : GTK+3 n'est pas encore supporté sur Mac OS X.
PS 2 : compiler directement sur Mac OS X est possible, mais requiert davantage d'outils
.

Pré-requis

Une distribution Linux Debian ou Ubuntu, avec Vala installé.

Pour installer Vala, reportez-vous à cet article, partie 1).

1) Installer la chaîne de compilation

- Téléchargez le compilateur GCC pour Mac OS X :

* version 32-bits "i386" :
apple-x86-gcc-DEBIAN.zip (97,7 Mo)

* version 64-bits "amd64" :
apple-x86-gcc-DEBIAN-AMD64.zip (100 Mo)

(ps : Extraire le ZIP et taper :
apt-get install libssl0.9.8
dpkg -i apple-x86-odcctools_758.159-0flosoft11_i386.deb
dpkg -i apple-uni-sdk-10.5_20110407-0.flosoft1_i386.deb
dpkg -i apple-x86-gcc_4.2.1~5646.1flosoft2_i386.deb
)


- Téléchargez GTK+ 2.24.9 pour Mac OS X :
gtk2249-MACOSX_(TARNYKO).tar.bz2 (8,69 Mo)

(ps : Mettez le fichier dans le dossier de votre choix et extrayez-le par :
tar xfvj gtk2249-MACOSX_(TARNYKO).tar.bz2)


- Adapter GTK+ à son emplacement :
Dans un terminal, déplacez-vous dans le dossier "gtk-macosx" que vous venez d'extraire. Par exemple, si vous avez extrait dans "/opt/gtk-macosx", tapez :
cd /opt/gtk-macox
puis faites :
find -name '*.pc' | while read pc; do sed -e "s@^prefix=.*@prefix=$PWD@" -i "$pc"; done

2) Compiler

- Nous allons indiquer à "pkg-config" de localiser les librairies GTK+ dans notre chemin spécial. Par exemple, si vous avez extrait dans "/opt/gtk-macosx", tapez :
export PKG_CONFIG_PATH=/opt/gtk-macosx/lib/pkgconfig

Nous sommes prêts ! Nous allons ici nous servir de ce code source pour l'exemple.

- Compiler l'exemple :
valac --cc=i686-apple-darwin10-gcc --pkg gtk+-2.0 -o testGTK2 testGTK2.vala

Si tout s'est bien passé, un nouvel exécutable testGTK2 a dû apparaître.
Celui-ci ne se lancera pas sous Linux, car il est destiné à Mac OS X !

3) Distribuer

- Créez un dossier contenant l'exécutable et l'ensemble des librairies (.dylib) Mac OS X. Par exemple, si vous avez extrait dans "/opt/gtk-macosx" :
mkdir ~/distri
cp testGTK2 ~/distri
cp /opt/macosx/lib/*.dylib ~/distri

- C'est prêt à fonctionner ! Transférez ce dossier sur un Mac. Ouvrez le terminal, déplacez-vous à l'intérieur et lancez l'exécutable :
./testGTK2

Voilà !