Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » fxSDK, un SDK alternatif pour écrire des add-ins
Lephenixnoir Hors ligne Administrateur Points: 24235 Défis: 170 Message

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)
  1. Suivez le tutoriel d'utilisation de GiteaPC, qui explique comment obtenir le fxSDK.

Méthode automatique avec plugin VS Code
  1. 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)
  1. 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)
  1. Compilez et installez le cross-compilateur GCC pour SuperH.
  2. 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.

VersionDateInfos supplémentaires
fxSDK 2.10.02 Avril 2023Personnalisation de l'icône Graph 90+ETutoriel d'utilisation de libfxlink
fxSDK 2.9.129 Août 2022
fxSDK 2.9.021 Août 2022Réinstallation complète nécessaire
fxSDK 2.8.017 Mai 2022
fxSDK 2.7.119 Mars 2022
fxSDK 2.7.031 Décembre 2021Collecter toutes les images d'un projet avec fxconv
fxSDK 2.6.030 Août 2021Génération de structures complexes avec fxconv
fxSDK 2.5.24 Juillet 2021
fxSDK 2.5.14 Juillet 2021
fxSDK 2.5.025 Mai 2021
fxSDK 2.4.027 Avril 2021
fxSDK 2.3.130 Janvier 2021
fxSDK 2.3.029 Janvier 2021Introduction de fxconv-metadata.txtInstructions de migration vers CMake
Séparation de libprof en fx/cg



Précédente 1, 2, 3 ··· 10 ··· 20 ··· 26, 27, 28, 29, 30, 31, 32 ··· 39, 40, 41 Suivante
Lephenixnoir Hors ligne Administrateur Points: 24235 Défis: 170 Message

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

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

# cat << EOF >> /etc/pacman.conf
[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]

Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir Hors ligne Administrateur Points: 24235 Défis: 170 Message

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

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
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir Hors ligne Administrateur Points: 24235 Défis: 170 Message

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 !
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

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
openlibm-casio: mathematical functions and support of %f-like printf's formats

Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir Hors ligne Administrateur Points: 24235 Défis: 170 Message

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

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 :
[casio]
SigLevel = Optional TrustAll
Server = https://arch.middleearth.fr/$arch


Puis faites une mise à jour des sources :
$ sudo pacman -Syyu


Une fois que c'est bon, la paquets compilés sont directement disponibles dans le repo casio :
$ paru 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 :
$ sudo pacman -S gint-devel-git
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 :
$ fxsdk new test
$ 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
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Kikoodx Hors ligne Ancien labélisateur Points: 3011 Défis: 11 Message

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.

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'


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

ouais ouais
Shadow15510 Hors ligne Administrateur Points: 5500 Défis: 18 Message

Citer : Posté le 17/05/2021 09:06 | #


C'est extrêmement puissant, bien joué !
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

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
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Shadow15510 Hors ligne Administrateur Points: 5500 Défis: 18 Message

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
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Lephenixnoir Hors ligne Administrateur Points: 24235 Défis: 170 Message

Citer : Posté le 17/05/2021 15:11 | #


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.

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 17/05/2021 15:14 | #


Lephe a écrit :
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
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir Hors ligne Administrateur Points: 24235 Défis: 170 Message

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 17/05/2021 15:18 | #


Np. C'est pas urgent

Ajouté le 18/05/2021 à 18:55 :
Kikoodx a écrit :
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.

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

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 ?
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir Hors ligne Administrateur Points: 24235 Défis: 170 Message

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 :

% fxlink -iw
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.

% giteapc install -u Lephenixnoir/fxsdk Lephenixnoir/gint # si vous avez d'autres libs listez-les ici

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 25/05/2021 23:48 | #


Mis à jour sur l'AUR et https://arch.middleearth.fr
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir Hors ligne Administrateur Points: 24235 Défis: 170 Message

Citer : Posté le 26/05/2021 12:22 | #


Yeah, c'est ça qu'on aime voir. Merci o/
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Ninestars Hors ligne Membre Points: 2461 Défis: 24 Message

Citer : Posté le 26/05/2021 19:53 | #


Excellent !
Un bon pas vers le C++
Très bonne mise à jour
Lephenixnoir Hors ligne Administrateur Points: 24235 Défis: 170 Message

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
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Précédente 1, 2, 3 ··· 10 ··· 20 ··· 26, 27, 28, 29, 30, 31, 32 ··· 39, 40, 41 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 101 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd