Posté le 07/08/2014 20:27
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 145 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 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 ^^.
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
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.
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...
Coïncidence ? Je ne pense pas.
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.
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...
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
<<
Coïncidence ? Je ne pense pas.
Citer : Posté le 11/08/2014 13:22 | #
Ce qui nous intéresse, sauf connerie de ma part, est à peu près ça :
"$(SH_EXEDIR)\$(SHLINK04_EXE)" -subcommand=<< // ...
Ce qui rend :
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
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"
Coïncidence ? Je ne pense pas.
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.