Posté le 15/07/2017 13:54
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 235 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
Citer : Posté le 26/01/2021 16:00 | #
Ah ! Tu pourrais obtenir la compilation avec CMake en utilisant la branche dev du fxSDK. Mais comme tu n'as (je pense) pas besoin de toutes les nouveautés juste quand elles sortent, tu peux faire plus simple et utiliser la branche master partout (donc git checkout master dans gint et ensuite tu réinstalles). La branche master te donne les releases donc tu seras sûr d'éviter les dé-synchronisations entre les différents outils.
(Dans le passé je n'ai pas toujours bien géré ça et c'est sans doute pour ça que tu es sur dev. Je fais plus attention maintenant, promis !)
Citer : Posté le 26/01/2021 16:05 | #
j'ai recompilé gint mais j'ai toujours l'erreur
Citer : Posté le 26/01/2021 17:23 | #
Une étape a du mal se passer. Peux-tu lancer la commande suivante, qui va chercher dans la version installée de gint la liste des types autorisés ?
typedef union
{
/* No argument, returns either TIMER_CONTINUE or TIMER_STOP */
int (*v)(void);
/* Single integer argument */
int (*i)(int);
/* Single pointer argument, cv-qualified as needed */
int (*pv) (void *);
int (*pVv) (volatile void *);
int (*pCv) (const void *);
int (*pCVv)(volatile const void *);
/* Integer pointer argument, cv-qualified as needed */
int (*pi) (int *);
int (*pVi) (volatile int *);
int (*pCi) (const int *);
int (*pCVi)(volatile const int *);
} GTRANSPARENT timer_callback_t;
Citer : Posté le 26/01/2021 20:40 | #
typedef union
{
/* No argument, returns either TIMER_CONTINUE or TIMER_STOP */
int (*v)(void);
/* Single integer argument */
int (*i)(int);
/* Single pointer argument, cv-qualified as needed */
int (*pv) (void *);
int (*pVv) (volatile void *);
int (*pCv) (const void *);
int (*pCVv)(volatile const void *);
/* Integer pointer argument, cv-qualified as needed */
int (*pi) (int *);
int (*pVi) (volatile int *);
int (*pCi) (const int *);
int (*pCVi)(volatile const int *);
} GTRANSPARENT timer_callback_t;
Ajouté le 26/01/2021 à 20:42 :
mon type est
Citer : Posté le 26/01/2021 20:44 | #
Comme tu peux le voir, ta version est à jour et ton type est supporté. Il y a cette ligne qui le propose :
Est-ce que tu peux me montrer la commande exacte qui est lancée durant la compilation ?
Sinon il faudrait que je puisse tester ton code, est-ce que tu peux le pousser sur Gitea ou me partager une archive du dossier du projet ?
Citer : Posté le 26/01/2021 20:48 | #
j'ai fais
git pull
make -B
make install
Citer : Posté le 26/01/2021 21:00 | #
Je parlais de la commande utilisée durant la compilation de ton add-in : quand tu fais fxsdk build-fx ou make all-fx, tu dois bien avoir une commande avant l'erreur que tu m'as montré ici.
Citer : Posté le 26/01/2021 21:23 | #
j'ai utilisé fxsdk build-fx
Ajouté le 26/01/2021 à 21:24 :
j'ai testé make all-fx et l'erreur ne change pas
Citer : Posté le 26/01/2021 21:25 | #
Bien sûr que l'erreur ne change pas, ces deux commandes font la même chose. La commande que je veux voir n'est pas celle-là (que je connais bien) c'est celle que make a utilisé pour lancer GCC. Un petit effort, c'est dans le tutoriel tout ça, expliqué point par point.
Citer : Posté le 26/01/2021 21:26 | #
j’utilise sh-elf-g++
Ajouté le 26/01/2021 à 21:39 :
# fxSDK project configuration file for folia
#---
# Project name, should be at most 8 bytes long.
# (You can also specify NAME_G1A or NAME_G3A to override individually.)
NAME := folia
# Internal name, should be '@' followed by at most 7 uppercase letters.
# WARNING: If this convention is not followed, the add-in might not appear in
# the main menu of the calculator!
INTERNAL := @foliaeg
# Output file name. The default is to take <NAME>, replace spaces with dashes,
# and add .g1a (or .g3a). You can specify a different folder if you want.
TARGET_FX :=
TARGET_CG :=
# fx-9860G icon location
ICON_FX = assets-fx/icon-fx.png
# fx-CG 50 icon locations
ICON_CG_UNS = assets-cg/icon-cg-uns.png
ICON_CG_SEL = assets-cg/icon-cg-sel.png
#---
# Toolchain selection
#---
# Toolchain for fx9860g. Please see also CFLAGS_FX below.
TOOLCHAIN_FX := sh-elf
# Toolchain for fxcg50. Please see also CFLAGS_CG below.
TOOLCHAIN_CG := sh-elf
#---
# Compiler flags
#---
# Base compiler flags for the fxSDK, you usually want to keep these.
CFLAGS := -mb -ffreestanding -nostdlib -fstrict-volatile-bitfields
# Platform-specific compiler flags.
# <> If you are using sh3eb-elf, use -m3. (You can do this on both FX and CG.)
# <> If you are using sh4eb-elf, use -m4-nofpu. (Not ideal on FX but works.)
# <> If you are using sh4eb-nofpu-elf, then your compiler will likely use the
# FPU and cause problems on the calculator. Consider another configuration.
# <> If you are using an sh-elf with several targets, specify whichever you
# support. I recommend -m3 on FX and -m4-nofpu on CG.
# Please see also TOOLCHAIN_FX and TOOLCHAIN_CG above.
CFLAGS_FX := -D FX9860G -m3
CFLAGS_CG := -D FXCG50 -m4-nofpu
# Additional compiler flags, change to your own taste!
CFLAGS += -Wall -Wextra -Wno-missing-field-initializers -Os
# Include paths. Add one -I option for each folder from which you want to
# be able to include files with #include<>. The Makefile provides a variable
# GCC_INCLUDE_FX/GCC_INCLUDE_CG that represents the default include folder,
# which is useful for some libraries such as OpenLibm.
INCLUDE_FX = -I include
INCLUDE_CG = -I include
# Libraries. Add one -l option for each library you are using, and also
# suitable -L options if you have library files in custom folders. To use
# fxlib, add libfx.a to the project directory and use "-L . -lfx".
LIBS_FX :=
LIBS_CG :=
# Base linker flags for the fxSDK, you usually want to keep these.
LDFLAGS_FX := -T fx9860g.ld -lgint-fx $(LIBS_FX) -lgint-fx -lgcc
LDFLAGS_CG := -T fxcg50.ld -lgint-cg $(LIBS_CG) -lgint-cg -lgcc
# Additional linker flags, if you need any.
LDFLAGS :=
# Additional platform-specific linker flags.
LDFLAGS_FX += -Wl,-Map=build-fx/map
LDFLAGS_CG += -Wl,-Map=build-cg/map
#---
# File conversion parameters
#---
# Here you can add fxconv options for each converted file, individually.
# The syntax is "<type>.<file>". For example, to specify the parameters for a
# font named "hexa.png", you might write:
# Default Makefile for fxSDK add-ins. This file was probably copied there by
# the [fxsdk] program.
#---
#
# Configuration
#
include project.cfg
# Compiler flags
CFLAGSFX = $(CFLAGS) $(CFLAGS_FX) $(INCLUDE_FX)
CFLAGSCG = $(CFLAGS) $(CFLAGS_CG) $(INCLUDE_CG)
# Linker flags
LDFLAGSFX := $(LDFLAGS) $(LDFLAGS_FX)
LDFLAGSCG := $(LDFLAGS) $(LDFLAGS_CG)
# Dependency list generation flags
depflags = -MMD -MT $@ -MF $(@:.o=.d) -MP
# ELF to binary flags
BINFLAGS := -R .bss -R .gint_bss
# G1A and G3A generation flags
NAME_G1A ?= $(NAME)
NAME_G3A ?= $(NAME)
G1AF := -i "$(ICON_FX)" -n "$(NAME_G1A)" --internal="$(INTERNAL)"
G3AF := -n basic:"$(NAME_G3A)" -i uns:"$(ICON_CG_UNS)" -i sel:"$(ICON_CG_SEL)"
ifeq "$(TOOLCHAIN_FX)" ""
TOOLCHAIN_FX := sh3eb-elf
endif
ifeq "$(TOOLCHAIN_CG)" ""
TOOLCHAIN_CG := sh4eb-elf
endif
# fxconv flags
FXCONVFX := --fx --toolchain=$(TOOLCHAIN_FX)
FXCONVCG := --cg --toolchain=$(TOOLCHAIN_CG)
# Determine the compiler install and include path
g++_BASE_FX := $(shell $(TOOLCHAIN_FX)-g++ --print-search-dirs | grep install | sed 's/install: //')
g++_BASE_CG := $(shell $(TOOLCHAIN_CG)-g++ --print-search-dirs | grep install | sed 's/install: //')
g++_INCLUDE_FX := $(g++_BASE_FX)/include
g++_INCLUDE_CG := $(g++_BASE_CG)/include
#
# File listings
#
NULL :=
TARGET := $(subst $(NULL) $(NULL),-,$(NAME))
ifeq "$(TARGET_FX)" ""
TARGET_FX := $(TARGET).g1a
endif
ifeq "$(TARGET_CG)" ""
TARGET_CG := $(TARGET).g3a
endif
ELF_FX := build-fx/$(shell basename "$(TARGET_FX)" .g1a).elf
BIN_FX := $(ELF_FX:.elf=.bin)
ELF_CG := build-cg/$(shell basename "$(TARGET_CG)" .g3a).elf
BIN_CG := $(ELF_CG:.elf=.bin)
# Source files
src := $(wildcard src/*.[csS] \
src/*/*.[csS] \
src/*/*/*.[csS] \
src/*/*/*/*.[csS])
assets-fx := $(wildcard assets-fx/*/*)
assets-cg := $(wildcard assets-cg/*/*)
# Object files
obj-fx := $(src:%=build-fx/%.o) \
$(assets-fx:assets-fx/%=build-fx/assets/%.o)
obj-cg := $(src:%=build-cg/%.o) \
$(assets-cg:assets-cg/%=build-cg/assets/%.o)
# Additional dependencies
deps-fx := $(ICON_FX)
deps-cg := $(ICON_CG_UNS) $(ICON_CG_SEL)
# All targets
all :=
ifneq "$(wildcard build-fx)" ""
all += all-fx
endif
ifneq "$(wildcard build-cg)" ""
all += all-cg
endif
#
# Build rules
#
all: $(all)
all-fx: $(TARGET_FX)
all-cg: $(TARGET_CG)
$(TARGET_FX): $(obj-fx) $(deps-fx)
@ mkdir -p $(dir $@)
$(TOOLCHAIN_FX)-g++ -o $(ELF_FX) $(obj-fx) $(CFLAGSFX) $(LDFLAGSFX)
$(TOOLCHAIN_FX)-objcopy -O binary $(BINFLAGS) $(ELF_FX) $(BIN_FX)
fxg1a $(BIN_FX) -o $@ $(G1AF)
$(TARGET_CG): $(obj-cg) $(deps-cg)
@ mkdir -p $(dir $@)
$(TOOLCHAIN_CG)-g++ -o $(ELF_CG) $(obj-cg) $(CFLAGSCG) $(LDFLAGSCG)
$(TOOLCHAIN_CG)-objcopy -O binary $(BINFLAGS) $(ELF_CG) $(BIN_CG)
mkg3a $(G3AF) $(BIN_CG) $@
# C sources
build-fx/%.c.o: %.c
@ mkdir -p $(dir $@)
$(TOOLCHAIN_FX)-g++ -c $< -o $@ $(CFLAGSFX) $(depflags)
build-cg/%.c.o: %.c
@ mkdir -p $(dir $@)
$(TOOLCHAIN_CG)-g++ -c $< -o $@ $(CFLAGSCG) $(depflags)
# Assembler sources
build-fx/%.s.o: %.s
@ mkdir -p $(dir $@)
$(TOOLCHAIN_FX)-g++ -c $< -o $@
build-cg/%.s.o: %.s
@ mkdir -p $(dir $@)
$(TOOLCHAIN_CG)-g++ -c $< -o $@
# Preprocessed assembler sources
build-fx/%.S.o: %.S
@ mkdir -p $(dir $@)
$(TOOLCHAIN_FX)-g++ -c $< -o $@ $(INCLUDE_FX)
build-cg/%.S.o: %.S
@ mkdir -p $(dir $@)
$(TOOLCHAIN_CG)-g++ -c $< -o $@ $(INCLUDE_CG)
# Images
build-fx/assets/img/%.o: assets-fx/img/%
@ mkdir -p $(dir $@)
fxconv --bopti-image $< -o $@ $(FXCONVFX) name:img_$(basename $*) $(IMG.$*)
build-cg/assets/img/%.o: assets-cg/img/%
@ mkdir -p $(dir $@)
fxconv --bopti-image $< -o $@ $(FXCONVCG) name:img_$(basename $*) $(IMG.$*)
# Fonts
build-fx/assets/fonts/%.o: assets-fx/fonts/%
@ mkdir -p $(dir $@)
fxconv -f $< -o $@ $(FXCONVFX) name:font_$(basename $*) $(FONT.$*)
build-cg/assets/fonts/%.o: assets-cg/fonts/%
@ mkdir -p $(dir $@)
fxconv -f $< -o $@ $(FXCONVCG) name:font_$(basename $*) $(FONT.$*)
# Binaries
build-fx/assets/bin/%.o: assets-fx/bin/%
@ mkdir -p $(dir $@)
fxconv -b $< -o $@ $(FXCONVFX) name:bin_$(basename $*) $(BIN.$*)
build-cg/assets/bin/%.o: assets-cg/bin/%
@ mkdir -p $(dir $@)
fxconv -b $< -o $@ $(FXCONVCG) name:bin_$(basename $*) $(BIN.$*)
# Custom conversions
build-fx/assets/%.o: assets-fx/%
@ mkdir -p $(dir $@)
fxconv --custom $< -o $@ $(FXCONVFX) type:$(subst /,,$(dir $*)) name:$(subst /,_,$(basename $*))
build-cg/assets/%.o: assets-cg/%
@ mkdir -p $(dir $@)
fxconv --custom $< -o $@ $(FXCONVCG) type:$(subst /,,$(dir $*)) name:$(subst /,_,$(basename $*))
#
# Cleaning and utilities
#
# Dependency information
-include $(shell find build* -name *.d 2> /dev/null)
build-fx/%.d: ;
build-cg/%.d: ;
.PRECIOUS: build-fx build-cg build-fx/%.d build-cg/%.d %/
clean-fx:
@ rm -rf build-fx/
clean-cg:
@ rm -rf build-cg/
distclean-fx: clean-fx
@ rm -f $(TARGET_FX)
distclean-cg: clean-cg
@ rm -f $(TARGET_CG)
clean: clean-fx clean-cg
distclean: distclean-fx distclean-cg
install-fx: $(TARGET_FX)
p7 send -f $<
install-cg: $(TARGET_CG)
@ while [[ ! -h /dev/Prizm1 ]]; do sleep 0.25; done
@ while ! mount /dev/Prizm1; do sleep 0.25; done
@ rm -f /mnt/prizm/$<
@ cp $< /mnt/prizm
@ umount /dev/Prizm1
@- eject /dev/Prizm1
.PHONY: all all-fx all-cg clean distclean install-fx install-cg
Ajouté le 27/01/2021 à 13:11 :
mon erreur a changé avec la nouvelle version de gint!
maintenant le type existe plus
Ajouté le 27/01/2021 à 13:18 :
l'erreur est revenue
Citer : Posté le 10/02/2021 18:50 | #
La refacto des dépots a cassé toutes les images des tutos
Citer : Posté le 10/02/2021 20:35 | #
Je n'ai pas touché au tutoriel depuis la publication du dernier épisode. J'ai commencé en local le passage à CMake, mais rien n'a été publié. Les images marchent toujours très bien chez moi - est-ce que tu peux isoler plus précisément ton problème ?
Citer : Posté le 10/02/2021 20:39 | #
Meh. C'est revenu, et j'ai pas touché à mes extensions. Chelou. Anyway…
Citer : Posté le 06/03/2021 13:49 | #
Merci pour ce tutoriel !
Pour l'instant j'ai codé un Dumb Clicker utilisant une police externe et affichant une image. C'est tout simple, mais sans ce tutoriel et votre aide je n'aurais jamais réussi à aller jusqu'ici <3
Citer : Posté le 06/03/2021 13:51 | #
Avec plaisir ! Merci pour tes retours sympa... et le retour de Dumb Clicker DX ? x3
Citer : Posté le 14/03/2021 19:18 | #
J'ai une erreur dans le premier projet, après l'avoir fait quand je tape fxsdk build-fx il me met une erreur qui ressemble à "no rule to make target all fx" et j'ai bien tout installer avec gitea pc. (Aussi je suis sous UBUNTU WSL, mais je pense que ça ne pose pas de probleme)
(Pas de commentaires dans l'autre topic !)
Le système de compilation a changé récemment (le tutoriel n'est pas tout à fait à jour parce qu'il faut que je réécrive l'historique du dépôt et c'est plus facile à dire qu'à faire).
Normalement dans ton projet, que tu crées avec fxsdk new, tu dois avoir un CMakeLists.txt au lieu du Makefile. Est-ce que c'est bien le cas ?
Citer : Posté le 14/03/2021 19:41 | #
Oui c'est bien le cas
Citer : Posté le 14/03/2021 20:26 | #
Dans ce cas fxsdk build-fx doit d'abord lancer CMake puis make, et dans ce cas le "target all-fx" ne devrait pas exister.
Est-ce que ton fxSDK est à jour ? Tu peux le savoir en tapant fxsdk tout seul, et voir si CMake est mentionné.
usage: fxsdk (new|build|build-fx|build-cg|send|send-fx|send-cg) [ARGUMENTS...]
This program is a command-line helper for the fxSDK, a set of tools used in
conjunction with gint to develop add-ins for CASIO fx-9860G and fx-CG 50.
fxsdk new <FOLDER> [--makefile|--cmake] [<NAME>]
Create a new project in the specified folder. The default build system is
CMake. Project name can be specified now or in the project files later.
fxsdk (build|build-fx|build-cg) [-c] [-s] [--] [<ARGS>...]
Build the current project for fx-9860G (usually for .g1a add-ins) or fx-CG 50
(usually for .g3a add-ins). The first form compiles in every existing build
folder, and configures for both if none exists.
With -c, reconfigure but don't build (CMake only).
With -s, also sends the resulting program to the calculator.
Other arguments are passed to CMake (if using -c) or make (otherwise). You
can pass -c or -s to CMake/make by specifying --.
fxsdk (send|send-fx|send-cg)
Sends the target file to the calculator. Uses p7 (which must be installed
externally) for fx-9860G. Currently not implemented for fx-CG 50, as it
requires detecting and mounting the calculator (same for the Graph 35+E II).
Citer : Posté le 14/03/2021 20:36 | #
Oui, Cmake est mentionné et quand je crée un nouveau projet avec "fxsdk new" CMake est mentionné aussi
Citer : Posté le 14/03/2021 20:38 | #
Je suis confus alors ! Tout devrait être bon. Est-ce que tu lances bien fxsdk build-fx depuis le dossier du projet complet au lieu du dossier build-fx ? Le fxSDK cherche un CMakeLists.txt dans le dossier courant pour déterminer si le projet a été créé avec CMake ou make, donc si tu changes de dossier il ne s'y retrouvera plus.
Citer : Posté le 14/03/2021 20:41 | #
Ah problème résolue, je n'avais pas vu qu il fallait être dans le fichier complet avant de lancer build-fx, merci beaucoup!!