|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Note : traduction par David Brunet. Cliquer sur les images permet soit de les agrandir soit d'accéder au site en question. Introduction Il y a un an, j'avais écrit un article montrant comment construire un compilateur croisé AmigaOS 4 sur MSYS2, juste pour essayer quelque chose de différent avec Cygwin, qui est la plupart du temps utilisé par de nombreux développeurs AmigaOS 4 comme environnement de compilation croisée. Et bien sûr, MSYS2 peut être utilisé, mais il a un inconvénient par rapport à Cygwin quand il s'agit de réaliser des portages depuis Unix : les séparateurs de volumes/répertoires entre Win32 et Linux. Ainsi, cmake, autoconf, et quelques autres outils vous donneront des erreurs avec les séparateurs de volumes/répertoires entre "C:" et "/". Bien sûr, si vous écrivez vos applications pour AmigaOS 4 et les compilez de manière croisée, alors votre choix n'a pas d'importance : MSYS2 ou Cygwin. Mais si vous faites un portage à partir d'Unix, et que les projets sont assez importants et ont besoin de CMake, Autotools, et autres, alors vous aurez besoin de résoudre les séparateurs de volumes/répertoires. Pour cette raison, et parce que cela semble être un sujet d'intérêt, j'ai écrit ce petit guide qui, je l'espère, sera utile aux développeurs qui veulent faire du travail de compilation croisée, mais qui ne veulent pas perdre leur temps à comprendre comment tout installer. Préparez-vous à compiler Comme indiqué sur le site de Cygwin : "Cygwin est une large collection d'outils GNU et à code source ouvert qui fournissent des fonctionnalités similaires à une distribution Linux sous Windows". En termes humains, cela signifie que c'est un environnement que nous exécutons et qui nous donne un joli Shell, avec une barre de défilement, dans lequel nous pouvons opérer comme dans un Shell Unix : on aura droit à tous ces "ls", "mkdir", "rm" et toutes sortes de sed, awk et bash/ash :). Ici, nous construisons un compilateur croisé pour le matériel dont nous avons besoin (dans notre cas pour AmigaOS 4) par le GCC de Cygwin, et ensuite nous utilisons le compilateur croisé prêt pour produire les binaires AmigaOS 4. L'avantage de cela est que nous pouvons utiliser toute une gamme de paquets à jour comme CMake, Autoconf, Git, Subversion, Perl, Bison, Flex, Python et autres, sans compter la vitesse du matériel x86 (surtout quand vous pouvez le construire avec -j4). Par exemple, la construction d'Irrlicht Engine sur AmigaOne X5000/020 prend environ 20 minutes, alors que sur un PC Core i5 avec quelques coeurs à 2,7 GHz, en activant la construction parallèle, cela prend seulement deux ou trois minutes. Ensuite, il suffit de transférer le binaire généré sur une vraie machine AmigaOS 4 pour le tester. Après avoir installé Cygwin, comme dans le cas de MSYS2, nous utiliserons le dernier dépôt adtools où Sebastian "sba1" Bauer maintient les récents GCC et Binutils. Au moment de l'écriture de cet article, il s'agit de Binutils 2.23.2 et de GCC 8.3.0. Cette fois, il sera compilé avec la gestion LTO par défaut (cette gestion par défaut de LTO fut changée plus tard dans le dépôt adtools). Pour les compilateurs croisés, j'utilise un ordinateur portable HP avec un Intel Core i5 à 2,7 GHz et Windows 10. La version de Cygwin que nous utiliserons est native x64, mais la procédure sera probablement la même pour la version x86, c'est simplement le binaire d'installation qui sera différent. Donc, tout d'abord, vous devez récupérer l'installateur sur cygwin.com/setup-x86_64.exe et exécutons-le. Une fois l'installation terminée (assez rapidement, toute l'installation ne fait que 115 Mo à ce stade), il vous suffit d'aller dans le répertoire où vous avez choisi de l'installer et de lancer "Cygwin.bat" : À ce stade, vous n'avez bien sûr pas GCC dont vous avez besoin pour construire un compilateur croisé, ou tout ce dont adtools peut avoir besoin, ou toute sorte d'outils/analyseurs/langages dont vous pouvez avoir besoin lorsque vous faites un travail de portage. Donc, installons-le. La mise à jour des dépendances de Cygwin (quand vous avez besoin d'un Autoconf ou CMake plus récents, ou de n'importe quoi d'autre, ce qui arrive de temps en temps) n'est pas aussi intuitive qu'on pourrait l'espérer, mais une fois que vous y serez, tout ce passera bien. Pour mettre à jour, ne lancez pas "apt-get" ou "yum" ou quoi que ce soit d'autre depuis la console de Cygwin. Au lieu de cela, exécutez de nouveau votre installateur : cygwin.com/setup-x86_64.exe. Après, il y a les passages habituels Suivant/Suivant, le choix du miroir, etc. Ensuite, une fois que la fenêtre où vous devez choisir les paquets à installer apparaît, choisissez dans la "View" (Vue - placée à gauche) l'option "Full" (Complet) et tapez les paquets que vous devez installer dans le champ de recherche. Par exemple, si vous tapez "GCC", il y en aura plusieurs dans la liste, choisissez "gcc-core", cliquez dans la liste déroulante pour choisir une version, puis retirez du champ de recherche votre "GCC", et tapez le nouveau nom des paquets. A la fin, vous devriez choisir les éléments suivants :
Regardez sur l'image ci-dessous à quoi tout cela devrait ressembler, avec quelles versions : Cliquez ensuite sur "Next" (Suivant), on vous indiquera qu'il faut plus de dépendances (il y en aura beaucoup) pour poursuivre la configuration, donc cliquez à nouveau sur "Next" (Suivant). Une fois que notre installation de mise à jour est terminée, allez dans la console de Cygwin, tapez "gcc -v" pour voir qu'il est bien installé et tapez quelques simples lignes de test (comme sur la capture d'écran ci-dessous) afin de vérifier que le GCC de Cygwin fonctionne bien. Maintenant, il est temps d'installer adtools (notre compilateur croisé) avec le dernier SDK, et toutes les dépendances nécessaires pour le construire correctement. Mais tout d'abord, vous devez définir pour git certains paramètres magiques sans lesquels vous pourrez rencontrer quelques problèmes avec le processus de construction :
Après cela, vous devez faire un clone du dépôt adtools et devez réaliser quelques autres préparatifs. Il suffit de copier/coller ces lignes :
Attention, une des dernières lignes avec la commande "clone" prendra du temps, cela dépend de la vitesse de votre connexion Internet. La taille du répertoire "adtools" après la commande "clone" sera d'environ 1 Go. Les deux commandes suivantes appliquent les correctifs spécifiques à AmigaOS 4 pour Binutils et GCC 8, elles se font rapidement. Après cela, tout ce dont vous avez besoin depuis le dépôt adtools est téléchargé. A présent, il faut le construire correctement avec le dernier SDK. Vous devez installer également "lhasa". Il s'agit de l'archiveur/désarchiveur Lha sur Unix, et nous en avons besoin pour que les scripts adtools soient en mesure de décompresser les fichiers téléchargés depuis le SDK du serveur de Hyperion.
Ce n'est pas tout. Dans les scripts de construction actuels d'adtools, il y a un petit problème : il ne télécharge pas le dernier SDK pour une raison quelconque, il télécharge la version 53.24, alors que notre SDK public actuel est en version 53.30. Il faut donc corriger cela nous-mêmes : dans "/amiga/adtools/native-build/makefile", à la ligne 39, il faut changer cette ligne :
...par celle-ci :
Après cela, vous serez prêts à construire un compilateur croisé ! Il suffit d'aller dans le répertoire "/amiga/adtools" et de taper :
Cela prendra un certain temps. En tenant compte du fait que les PC d'aujourd'hui sont tous multicoeurs, ajoutez "-j4" à la fin de la ligne afin de faire une construction parallèle et d'accélérer les choses. Une fois ceci fait (en fonction de la vitesse de votre matériel, cela peut prendre pas mal de temps), tout ce dont vous avez besoin est juste de taper la ligne magique "export PATH=/usr/local/amiga/bin:$PATH" pour que Cygwin sache où trouver les binaires du compilateur AmigaOS 4. Note : assurez-vous d'ajouter cette ligne au fichier "/home/user/.bashrc". Ainsi, vous n'aurez plus besoin de vous en soucier, et elle sera exécutée automatiquement chaque fois que vous lancerez votre Shell Cygwin. C'est terminé ! Le temps des tests Après cette installation, testons pour voir que tout fonctionne. A partir de maintenant, dans adtools/gcc8.3.0, "lto" est activé par défaut, alors vérifions l'habituel "hello world" :
Trucs et astuces Premier truc Si vous voulez réaliser des portages depuis Unix, vous aurez besoin de savoir comment utiliser "./configure" sur le compilateur croisé pour construire les bons fichiers "makefile" pour AmigaOS 4. Habituellement, les premiers arguments devraient être :
Après cela viennent toutes les options nécessaires. Mais ces trois premiers arguments sont les plus utilisés (bien sûr, si votre système de construction est autre que x86_64, modifiez l'argument en conséquence). Deuxième truc CMake est aujourd'hui plus souvent utilisé, donc pour faire bon usage de celui-ci avec un compilateur croisé, vous pouvez toujours suivre ceci :
...puis entrer "make". Pour les choses simples, cela suffira (n'oubliez pas les ".." à la fin, ils sont nécessaires). Et comme dans le cas de "./configure", d'autres options peuvent être ajoutées. Vous pouvez également avoir besoin d'ajuster le fichier "flags.make" pour la ligne de liaison après la génération des fichiers "makefile" par CMake : il sera placé dans "build/CMakeFiles/votre_projet/flags.make". Conclusion J'espère que ce petit tutoriel sera d'une quelconque aide pour les développeurs désireux d'accélérer leurs temps de compilation et pour avoir l'avantage d'utiliser les dernières versions stables des autotools, analyseurs, systèmes de construction, etc.
|