Obligement - L'Amiga au maximum

Samedi 20 avril 2024 - 03:14  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

Actualité (récente)
Actualité (archive)
Comparatifs
Dossiers
Entrevues
Matériel (tests)
Matériel (bidouilles)
Points de vue
En pratique
Programmation
Reportages
Quizz
Tests de jeux
Tests de logiciels
Tests de compilations
Trucs et astuces
Articles divers

Articles in english


Réseaux sociaux

Suivez-nous sur X




Liste des jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z,
ALL


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


En pratique : Comment construire un compilateur croisé AmigaOS4 (Binutils 2.23.2 & GCC 8.3.0) sur Cygwin
(Article écrit par Roman Kargin et extrait d'Amigans.net - décembre 2019)


Note : traduction par David Brunet. Cliquer sur les images permet soit de les agrandir soit d'accéder au site en question.

Introduction

GCC 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

Cygwin 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.

Cygwin

Là, vous devez choisir un répertoire où l'installer, répondre aux quelques questions habituelles, puis choisir le miroir d'où télécharger les fichiers (vous pouvez choisir n'importe lequel, je choisis habituellement le premier). Ensuite, une fenêtre s'affiche où vous devez choisir ce que vous voulez installer :

Cygwin

Au début, choisissez "None" (aucun). Il suffit d'appuyer sur "Next/Next" (Suivant/Suivant) pour que le programme d'installation n'installe que le minimum nécessaire. Et plus tard, vous pourrez mettre à jour votre installation en installant seulement les paquets dont vous avez besoin, pour éviter d'avoir trop de choses inutiles. Bien sûr, vous pouvez installer tout ce dont vous avez besoin dès le début, sans installer un "pur" minimum, et ensuite mettre à jour. De cette façon, vous apprendrez à mettre à jour les paquets dès le début, et vous aurez moins de problèmes par la suite.

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" :

Cygwin

À 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 :

autoconf
automake
bison
cmake
cvs
flex
gcc-core
gcc-g++
git
libgmp-devel
libintl-devel
libisl-devel
libmpc-devel
libmpfr-devel
libtool (pas celui de Cygwin one, mais le pur)
make
mercurial
perl
python27
scons
subversion
wget (nécessite de télécharger le SDK depuis le serveur de Hyperion)

Regardez sur l'image ci-dessous à quoi tout cela devrait ressembler, avec quelles versions :

Cygwin

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.

Cygwin

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 :

git config --global user.email "vous@exemple.com"
git config --global user.name "Votre nom"

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 :

cd /
mkdir /amiga
cd /amiga
git clone https://github.com/sba1/adtools
cd adtools

git submodule init
git submodule update

gild/bin/gild clone
gild/bin/gild checkout binutils 2.23.2
gild/bin/gild checkout gcc 8

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.

cd /amiga
git clone https://github.com/fragglet/lhasa
cd lhasa
./autogen.sh
make
make install

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 :

SDK_URL=http://www.hyperion-entertainment.biz/index.php?option=com_registration&view=download&format=raw&file=69&Itemid=82

...par celle-ci :

SDK_URL=http://www.hyperion-entertainment.biz/index.php?option=com_registration&view=download&format=raw&file=82&Itemid=82

Après cela, vous serez prêts à construire un compilateur croisé !

Il suffit d'aller dans le répertoire "/amiga/adtools" et de taper :

make -C native-build gcc-cross CROSS_PREFIX=/usr/local/amiga

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é !

Cygwin

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" :

#include <stdio.h>
void main()
{
printf("gcc 8.3.0 with lto enabled\n");
}


$ ppc-amigaos-gcc -flto test.c -o test
$

Cygwin

Cygwin

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 :

./configure --build=x86_64 --host=ppc-amigaos --target=ppc-amigaos

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 :

$ cd your_project
$ mkdir "build"
$ cmake \
-DCMAKE_SYSTEM_NAME=Generic \
-DCMAKE_SYSTEM_VERSION=1 \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER="/usr/local/amiga/bin/ppc-amigaos-gcc" \
-DCMAKE_CXX_COMPILER="/usr/local/amiga/bin/ppc-amigaos-g++" \
-DCMAKE_LINKER="/usr/local/amiga/bin/ppc-amigaos-ld" \
-DCMAKE_AR="/usr/local/amiga/bin/ppc-amigaos-ar" \
-DCMAKE_RANLIB="/usr/local/amiga/bin/ppc-amigaos-ranlib" \
-DCMAKE_FIND_ROOT_PATH="/usr/local/amiga/ppc-amigaos/" \
..

...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.


[Retour en haut] / [Retour aux articles]