# Programmation Ada/FAQ/Compilateurs Et outils

École Nationale Supérieure des Télécommunications Département Informatique et Réseaux
Copyright © 2001-2007 Samuel Tardieu et les différents auteurs des réponses
Cet article est livré en l'état, sans garantie déclarée ni implicite. Bien que tous les efforts aient été déployés pour s'assurer de la validité des informations contenues dans ce document, l'auteur ne pourra être tenu pour responsable d'erreurs, ou d'omissions, ni d'éventuels dommages résultant de leur utilisation.
Ce document peut être librement copié et distribué en respectant les conditions de la Licence de documentation libre GNU.

# Compilateurs et outils

Cette section répond à des questions techniques concernant les compilateurs et les outils associés.

## Outils génériques
### Existe-t-il un outil permettant de créer un programme C à partir d'un programme Ada?

Le compilateur de Titan permet de générer du C à partir d'un source Ada.

### Existe-t-il un outil similaire à JavaDoc pour Ada?

Le projet AdaDoc de Julien Burdy et Vincent Decorges permet d'extraire des informations à partir d'un fichier source en Ada et de générer des pages HTML. Il est aussi possible d'utiliser AdaBrowse, qui génère des pages avec références croisées.

### Existe-t'il un Ada pour Mac OS?

Un portage de GNAT pour Mac OS 9 (Classic) a d'abord été connu de façon confidentielle à travers les outils payants de Tenon (CodeBuilder).
GNAT, depuis son intégration dans GCC 3.1, est disponible pour Mac OS X, à partir des sites :
* MacAda, le site historique d'Ada sur Mac : http://www.macada.org.
* Libre par AdaCore, le plus officiel : http://libre.adacore.com.
* GNU Ada, très complet avec une section Mac : http://sourceforge.net/projects/gnuada

### Où trouver un environnement Ada95 graphique en logiciel libre pour Windows?

Il suffit de combiner GNAT et AdaGIDE, un éditeur graphique ciblant le langage Ada. On peut trouver GNAT à l'URL http://libre.adacore.com/libre/tools/gnat-gpl-edition/ et AdaGIDE à l'URL http://www.martincarlisle.com/adagide.html.
Il est également possible, pour GNAT, d'utiliser AIDE, disponible depuis le site de Stéphane Rivière. AIDE est un environnement de développement Ada pour Windows, également destiné à l'enseignement. AIDE utilise uniquement des outils libres et multi plate-formes pour créer des applications libres ou commerciales, en mode texte, graphique (GtkAda) ou encore pour internet (AWS).
AIDE comporte un IDE fondé sur Emacs (Glide), un IDE graphique (GPS) et une console compatible Bash. Tous les outils sont intégrés, configurés et opérationnels après l'installation. Aucun fichier n'est installé en dehors du répertoire de AIDE.
AIDE comporte une chaine de production de documentation complète et francisée, basée sur Texinfo et générant, à partir d'un source unique, les fichiers d'aide en ligne (HTML) et les manuels utilisateurs (PDF).
La documentation complète de AIDE et les réponses aux questions fréquemment posées sont disponibles à partir du même site que le logiciel.

## GNAT
### Existe-t-il un dévermineur pour GNAT?

La distribution source de GNAT inclut une modification de GDB, un dévermineur[2] très puissant, pour lui ajouter le support du langage Ada.
De plus, l'interface graphique de GDB, appelée GVD (GNU Visual Debugger), a été développée entièrement en Ada.

### Comment s'assurer que son code est compatible Ada 83?

Il faut utiliser le paramètre -gnat83 sur la ligne de commande de gnatmake.

### Existe-t-il des IDE pour GNAT?

Il en existe plusieurs. On peut citer :
* XEmacs ou Emacs, avec le mode Ada pour les systèmes Unix, Windows, VMS, etc.;
* GLIDE (fourni par ACT) intègre Emacs et le mode Ada pour les systèmes Unix et Windows;
* AdaGIDE est un système de développement complet tournant sous Windows;
* GPS (GNAT Programming Studio) est le petit dernier, développé par ACT, intégrant environnement de développement, de compilation et de déverminage. Il fonctionne sous Unix, Mac et Windows.

### GNAT 3.15p fonctionne-t-il sur toutes les versions de Windows?

GNAT 3.15p fonctionne sur Windows 95, Windows 98, Windows NT 4.0, Windows 2000, Windows ME et Windows XP. Cependant, il est conseillé d'utiliser Windows NT ou Windows 2000, qui sont plus stables que les autres.

### Comment lancer un exécutable depuis un programme Ada?

Le paquetage GNAT.OS_Lib fournit deux sous-programmes, Spawn et Spawn_Non_Blocking, permettant respectivement de lancer en attendant un processus fils et de lancer sans attendre un processus fils.

### À quoi correspondent les fichiers .ali générés par GNAT?

Ces fichiers contiennent des informations qui n'ont pas leur place dans le fichier objet (extension .o ou .obj selon les systèmes). Par exemple, un fichier foobar.ali contient, entre autres, la liste des paquetages dont dépendent foobar.ads et foobar.adb.

### Comment déclarer une variable locale de plusieurs centaines de Ko avec GNAT?

La taille par défaut de la pile de la tâche d'environnement ne permet pas toujours de déclarer des variables locales importante. Il faut passer l'option --stack=XXX à l'éditeur de liens pour la modifier. Cela peut se faire en rajoutant -largs -Wl,--stack=0x8000000 (par exemple) à la fin de la ligne de commande de gnatmake.
Pour changer la taille de la pile d'une autre tâche, il faut utiliser pragma Storage_Size lors de la déclaration de la tâche ou du type tâche.

### Comment lire le contenu d'un répertoire?

GNAT fournit un paquetage GNAT.Directory_Operations. depuis Ada2005 : package Ada.Directories

### Quel est le nom de l'exécutable du compilateur GNAT?

Cela dépend du système. Les distributions de GNAT distribuées par AdaCore prennent le nom gcc. Celles livrées en standard avec les distributions Linux, par exemple sur http://www.gnuada.org/alt.html, utilisent le nom gnatgcc, pour ne pas introduire de confusion involontaire avec le compilateur C. Les compilateurs livrés avec les distributions BSD (FreeBSD, NetBSD et OpenBSD) sont disponibles sous le nom adagcc.
Toutefois, GNAT 5.0 sera basé sur la version courante de GCC. Le compilateur sera donc disponible sous le nom gcc, tout comme les autres langages.

### Comment installer GNAT sous Debian GNU/Linux?

GNAT est disponible sous forme de paquet pour Debian GNU/Linux que ce soit pour architecture Intel, Sparc ou PowerPC. Pour l'installer, il faut utiliser la commande apt-get install gnat en mode super-utilisateur (root). La documentation peut être installée en tapant apt-get install gnat-doc.

### Où récupérer les sources de GNAT ?

Les sources de GNAT sont disponibles en téléchargement depuis le site de la Free Software Foundation.

### J'utilise GNAT, est-ce que mon code doit être livré sous licence GPL? (en logiciel libre)

Le code du compilateur lui-même est sous licence GPL, ce qui signifie que si vous souhaitez distribuer un compilateur Ada basé sur GNAT, alors vous devrez conserver cette licence. Ceci est commun à toutes les versions de GNAT.
En ce qui concerne votre propre code, tout dépend de la bibliothèque d'exécution de GNAT que vous liez avec votre programme ; c'est cette liaison avec la bibliothèque d'exécution, et non le compilateur, qui a une influence :
* si vous utilisez GNAT 3.15p ou antérieure, vous n'avez aucune obligation quant à la licence à utiliser pour votre programme ;
* si vous utilisez GCC obtenu de la Free Software Foundation, alors vous n'avez aucune obligation quant à la licence à utiliser pour votre programme ;
* si vous utilisez GNAT Pro fourni par AdaCore dans le cadre d'un contrat avec eux, il est probable que vous ayez le droit de faire ce que vous voulez concernant la licence à appliquer à votre programme; consultez AdaCore pour plus de précisions ;
* si vous utilisez GNAT GPL Edition fourni gratuitement par AdaCore aux développeurs de logiciels libres, alors vous avez quatre possibilités :
** vous ne distribuez pas votre programme du tout (vous l'utilisez pour vous-même) ;
** vous distribuez votre programme sous licence GPL ou compatible (vous pouvez évidemment demander paiement pour cela) ;
** vous distribuez votre programme sous une licence de votre choix (par exemple une licence propriétaire), mais sous forme de source uniquement, et vous demandez à vos utilisateurs de le recompiler ;
** vous hébergez votre programme sous forme d'application Web et vos utilisateurs y accèdent à distance, sans en obtenir de copie.
Si vous utilisez un compilateur fourni par une distribution telle que Debian GNU/Linux, FreeBSD, GNU Ada ou AIDE, il peut s'agir doit de GCC, soit de GNAT GPL Edition.

### Comment faire pour que mon application GNAT sous Windows n'ouvre pas de fenêtre console?

Comme indiqué dans la documentation de GNAT, il faut rajouter l'option -largs -mwindows à la fin de la ligne de commande de gnatmake.

### Comment réduire la taille de mon exécutable compilé avec GNAT?

Il est possible de demander à gnatmake de supprimer les symboles additionnels utilisés pour le déverminage, en ajoutant -largs -s à la ligne de commande.