Page 1 of 1

[GCC4TI] Compiler ses scripts (sous Linux) avec Atom

Unread postPosted: 21 Oct 2014, 20:08
by s0r00t
Salut,

Suite à l'abandon de KTIGCC, j'ai cherché une alternative multi langages. Je me suis donc tourné vers Atom ([url]atom.io[/url]), l'alternative open-source de Sublime Text dirigée par GitHub, avec une intégration de GCC4TI. Il existe un paquet nommé "build" qui permet, en utilisant le raccourci Ctrl+Alt+B, de lancer un script de build défini. Après une heure de configuration, j'ai réussi à compiler un script C directement depuis Atom. Voici la démarche à suivre (valable aussi pour Windows) :

Sous Windows, il faudra changer le contenu du fichier .atom-build.json afin qu'il corresponde à la version de GCC4TI installée; de plus je ne suis pas sûr que la variable d'environnement TIGCC existe sous Windows.


  1. Compilez et installez GCC4TI (https://github.com/debrouxl/gcc4ti) et Atom (https://github.com/atom/atom/releases).
  2. Dans Atom, installez le paquet build.
  3. Ouvrez votre dossier de compilation (vous devrez l'ouvir à chaque fois que vous voulez compiler).
    Vous pouvez définir votre dossier comme dossier par défaut dans les options d'Atom.
  4. Créez un fichier .atom-build.json à l'intérieur contenant ceci :
    Code: Select all
    {
      "cmd" : "/usr/local/share/gcc4ti/bin/tigcc",
      "args": ["-q","-Wall","-W","-Wwrite-strings","-Os","-fomit-frame-pointer","-mregparm=5","{FILE_ACTIVE}"],
      "sh"  : false,
      "cwd" : "{FILE_ACTIVE_PATH}",
      "env" : {"TIGCC": "/usr/local/share/gcc4ti"}
    }

    Il est conseillé de changer les arguments dans l'array args, de manière à ce que tous les fichiers soient compilés avec des options convenables d'optimisation et surtout des options de librairie (-DSAVE_SCREEN, -DMIN_AMS=..., etc.) cohérentes.
  5. Profitez-en !

Pour tout problème/toute question, n'hésitez pas à me contacter ;)

PS : Si cela vous intéresse, j'ai aussi une config pour l'asm z80, mais bien plus complexe à mettre en place.

Re: [GCC4TI] Compiler ses scripts (sous Linux) avec Atom

Unread postPosted: 21 Oct 2014, 20:57
by Lionel Debroux
Bien :)

Il est même absolument indispensable de changer les arguments dans l'array args.
Il faut mettre des warnings supplémentaires (minimum -Wall -W -Wwrite-strings), des options d'optimisation (-Os/-O2/-O3 -fomit-frame-pointer -mregparm=5 et bien d'autres), sans oublier le gros paquet de define en ligne de commande pour les options du projet (-D...), de préférence les mêmes pour tous les fichiers du "projet", sinon le comportement du code généré peut être totalement incorrect.
On peut intégrer l'outil tigcc dans un script de build (c'est ce que font un certain nombre d'outils de TICT) ou à un Makefile.

de plus je ne suis pas sûr que la variable d'environnement TIGCC existe sous Windows.

Flemme de retrouver et booter une VM Windows contenant GCC4TI pour vérifier après installation, mais a priori non. L'installeur définit une clé dans la registry et enregistre le répertoire d'installation dans le PATH, mais ne définit pas de variable d'environnement TIGCC; l'IDE utilise cette clé; tprbuilder cherche tigcc.exe dans le PATH.

Re: [GCC4TI] Compiler ses scripts (sous Linux) avec Atom

Unread postPosted: 21 Oct 2014, 21:31
by s0r00t
Lionel Debroux wrote:Il faut mettre des warnings supplémentaires (minimum -Wall -W -Wwrite-strings), des options d'optimisation (-Os/-O2/-O3 -fomit-frame-pointer -mregparm=5 et bien d'autres), sans oublier le gros paquet de define en ligne de commande pour les options du projet (-D...), de préférence les mêmes pour tous les fichiers du "projet", sinon le comportement du code généré peut être totalement incorrect.


J'ai pas eu le courage de lire la doc de GCC4TI en entier, je laisse le choix à l'utilisateur de modifier le JSON :D

Re: [GCC4TI] Compiler ses scripts (sous Linux) avec Atom

Unread postPosted: 21 Oct 2014, 21:52
by Adriweb
Sympa petit tutorial :)

(J'ai amélioré un petit peu la mise en page avec des bbcodes plus appropriés, je te laisse voir :P)

Re: [GCC4TI] Compiler ses scripts (sous Linux) avec Atom

Unread postPosted: 21 Oct 2014, 21:54
by s0r00t
Oui j'ai vu, vachement plus classe :D
Je pourrais faire le même pour l'asm z80, mais c'est Linux-only et vachement plus complexe (faut compiler SPASM et WabbitSign; créer un script bash) :S

Re: [GCC4TI] Compiler ses scripts (sous Linux) avec Atom

Unread postPosted: 21 Oct 2014, 23:29
by Adriweb
s0r00t wrote:vachement plus complexe (faut compiler SPASM et WabbitSign; créer un script bash) :S

Et donc, la partie complexe, elle est où ? :D

Mais bon, je suis sérieux - Si on se met à programmer en bas-niveau, je doute qu'on ait peur d'un terminal et/ou d'un script... :)

Re: [GCC4TI] Compiler ses scripts (sous Linux) avec Atom

Unread postPosted: 21 Oct 2014, 23:45
by s0r00t
Adriweb wrote:
s0r00t wrote:vachement plus complexe (faut compiler SPASM et WabbitSign; créer un script bash) :S

Et donc, la partie complexe, elle est où ? :D

Mais bon, je suis sérieux - Si on se met à programmer en bas-niveau, je doute qu'on ait peur d'un terminal et/ou d'un script... :)


1- J'ai dû trouver la bonne version de SPASM. (moyen)
2- J'ai dû fixer les dépendances cassées de SPASM. (moyen)
3- J'ai dû trouver la bonne version de WabbitSign et la compiler. (facile)
4- J'ai dû écrire le script bash d'automatisation ET le JSON. (dur)

Eh oui, écrire le JSON pour le paquet build est énervant, les erreurs retournées ne contiennent rien d'intéressant ("Error executing <programme>").

Re: [GCC4TI] Compiler ses scripts (sous Linux) avec Atom

Unread postPosted: 21 Oct 2014, 23:51
by Adriweb
Ah mais je voulais dire, une fois que tout est trouvé, donc pour l'utilisateur final qui n'a plus qu'à suivre un tutorial :p

Re: [GCC4TI] Compiler ses scripts (sous Linux) avec Atom

Unread postPosted: 22 Oct 2014, 06:11
by Lionel Debroux
J'ai édité le premier post pour les options de compilation.

Pour un aperçu des options de compilation optimisées, voir https://github.com/debrouxl/ExtGraph/bl ... orial.html . Il y a beaucoup de possibilités, qui gagnent parfois beaucoup, mais les options par défaut doivent rester relativement génériques. Même -mregparm=5 peut poser des problèmes avec les plus vieilles librairies qui ne gèrent pas autre chose que le passage d'arguments par la pile - mais ces problèmes-là sont facilement détectables ^^