Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Autres questions


Index du Forum » Autres questions » créer des libs et des .a pour le SDK?
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

créer des libs et des .a pour le SDK?

Posté le 07/08/2014 20:27

Est ce qu'il y a un moyen de créer des librairies pour le sdk casio ?


Nemhardy Hors ligne Grand maître des Traits d'Esprit Points: 1238 Défis: 54 Message

Citer : Posté le 07/08/2014 20:30 | #


Tu parles de librairies statiques compilées c'est bien ça ? Car sinon, y'a qu'à voir MonochromeLib et tout le reste ^^.
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 07/08/2014 20:34 | #


Oui, oui, ça me broute de devoir telecharger tout le temps les librairies alors je veux les compiler pour faciliter la tache a la compilation
Nemhardy Hors ligne Grand maître des Traits d'Esprit Points: 1238 Défis: 54 Message

Citer : Posté le 07/08/2014 20:39 | #


Je ne suis pas du tout sûr que tu puisse faire ça avec le SDK de Casio, car il ne me semble pas que tu puisse spécifier des option au linker (ou même au compilateur ou autre organe important) ...
Après, je n'ai pas trop manipulé le sdk, je laisserai quelqu'un de plus expérimenté avec confirmer ou infirmer ^^.

D'ailleurs, tu ne pourras pas utiliser directement des .a au format GNU, le logiciel de Renesas utilisant un autre format et extension pour les librairies : le .lib.
Drac0300 Hors ligne Membre Points: 839 Défis: 39 Message

Citer : Posté le 07/08/2014 21:31 | #


Je sais par contre que, quelque part dans le dossier du sdk (/Program Files/Casio/OS/SH/BIN/ plus précisément) il y a le compilo. Peut-être qu'on pourrait lui passer des options en ligne de commande...
Dans Z/1Z, 42==666
Coïncidence ? Je ne pense pas.
Lephenixnoir Hors ligne Administrateur Points: 20993 Défis: 143 Message

Citer : Posté le 10/08/2014 22:27 | #


En fait le tout est exécuté par un simple script batch présent dans les données du projet.

@echo off
rem Do not edit! This batch file is created by CASIO fx-9860G SDK.

if exist debug\*.obj  del debug\*.obj
if exist WEBCALC.G1A  del WEBCALC.G1A

cd debug
if exist FXADDINror.bin  del FXADDINror.bin
"C:\Program Files\CASIO\fx-9860G SDK\OS\SH\Bin\Hmake.exe" Addin.mak
cd ..
if not exist debug\FXADDINror.bin  goto error

"C:\Program Files\CASIO\fx-9860G SDK\Tools\MakeAddinHeader363.exe" "C:\Documents and Settings\PGAARON\Mes documents\CASIO\fx-9860G SDK\WebCalc"
if not exist WEBCALC.G1A  goto error
echo Build has completed.
goto end

:error
echo Build was not successful.

:end

Le problème c'est que c'est Hmake qui appelle l'Optlnk, donc impossible de modifier la commande qu'on lui passe. Et comme le compilo ne prend pas les .o ni les .a, le seul vrai moyen de compiler avec des libs c'est de compiler sous Linux...
Drac0300 Hors ligne Membre Points: 839 Défis: 39 Message

Citer : Posté le 11/08/2014 12:25 | #


Mais le fichier addin.mak passé à hmake est un makefile. On sait donc à peu près ce que Hmake fait !

En voilà un par exemple :
################################################
# Make file for CASIO fx-9860G SDK Addin
#
############################
# Directory defines
TCDIR = C:\Program Files\Casio\OS\SH
OSDIR = C:\Program Files\Casio\OS
APPDIR = C:\users\monUserName\Mes documents\CASIO\fx-9860G SDK\test
OUTDIR = C:\users\monUserName\Mes documents\CASIO\fx-9860G SDK\test\Debug

################
# Main Defines
SH_EXEDIR=$(TCDIR)\bin

# Hitachi SH C/C++ Compiler02 phase
SHCC02_EXE=shc.exe
SHCC02_DEP="$(OSDIR)\FX\include\fxlib.h"

# Hitachi SH Assembler03 phase
SHASM03_EXE=asmsh.exe

# Hitachi OptLinker04 phase
SHLINK04_EXE=Optlnk.exe
SHLINK04_DEP="$(OSDIR)\FX\lib\fx9860G_library.lib"
SHLINK04_DEP2="$(OSDIR)\FX\lib\setup.obj"

#######################
# Files to build
FILE0=test
FILESRC0="$(APPDIR)\$(FILE0).c"
FILEOBJ0="$(OUTDIR)\$(FILE0).obj"
RFILE=FXADDINror
USERALLOBJ=$(FILEOBJ0)

#######################
# nmake "all" statement

ALL:  SH_ENV \
    $(USERALLOBJ) \
    $(OUTDIR)\$(RFILE).bin \

####################
# Description blocks

!MESSAGE %3#C$z`&'0?
!MESSAGE
!MESSAGE Executing Hitachi SH C/C++ Compiler/Assembler phase
!MESSAGE

SH_ENV :
    set SHC_INC=$(TCDIR)\include
    set PATH=$(TCDIR)\bin
    set SHC_LIB=$(TCDIR)\bin
    set SHC_TMP=$(OUTDIR)

$(FILEOBJ0) : $(FILESRC0) $(SHCC02_DEP)
    "$(SH_EXEDIR)\$(SHCC02_EXE)" -subcommand=<<
-cpu=sh3
-include="$(OSDIR)\FX\include","$(APPDIR)"
-objectfile=$(FILEOBJ0)
-show=source
-listfile="$(OUTDIR)\$(FILE0).lst"
-size
-noinline
-chgincpath
-errorpath
$(FILESRC0)
-lang=c
-nologo
-debug
<<

!MESSAGE
!MESSAGE Executing Hitachi OptLinker04 phase
!MESSAGE

"$(OUTDIR)\$(RFILE).bin" : $(USERALLOBJ) $(SHLINK04_DEP2) $(SHLINK04_DEP)
    "$(SH_EXEDIR)\$(SHLINK04_EXE)" -subcommand=<<
noprelink
sdebug
rom D=R
nomessage
list "$(OUTDIR)\$(RFILE).map"
show symbol
nooptimize
start P_TOP,P,C,D,C$VTBL,C$INIT/0300200,B_BR_Size,B,R/08100000
fsymbol P
nologo
input $(USERALLOBJ)
input $(SHLINK04_DEP2)
library $(SHLINK04_DEP)
output "$(OUTDIR)\$(RFILE).abs"
-nomessage=1100
end
input "$(OUTDIR)\$(RFILE).abs"
form binary
output "$(OUTDIR)\$(RFILE).bin"
exit
<<

Dans Z/1Z, 42==666
Coïncidence ? Je ne pense pas.
Lephenixnoir Hors ligne Administrateur Points: 20993 Défis: 143 Message

Citer : Posté le 11/08/2014 13:22 | #


Ce qui nous intéresse, sauf connerie de ma part, est à peu près ça :
"$(OUTDIR)\$(RFILE).bin" : $(USERALLOBJ) $(SHLINK04_DEP2) $(SHLINK04_DEP)
    "$(SH_EXEDIR)\$(SHLINK04_EXE)" -subcommand=<< // ...

Ce qui rend :
C:\Program Files\Casio\OS\SH\bin\Optlnk.exe -subcommand= // ...

avec les paramètres qui suivent. Resterait alors à déterminer comment linker une lib à ce linker. Et tant qu'à faire, essayer avec -cpu=sh4, juste pour voir
Drac0300 Hors ligne Membre Points: 839 Défis: 39 Message

Citer : Posté le 11/08/2014 15:36 | #


J'ai essayé avec cpu=sh4 et il ne m'a rien dit...
Par contre, les addins ainsi créés faisaient exactement la même taille (1708 octets) avec sh3 ou sh4. (Mais c'était l'addin d'exemple, peut-être qu'il n'y avait pas assez de code pour que le compilo d'hitachi puisse faire des "optimisations"
Dans Z/1Z, 42==666
Coïncidence ? Je ne pense pas.
Lephenixnoir Hors ligne Administrateur Points: 20993 Défis: 143 Message

Citer : Posté le 11/08/2014 15:52 | #


Oui... et de toute façon, puisque certaines fonctions existent dans le proco SH4 mais pas dans le proco SH3, on perd la compatibilité. Mais c'est bon à savoir.

Au passage, il faudra que je désassemble les fonctions trigos que je trouve anormalement lentes pour appeler celles du proco.

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 v42 © créé par Neuronix et Muelsaco 2004 - 2021 | Il y a 78 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