fxSDK, un SDK alternatif pour écrire des add-ins
Posté le 29/08/2014 22:00
Cette page sert d'index pour la série de topics du fxSDK.
Le fxSDK est une collection d'outils permettant de développer des add-ins pour les calculatrices Casio des séries Graph. C'est une alternative au
fx-9860G SDK et
PrizmSDK qui ne sont plus activement maintenus, et le compagnon classique de mon noyau
gint.
Index des topics
Ce projet existe depuis 2015, alors il y a pas mal de topics liés. En voici une liste complète !
Topics principaux
Installation du fxSDK
Tutoriels
Compatibilité sur calculatrice et PC
Côté PC, le fxSDK est compatible avec
Linux, Mac OS, et WSL pour Windows ; normalement tout le monde peut l'utiliser. Je teste constamment sous Linux, et WSL est un Linux donc c'est testé aussi. Je n'ai pas de Mac OS donc il peut y avoir quelques surprises, mais en général c'est l'affaire de corriger un bug ou deux.
En termes de calculatrices, le fxSDK supporte :
Calculatrices monochromes
- Graph 35+E II
- Graph 35+ USB / Graph 35+E (SH3/SH4)
- Graph 75/75+/75+E
- Graph 85/85 SD/95 (SD) (pas activement testé)
Calculatrices couleurs
- Graph 90+E / fx-CG 50
- Prizm fx-CG 10/20
Comment installer le fxSDK et coder des add-ins
Le fxSDK s'installe à partir de dépôts Git sur la
forge de Planète Casio (par exemple
Lephenixnoir/fxsdk). Il y en a un peu beaucoup, donc manuellement c'est assez long. Pour que ça aille plus vite et pour simplifier le travail des débutants, il y a un outil appelé
GiteaPC qui peut faire ça pour vous.
Si vous utilisez Windows, vous aurez besoin de WSL pour accéder à un système Linux dans Windows. Heureusement, Microsoft a fait ça bien et c'est facile à faire. Voyez le
tutoriel d'installation de WSL 2 (et l'explication rapide de
ce que WSL 2 est).
Si vous utilisez Mac OS, ouvrez l’œil en lisant les topics pour ne pas manquer les informations supplémentaires et éventuelles déviations par rapport à la procédure normale sous Linux.
Méthode automatique avec GiteaPC (plus rapide / recommandée pour les débutants)
- Suivez le tutoriel d'utilisation de GiteaPC, qui explique comment obtenir le fxSDK.
Méthode automatique avec plugin VS Code
- Yannis300307 a créé un plugin VS Code Casio Dev Tools qui fonctionne sous Windows (avec WSL) et Debian (probablement les dérivés aussi).
Méthode AUR pour les utilisateurs Arch/Manjaro/dérivés (ils se reconnaîtront)
- Dark Storm maintient MiddleArch, un dépôt de paquets précompilés qui a entre autres le fxSDK.
Méthode manuelle (plus fine / classique pour les habitués)
- Compilez et installez le cross-compilateur GCC pour SuperH.
- installez (dans cet ordre) les dépôts fxSDK, OpenLibm, fxlibc, gint ; en option, Slyvtt/µSTL_2.3.
Description sommaire du fxSDK
Pour une introduction à l'utilisation du fxSDK qui montre comment utiliser les outils pour développer un add-in, lisez plutôt les
tutoriels d'utilisation de gint. Cette section est juste une description sommaire.
Le cœur du fxSDK est un cross-compilateur GCC pour SuperH, habituellement nommé
sh-elf-gcc. Bien sûr on a avec toute la suite d'outils, dont
as,
ld,
objdump,
objcopy (entre autres). Contrairement au vieux compilateur du SDK, GCC est un compilateur moderne avec beaucoup d'options et capable de très solides optimisations.
Sur la calculatrice, c'est
le noyau gint qui fait la majorité du travail. Il remplace fxlib/libfxcg et une partie de l'OS pour vous offrir des fonctionnalités plus cool et plus rapides. Les add-ins développés avec le fxSDK utilisent gint toutes les trois lignes !
Il y a enfin plusieurs outils utiles sur le PC qui sont utilisés durant le développement ou l'utilisation des add-ins :
- fxsdk est un script shell qui permet de créer et compiler les projets sans se prendre trop la tête. Le système de compilation officiel pour les add-ins est CMake, mais un système plus ancien de Makefile est encore supporté.
- fxconv est un outil très polyvalent qui convertit à la compilation les assets (images, polices, maps....). Il permet de travailler avec des logiciels et formats de fichiers normaux sur le PC et d'avoir automatiquement un format optimisé sur la calculatrice. fxconv est extrêmement extensible et chaque projet peut ajouter des conversions personnalisées.
- fxgxa crée les fichiers g1a (format des add-ins pour Graph monochromes) et g3a (format des add-ins pour Graph couleurs) à partir des programmes compilés.
- fxlink est un outil de communication qui peut transférer des fichiers vers les Graph 35+E II et Graph 90+E en ligne de commande, mais aussi échanger interactivement avec les add-ins gint par le câble USB, et est couramment utilisé pour réaliser des captures d'écran ou captures vidéo des add-ins.
Changelog et informations techniques
Ci-dessous se trouve la liste des posts annonçant les nouvelles versions du fxSDK, ainsi que des liens vers les instructions/tutoriels supplémentaires publiés avec.
Citer : Posté le 10/05/2021 22:19 | #
Je ne connais pas vraiment la différence avec un tar.gz pour être honnête. Si le fichier AppImage embarque juste de quoi extraire, ça revient à peu près au même, la vraie différence pour moi c'est le fait de fournir des binaires. (Et puis c'est vite fait de dire « réinventer AppImage » alors que le taux d'utilisation de AppImage est certainement très minoritaire par rapport aux logiciels distribués dans une archive, qui existent depuis bieeeen plus longtemps.)
La subtilité derrière c'est de faire les mises à jour. Je ne sais même pas si fournir des binaire m'intéresse. Pour être honnête, je m'en passerais volontiers.
Citer : Posté le 12/05/2021 00:22 | #
Petit message pour le teasing (pour le moment) histoire de présenter les nouveaux paquets AUR qui tournent autour du fxsdk. Pis @RDP tant qu'à faire.
Lephe doit release une 2.4.1 qui corrige un petit bug, j'attends que ce soit publié pour pousser les modifs sur l'AUR.
Avec en prime pour tous ces paquets des améliorations de la syntaxe et des bonnes pratiques sur les pkgbuild.
Avec l'arrivée du versionnage propre des versions du fxsdk et des bibliothèques associées, je ne maintiens plus les paquets fxsdk-git et gint-git.
Je n'ai volontairement pas packagé giteapc car :
– les paquet ci-dessus suffisent à profiter de l'ensemble des bibliothèques disponibles via giteapc ;
– giteapc utilise des variables d'environnement qui sont spécifiques à l'utilisateur ;
– utiliser giteapc en même temps que les paquets peut mener à des conflits sur le système de fichiers.
Si vous souhaitez utiliser GiteaPC, je vous invite à n'installer aucun de ces paquets, et utiliser la méthode recommandée par Lephe.
Et je tease encore un peu plus, je risque de mettre en place un dépôt avec les paquets déjà construits par mes soins : plus besoin de compiler GCC poussivement pendant 20 minutes si vous avez une vieille machine : ajouter une source à votre pacman.conf devrait faire le taf pour trouver les paquet directement. Exemple envisagé :
[casio]
SigLevel = Optional
Server = https://archpkg.middleearth.fr/$repo/os/$arch
EOF
# pacman -Syu
[...]
# pacman -S fxsdk
résolution des dépendances…
recherche des conflits entre paquets…
Paquets (3) sh-elf-binutils-casio-2.36.1-1 sh-elf-gcc-casio-11.1.0-1 fxsdk-2.4.0-1
Taille totale du téléchargement : 87,85 MiB
Taille totale installée : 135,91 MiB
:: Procéder à l’installation ? [O/n]
Citer : Posté le 12/05/2021 09:36 | #
Merci ! Tu as bien fait de ne pas packager avec GiteaPC, ce n'était pas pensé pour.
Comme on a (encore) discuté de déploiement avec Darks et Breizh sur la shout l'autre jour, je ne pense pas tenter de faire des versions binaires des libs. La méthode actuelle est un peu fastidieuse (il y a beaucoup de dépôts) mais faire des releases binaires ne répond pas adéquatement au problème. Et puis si Darks en fait sur l'AUR, autant lui laisser le privilège.
J'ai réalisé l'autre jour que j'aurais pu éviter la logique de clônage et gestion des dépôts dans GiteaPC, en mettant tous les dépôts concernés en sous-module du dépôt GiteaPC et les scripts tranquilles dans le dépôt sans installation dans ~/.local ou autre. Ça fait plus de Git et moins de réinvention du gestionnaire de paquets. Maintenant que le système est en place je n'ai pas de raison d'y toucher, mais si on me fait remonter des gros problèmes de gestion du fxSDK ce sera une option.
Citer : Posté le 12/05/2021 22:49 | #
Mis à jour mon post précédent avec le lien vers les paquets correspondants. Y'a eu quelques améliorations syntaxiques en plus avant que je push
Citer : Posté le 12/05/2021 22:55 | #
Merci ! Note que OpenLibm n'est pas véritablement optionnel pour gint, il est impliqué si on active les formats %f etc dans les fonctions à la printf. L'en-tête est aussi inclus dans src/3rdparty/grisu2b_59_56/k_comp.h donc tu en as besoin pour make.
Super boulot en tous cas !
Citer : Posté le 12/05/2021 23:02 | #
Quoi qu'il arrive je considère qu'OpenLibm est requise pour build gint (c'est dans le makedepends). Si je n'utilise pas le flag %f (ni aucune autre partie qui utilise un bout d'OpenLibm), est-ce que je peux quand même compiler mon addin ?
Edit : dans ce cas de figure, je peux modifier la description d'OpenLibm en
Citer : Posté le 12/05/2021 23:05 | #
Je pourrais m'arranger pour que ce soit possible, mais actuellement ce n'est pas le cas parce que le flag -lopenlibm est ajouté inconditionnellement.
Citer : Posté le 13/05/2021 00:02 | #
Seems legit. J'ai poussé un patch du coup.
Ajouté le 13/05/2021 à 14:46 :
J'ai créé un dépôt communautaire chez moi, à l'adresse https://arch.middleearth.fr/. Ce dépôt contient les versions compilées des paquets disponibles sur l'AUR (voir message précédent). Ce qui veut dire que vous n'avez pas à vous soucier de compiler quoi que ce soit, je m'en suis occupé pour vous.
Pour l'instant, je ne supporte que l'architecture x86_64, mais peut-être que je me motiverai à supporter aarch64. Bientôt la compilation sur RaspberryPi ou PinePhone ?
Le dépôt est en phase expérimentale : j'ai setup quelques outils pour m'aider à la maintenance, mais je ne garantis pas (encore) un fonctionnement parfait. D'ailleurs je ne signe pas encore les paquets (mais ça devrait venir).
Si vous êtes sous Arch (ou Arch-based, comme Manjaro) et que vous voulez tenter l'expérience, ajoutez ceci à la fin de /etc/pacman.conf :
SigLevel = Optional TrustAll
Server = https://arch.middleearth.fr/$arch
Puis faites une mise à jour des sources :
Une fois que c'est bon, la paquets compilés sont directement disponibles dans le repo casio :
1 casio/fxsdk 2.4.0-1 [76.97KB 144.04KB]
Tools to program for the Casio fx9860 calculators
2 casio/gint 2.4.1-1 [134.17KB 488.42KB]
Alternative library and kernel for add-in development on fx-9860G and fx-CG50 under Linux
3 casio/gint-devel-git 2.4.1-1 [55.06KB 158.10KB]
Set of tools and libraries based on gcc, fxsdk and gint to build native programs for Casio calculators
4 casio/giteapc 1.1-1 [22.88KB 28.39KB]
Utility program to automatically install, build and update repositories from Planète Casio's Gitea forge.
5 casio/openlibm-casio 0.7.2-1 [126.53KB 471.66KB]
Fork of the OpenLibm math library with support for fx-9860G and fx-CG 50
6 casio/sh-elf-binutils-casio 2.36.1-3 [3.63MB 16.55MB]
GNU binary utilities for the Casio calculators SuperH processors.
7 casio/sh-elf-gcc-casio 11.1.0-3 [28.55MB 95.81MB]
The GNU Compiler Collection for the Casio calculators SuperH processors.
Pour installer la toolchain usuelle upstream, faites juste une installation classique :
résolution des dépendances…
recherche des conflits entre paquets…
Paquets (5) fxsdk-2.4.0-1 gint-2.4.1-1
sh-elf-binutils-casio-2.36.1-3
sh-elf-gcc-casio-11.1.0-3 gint-devel-git-2.4.1-1
Taille totale installée : 113,14 MiB
:: Procéder à l’installation ? [O/n]
(5/5) vérification des clés dans le trousseau [###############] 100%
(5/5) vérification de l’intégrité des paquets [###############] 100%
(5/5) chargement des fichiers des paquets [###############] 100%
(5/5) analyse des conflits entre fichiers [###############] 100%
(5/5) vérification de l’espace disque disponible [###############] 100%
:: Traitement des changements du paquet…
(1/5) installation de sh-elf-binutils-casio [###############] 100%
(2/5) installation de sh-elf-gcc-casio [###############] 100%
Dépendances optionnelles pour sh-elf-gcc-casio
isl: integer set library [installé]
(3/5) installation de fxsdk [###############] 100%
Dépendances optionnelles pour fxsdk
gint: alternative library and kernel for add-in development on
fx-9860G and fx-CG50 [en attente]
mkg3a: a tool to create Casio FX-CG addon files [installé]
udisks2: disk management service, for auto-mount of calculator
[installé]
(4/5) installation de gint [###############] 100%
Dépendances optionnelles pour gint
openlibm-casio: mathematical functions
(5/5) installation de gint-devel-git [###############] 100%
:: Exécution des crochets de post-transaction…
(1/1) Arming ConditionNeedsUpdate...
On peut alors créer un projet de test et le compiler :
$ cd test
$ fxsdk build-cg
-- The C compiler identification is GNU 11.1.0
-- The CXX compiler identification is GNU 11.1.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/sh-elf-gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/sh-elf-g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Gint: TRUE (found suitable version "2.4.0-14", minimum required is "2.1")
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/test/build-cg
Scanning dependencies of target myaddin
[ 33%] Building C object CMakeFiles/myaddin.dir/src/main.c.obj
[ 66%] Building FXCONV object CMakeFiles/myaddin.dir/assets-cg/example.png
[100%] Linking C executable myaddin
[100%] Built target myaddin
Je suis preneur de retours si vous avez des soucis avec ces différents paquets
@RDP là aussi
Citer : Posté le 13/05/2021 15:23 | #
Génial DS ! Est-ce que tu penses pouvoir fournir mkg3a aussi ? Ça permettrait d'avoir la toolchain entière pour la CI si j'ai rien raté.
Ajouté le 13/05/2021 à 15:47 :
J'ai suivi les instructions avec un Manjaro à jour, j'ai des erreurs liées à libisl.so.23 et bien d'autres au build du projet test.
Compiler: /usr/bin/sh-elf-gcc
Build flags:
Id flags:
The output was:
1
/usr/libexec/gcc/sh3eb-elf/11.1.0/cc1: error while loading shared libraries: libisl.so.23: cannot open shared object file: No such file or directory
Compiling the C compiler identification source file "CMakeCCompilerId.c" failed.
Compiler: /usr/bin/sh-elf-gcc
Build flags:
Id flags: -c
The output was:
1
/usr/libexec/gcc/sh3eb-elf/11.1.0/cc1: error while loading shared libraries: libisl.so.23: cannot open shared object file: No such file or directory
Compiling the C compiler identification source file "CMakeCCompilerId.c" failed.
Compiler: /usr/bin/sh-elf-gcc
Build flags:
Id flags: -Aa
The output was:
1
/usr/libexec/gcc/sh3eb-elf/11.1.0/cc1: error while loading shared libraries: libisl.so.23: cannot open shared object file: No such file or directory
Compiling the C compiler identification source file "CMakeCCompilerId.c" failed.
Compiler: /usr/bin/sh-elf-gcc
Build flags:
Id flags: -D__CLASSIC_C__
The output was:
1
/usr/libexec/gcc/sh3eb-elf/11.1.0/cc1: error while loading shared libraries: libisl.so.23: cannot open shared object file: No such file or directory
Compiling the C compiler identification source file "CMakeCCompilerId.c" failed.
Compiler: /usr/bin/sh-elf-gcc
Build flags:
Id flags: --target=arm-arm-none-eabi;-mcpu=cortex-m3
The output was:
1
sh-elf-gcc: error: unrecognized command-line option '--target=arm-arm-none-eabi'
sh-elf-gcc: error: unrecognized command-line option '-mcpu=cortex-m3'
Compiling the C compiler identification source file "CMakeCCompilerId.c" failed.
Compiler: /usr/bin/sh-elf-gcc
Build flags:
Id flags:
The output was:
1
/usr/libexec/gcc/sh3eb-elf/11.1.0/cc1: error while loading shared libraries: libisl.so.23: cannot open shared object file: No such file or directory
Compiling the C compiler identification source file "CMakeCCompilerId.c" failed.
Compiler: /usr/bin/sh-elf-gcc
Build flags:
Id flags: -c
The output was:
1
/usr/libexec/gcc/sh3eb-elf/11.1.0/cc1: error while loading shared libraries: libisl.so.23: cannot open shared object file: No such file or directory
Compiling the C compiler identification source file "CMakeCCompilerId.c" failed.
Compiler: /usr/bin/sh-elf-gcc
Build flags:
Id flags: -Aa
The output was:
1
/usr/libexec/gcc/sh3eb-elf/11.1.0/cc1: error while loading shared libraries: libisl.so.23: cannot open shared object file: No such file or directory
Compiling the C compiler identification source file "CMakeCCompilerId.c" failed.
Compiler: /usr/bin/sh-elf-gcc
Build flags:
Id flags: -D__CLASSIC_C__
The output was:
1
/usr/libexec/gcc/sh3eb-elf/11.1.0/cc1: error while loading shared libraries: libisl.so.23: cannot open shared object file: No such file or directory
Compiling the C compiler identification source file "CMakeCCompilerId.c" failed.
Compiler: /usr/bin/sh-elf-gcc
Build flags:
Id flags: --target=arm-arm-none-eabi;-mcpu=cortex-m3
The output was:
1
sh-elf-gcc: error: unrecognized command-line option '--target=arm-arm-none-eabi'
sh-elf-gcc: error: unrecognized command-line option '-mcpu=cortex-m3'
Checking whether the C compiler is IAR using "" did not match "IAR .+ Compiler":
sh-elf-gcc: fatal error: no input files
compilation terminated.
Checking whether the C compiler is IAR using "" did not match "IAR .+ Compiler":
sh-elf-gcc: fatal error: no input files
compilation terminated.
Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: /usr/bin/sh-elf-g++
Build flags:
Id flags:
The output was:
1
/usr/libexec/gcc/sh3eb-elf/11.1.0/cc1plus: error while loading shared libraries: libisl.so.23: cannot open shared object file: No such file or directory
Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: /usr/bin/sh-elf-g++
Build flags:
Id flags: -c
The output was:
1
/usr/libexec/gcc/sh3eb-elf/11.1.0/cc1plus: error while loading shared libraries: libisl.so.23: cannot open shared object file: No such file or directory
Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: /usr/bin/sh-elf-g++
Build flags:
Id flags: --c++
The output was:
1
sh-elf-g++: error: unrecognized command-line option '--c++'
Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: /usr/bin/sh-elf-g++
Build flags:
Id flags: --ec++
The output was:
1
sh-elf-g++: error: unrecognized command-line option '--ec++'; did you mean '-Weffc++'?
Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: /usr/bin/sh-elf-g++
Build flags:
Id flags: --target=arm-arm-none-eabi;-mcpu=cortex-m3
The output was:
1
sh-elf-g++: error: unrecognized command-line option '--target=arm-arm-none-eabi'
sh-elf-g++: error: unrecognized command-line option '-mcpu=cortex-m3'
Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: /usr/bin/sh-elf-g++
Build flags:
Id flags:
The output was:
1
/usr/libexec/gcc/sh3eb-elf/11.1.0/cc1plus: error while loading shared libraries: libisl.so.23: cannot open shared object file: No such file or directory
Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: /usr/bin/sh-elf-g++
Build flags:
Id flags: -c
The output was:
1
/usr/libexec/gcc/sh3eb-elf/11.1.0/cc1plus: error while loading shared libraries: libisl.so.23: cannot open shared object file: No such file or directory
Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: /usr/bin/sh-elf-g++
Build flags:
Id flags: --c++
The output was:
1
sh-elf-g++: error: unrecognized command-line option '--c++'
Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: /usr/bin/sh-elf-g++
Build flags:
Id flags: --ec++
The output was:
1
sh-elf-g++: error: unrecognized command-line option '--ec++'; did you mean '-Weffc++'?
Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: /usr/bin/sh-elf-g++
Build flags:
Id flags: --target=arm-arm-none-eabi;-mcpu=cortex-m3
The output was:
1
sh-elf-g++: error: unrecognized command-line option '--target=arm-arm-none-eabi'
sh-elf-g++: error: unrecognized command-line option '-mcpu=cortex-m3'
Checking whether the CXX compiler is IAR using "" did not match "IAR .+ Compiler":
sh-elf-g++: fatal error: no input files
compilation terminated.
Checking whether the CXX compiler is IAR using "" did not match "IAR .+ Compiler":
sh-elf-g++: fatal error: no input files
compilation terminated.
Detecting C compiler ABI info failed to compile with the following output:
Change Dir: /home/kdx/projects/test/build-fx/CMakeFiles/CMakeTmp
Run Build Command(s):/usr/bin/make -f Makefile cmTC_2b729/fast && /usr/bin/make -f CMakeFiles/cmTC_2b729.dir/build.make CMakeFiles/cmTC_2b729.dir/build
make[1]: Entering directory '/home/kdx/projects/test/build-fx/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_2b729.dir/CMakeCCompilerABI.c.obj
/usr/bin/sh-elf-gcc -DTARGET_FX9860G -mb -ffreestanding -nostdlib -Wa,--dsp -o CMakeFiles/cmTC_2b729.dir/CMakeCCompilerABI.c.obj -c /usr/share/cmake-3.20/Modules/CMakeCCompilerABI.c
/usr/libexec/gcc/sh3eb-elf/11.1.0/cc1: error while loading shared libraries: libisl.so.23: cannot open shared object file: No such file or directory
make[1]: *** [CMakeFiles/cmTC_2b729.dir/build.make:78: CMakeFiles/cmTC_2b729.dir/CMakeCCompilerABI.c.obj] Error 1
make[1]: Leaving directory '/home/kdx/projects/test/build-fx/CMakeFiles/CMakeTmp'
make: *** [Makefile:127: cmTC_2b729/fast] Error 2
Determining if the C compiler works failed with the following output:
Change Dir: /home/kdx/projects/test/build-fx/CMakeFiles/CMakeTmp
Run Build Command(s):/usr/bin/make -f Makefile cmTC_d3ea0/fast && /usr/bin/make -f CMakeFiles/cmTC_d3ea0.dir/build.make CMakeFiles/cmTC_d3ea0.dir/build
make[1] : on entre dans le répertoire « /home/kdx/projects/test/build-fx/CMakeFiles/CMakeTmp »
Building C object CMakeFiles/cmTC_d3ea0.dir/testCCompiler.c.obj
/usr/bin/sh-elf-gcc -DTARGET_FX9860G -mb -ffreestanding -nostdlib -Wa,--dsp -o CMakeFiles/cmTC_d3ea0.dir/testCCompiler.c.obj -c /home/kdx/projects/test/build-fx/CMakeFiles/CMakeTmp/testCCompiler.c
/usr/libexec/gcc/sh3eb-elf/11.1.0/cc1: error while loading shared libraries: libisl.so.23: cannot open shared object file: No such file or directory
make[1]: *** [CMakeFiles/cmTC_d3ea0.dir/build.make:78 : CMakeFiles/cmTC_d3ea0.dir/testCCompiler.c.obj] Erreur 1
make[1] : on quitte le répertoire « /home/kdx/projects/test/build-fx/CMakeFiles/CMakeTmp »
make: *** [Makefile:127 : cmTC_d3ea0/fast] Erreur 2
Citer : Posté le 17/05/2021 09:06 | #
C'est extrêmement puissant, bien joué !
Citer : Posté le 17/05/2021 09:10 | #
Mmm, il doit manquer les dépendances à la libisl. Chelou, il me semblait l'avoir ajoutée pourtant <_<
Je vais checker ça ce soir (pis mettre en place un setup de build + tests correct, ie automatique).
Au passage @Lephenixnoir, tu me confirme que gintctl version 2.3.0 compile correctement avec gint 2.3.* ? Et donc que je pourrais m'en servir comme support pour vérifier que tout est ok une fois l'installation terminée.
Merci Shadow, c'est le but après tout
Citer : Posté le 17/05/2021 09:12 | #
J'ai réinstallé Gint, dans l'espoir de reprendre quelques vieux jeux xD je sais pas si je vais réellement réussir à me remettre dedans, mais je suis content d'avoir à nouveau Gint
Citer : Posté le 17/05/2021 15:11 | #
La version CG oui. Si ça compile tu devrais être bon (puis comme toutes les libs du monde sont impliquées dans la compilation de gintctl ça te donnera une bonne idée). La version FX il semble y avoir une image perdue.
Citer : Posté le 17/05/2021 15:14 | #
puis comme toutes les libs du monde sont impliquées dans la compilation de gintctl ça te donnera une bonne idée
C'est bien pour ça que je compte en faire une sorte de test d'intégration
Merci pour l'info. Si à l'occas' tu trouve le temps de tagger une 2.3.1 qui compile aussi sur FX, ça me permettra de tester les deux cas de figure
Citer : Posté le 17/05/2021 15:16 | #
Ouais je devrais rajouter des tags, désolé, c'est moins régulier sur gintctl. Ce sera sans doute 2.4.x direct par contre.
Citer : Posté le 17/05/2021 15:18 | #
Np. C'est pas urgent
Ajouté le 18/05/2021 à 18:55 :
Génial DS ! Est-ce que tu penses pouvoir fournir mkg3a aussi ? Ça permettrait d'avoir la toolchain entière pour la CI si j'ai rien raté
J'ai ajouté mkg3a dans le dépot.
Merci pour le signalement, j'avais en effet oublié d'ajouter ISL comme dépendance pour gint. C'est corrigé, et j'ai ajouté le paquet dans le dépot.
Tu peux pacman -Syu et me dire si c'est ok ?
Citer : Posté le 25/05/2021 22:30 | #
Nouvelle version : fxSDK 2.5.0
Release associée de gint : gint 2.5.0
Plusieurs choses sympa aujourd'hui !
• Ajouté les conversions personalisées à fxconv pour les projets CMake (un oubli de la version précédente), telles que décrites dans les tutoriels d'utilisation de gint.
• Ajouté le mode interactif de fxlink pour communiquer en USB avec la calculatrice !
• Une vraie libc est maintenant en production, et on espère permettra même d'utiliser la lib C++ dans le futur (pas trop lointain) !
Communication USB avec fxlink
Les détails sur l'utilisation du module USB arriveront dans le changelog gint pour cette version. Côté PC il suffit de lancer fxlink -iw et fxlink se met automatiquement à l'écoute de messages provenant de la calculatrice. Il y a plusieurs types de message, et selon le type les données peuvent être affichées dans le terminal (texte) ou enregistrées automatiquement dans des fichiers (images et données brutes).
Voilà par un exemple des tests avec gintctl :
Connected to 1:14, starting test.
New message (v1.0): application 'fxlink', type 'image', size 177420 bytes
Got 2004 bytes of message data!
Got 2048 bytes of message data!
Got 2048 bytes of message data!
(...)
Got 1336 bytes of message data!
Successfully read 177420 bytes
Saved image (396x224, format=0) to './fxlink-image-2021.04.25-22h15-1.png'
Disconnected, leaving.
Une vraie lib standard
Le langage C a une bibliothèque standard (libc) qui fournit des fonctions que tout système de développement C est supposé fournir. Jusqu'ici, gint fournissait quelques-unes de ces fonctions, mais sans plus. Memallox avait porté une libc existante, Newlib, mais le port n'est plus maintenu et je crois qu'il est instable.
Grâce aux bonnes idées de Yatis et un peu de coopération récemment, on a commencé à coder une version de la libc adaptée spécifiquement pour les calculatrices, qui s'appelle fxlibc. Avec ce qui est codé aujourd'hui, vous pouvez déjà #include <string.h> (au lieu de <gint/std/string.h>) et utiliser plus librement les fonctions standard, car beaucoup ont été implémentées qui n'était pas disponibles avant. La liste exacte est ici.
Les fonctions standard codées par gint sont en train d'être déplacées vers la libc, et dans le futur la séparation sera bien propre. Lorsque la libc sera assez complète, on devrait pouvoir s'en servir pour compiler une lib standard C++ (une externe cette fois-ci, on ne la recode pas !) et proposer du C++ vraiment utile.
Instructions de mise à jour
Si vous utilisez GiteaPC, mettez à jour avec giteapc install -u. fxlibc est maintenant une dépendance de gint donc elle devrait s'installer toute seule.
Si vous utilisez le fxSDK avec une installation manuelle, vous devrez compiler fxlibc (ce qui prend deux lignes, vraiment), et aussi mettre à jour OpenLibm dont j'ai raffiné le portage et récupéré la dernière version.
1. Mettez à jour OpenLibm.
2. Compilez et installez fxlibc (il suffit de copier/coller les commandes de giteapc.make).
3. Mettez à jour le fxSDK et gint comme d'habitude.
Citer : Posté le 25/05/2021 23:48 | #
Mis à jour sur l'AUR et https://arch.middleearth.fr
Citer : Posté le 26/05/2021 12:22 | #
Yeah, c'est ça qu'on aime voir. Merci o/
Citer : Posté le 26/05/2021 19:53 | #
Excellent !
Un bon pas vers le C++
Très bonne mise à jour
Citer : Posté le 26/05/2021 20:14 | #
Tu es mon lobby C++ et honnêtement si ça marche ce sera un grand pas en avant