Introduction
Portable Object Compiler est un compilateur Objective-C maintenu par David Stes. Il est accompagné entre autres, de sa bibliothèque d'exécution (Runtime library) couvert par la license GPL.Il reste fidèle au papier du Docteur Brad Cox, l'inventeur de ce langage.
Comme son nom l'indique, cette implémentation se veut portable.
En effet, il suffit de disposer d'un compilateur C et de quelques outils courants pour le compiler.
Vous pouvez trouver d'avantages d'informations à son propos ici : http://users.telenet.be/stes/compiler.html
Ce billet détaille comment construire ce compilateur Objective-C.
La construction du compilateur se passe en deux étapes :
- la construction d'une version légère du compilateur Objective-C (bootstrap) qui ne requière qu'un compilateur C.
- la construction de la version complète qui nécessite un compilateur Objective-C (d'où la nécessité du compilateur de bootstrap).
Pré-requis
- le SDK 53.30 installé
- un éditeur de texte
- l'utilitaire GNU Wget (disponible ici : wget-bin.lha)
Etapes
- A l'endroit de votre choix (à titre personnel, j'utilise RAM:) créez un fichier nommé "poc_build.script" à l'aide de votre éditeur de texte favoris.- Copiez / collez le contenu ci-dessous, puis adaptez si besoin le numéro des versions.
Les numéros des versions en question se trouvent dans le nom des archives pour systèmes UNIX et pour les utilisateurs experts souhaitant porter le compilateur sur une autre plateforme.
- Ajoutez le drapeau "script" à ce fichier
- Lancez le en l'appelant puis patientez
SET bootstrap_version "3.3.13" SET compiler_version "3.3.16" ; Cleanup echo "Cleaning..." delete PortableObjectCompiler all force > nil: delete SDK:POSIX/usr/local/bin/objc delete SDK:POSIX/usr/local/bin/objc1 delete SDK:POSIX/usr/local/bin/postlink ; Create a work directory makedir PortableObjectCompiler cd PortableObjectCompiler ; Download archives wget http://users.telenet.be/stes/objc-bootstrap-$bootstrap_version.tar.gz wget http://users.telenet.be/stes/objc-$compiler_version.tar.gz ; Unarc stuff echo "Unarchiving..." unarc objc-bootstrap-$bootstrap_version.tar.gz "`cd`" auto quiet unarc objc-bootstrap-$bootstrap_version.tar "`cd`" auto quiet unarc objc-$compiler_version.tar.gz "`cd`" auto quiet unarc objc-$compiler_version.tar "`cd`" auto quiet ; Go into boostrap directory cd objc-bootstrap-$bootstrap_version ; Configure Makefile sh ./configure --prefix=/SDK/POSIX/usr/local ; Fix Makefile:install sed s/BINDIR)\/objc1/BINDIR)/ Makefile > Makefile.1 sed s/BINDIR)\/objc/BINDIR)/ Makefile.1 > Makefile.2 sed s/BINDIR)\/postlink/BINDIR)/ Makefile.2 > Makefile ; Build boostrap compiler gmake ; Install into SDK directory gmake install ; Fix permissions protect SDK:POSIX/usr/local/bin/objc +e protect SDK:POSIX/usr/local/bin/objc1 +e protect SDK:POSIX/usr/local/bin/postlink +e ; Get into full compiler directory cd /objc-$compiler_version ; Configure Makefile sh ./configure --prefix=/SDK/POSIX/usr/local gmake gmake install ; Cleaning the runtime libraries gmake cleanruntime ; Build runtime libraries + refCount gmake runtimer ; Install runtime libraries cd src/objcrt gmake install LIBRARY="objcrtr.a" cd // cd src/objpak gmake install LIBRARY="objpakr.a" cd // cd src/cakit gmake install LIBRARY="cakitr.a" cd // cd // echo "Done !"
- Ajoutez le drapeau "script" à ce fichier
protect poc_build.script +s
- Lancez le en l'appelant puis patientez
poc_build.script
Etapes finales
Pour vérifer que nous disposons bel et bien d'une version fonctionnelle du compilateur, depuis le terminal lancez :
sh objc --version
Voici le résultat que vous devez obtenir :
Nous allons maintenant compiler un petit exemple en Objective-C
Editez un fichier hello.m
/* sh sdk:local/C/objc hello.m -o hello -refcnt */ #include <stdio.h> #include <objpak.h> int main(int argc,char **argv) { id set = [Set new]; argv++;while (--argc) [set add:[String str:*argv++]]; [set do:{ :each | printf("hello, %s!\n",[each str]); }]; }
Commentaires
Enregistrer un commentaire