summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorjofret2009-05-05 15:19:04 +0000
committerjofret2009-05-05 15:19:04 +0000
commitf1d19787a5177943dba17c7c0359fcaf62c3def4 (patch)
treeee5eb1bfafc91c438c080ff71ecb8a5c22da20cc /macros
parente44f315a1fadc2f3dea42ee9d9c248f59d39b92c (diff)
downloadscilab2c-f1d19787a5177943dba17c7c0359fcaf62c3def4.tar.gz
scilab2c-f1d19787a5177943dba17c7c0359fcaf62c3def4.tar.bz2
scilab2c-f1d19787a5177943dba17c7c0359fcaf62c3def4.zip
Adaptation to a toolbox version
Diffstat (limited to 'macros')
-rw-r--r--macros/CCodeGeneration/C_Funcall.sci36
-rw-r--r--macros/CCodeGeneration/C_GenerateMakefile.sci54
-rw-r--r--macros/ToolInitialization/INIT_GenFileInfo.sci22
-rw-r--r--macros/ToolInitialization/INIT_GenSharedInfo.sci19
-rw-r--r--macros/ToolInitialization/INIT_SCI2C.sci21
5 files changed, 74 insertions, 78 deletions
diff --git a/macros/CCodeGeneration/C_Funcall.sci b/macros/CCodeGeneration/C_Funcall.sci
index f68d7c82..80544e8e 100644
--- a/macros/CCodeGeneration/C_Funcall.sci
+++ b/macros/CCodeGeneration/C_Funcall.sci
@@ -101,9 +101,9 @@ if ((mtlb_strcmp(FunctionName,'size')))
PrintStringInfo(' '+CCall,ReportFileName,'file','y');
// #RNU_RES_E
PrintStringInfo(C_IndentBlanks(IndentLevel)+CCall,CPass1FileName,'file','y');
-
+
CCall ='';
- CCall = CCall+OutArg(1).Name+'[1] = __'+InArg(1).Name+'Size[1];';
+ CCall = CCall+OutArg(1).Name+'[1] = __'+InArg(1).Name+'Size[1];';
// #RNU_RES_B
PrintStringInfo(' '+CCall,ReportFileName,'file','y');
// #RNU_RES_E
@@ -114,9 +114,9 @@ if ((mtlb_strcmp(FunctionName,'size')))
PrintStringInfo(' '+CCall,ReportFileName,'file','y');
// #RNU_RES_E
PrintStringInfo(C_IndentBlanks(IndentLevel)+CCall,CPass1FileName,'file','y');
-
+
CCall ='';
- CCall = CCall+OutArg(2).Name+' = __'+InArg(1).Name+'Size[1];';
+ CCall = CCall+OutArg(2).Name+' = __'+InArg(1).Name+'Size[1];';
// #RNU_RES_B
PrintStringInfo(' '+CCall,ReportFileName,'file','y');
// #RNU_RES_E
@@ -126,13 +126,13 @@ if ((mtlb_strcmp(FunctionName,'size')))
end
elseif (NInArg == 2)
if (NOutArg == 1)
- if (InArg(2).Value == 1)
+ if (InArg(2).Value == 1)
CCall = CCall+OutArg(1).Name+' = __'+InArg(1).Name+'Size[0];';
// #RNU_RES_B
PrintStringInfo(' '+CCall,ReportFileName,'file','y');
// #RNU_RES_E
PrintStringInfo(C_IndentBlanks(IndentLevel)+CCall,CPass1FileName,'file','y');
- elseif (InArg(2).Value == 2)
+ elseif (InArg(2).Value == 2)
CCall = CCall+OutArg(1).Name+' = __'+InArg(1).Name+'Size[1];';
// #RNU_RES_B
PrintStringInfo(' '+CCall,ReportFileName,'file','y');
@@ -206,15 +206,15 @@ for counterin = 1:NInArg
else
TmpInArgName = InArg(counterin).Name;
end
-
+
TmpInArgType = C_Type(InArg(counterin).Type);
-
+
//if (FunctionName == 'OpEqual')
// TmpInArgSizeVar = '__'+OutArg(counterin).Name+'Size';
// else
- TmpInArgSizeVar = '__'+InArg(counterin).Name+'Size';
+ TmpInArgSizeVar = '__'+InArg(counterin).Name+'Size';
//end
-
+
if (InArg(counterin).Dimension == 0)
if (FlagCall == 0)
CCall = CCall+TmpInArgType+' ';
@@ -261,7 +261,7 @@ for counterout = 1:NOutArg
else
if (FlagCall == 0)
CCall = CCall+TmpOutArgType+'* '+TmpOutArgName+',';
- if (OutArg(counterout).FindLike == 1)
+ if (OutArg(counterout).FindLike == 1)
CCall = CCall+'SCI2Cint* __'+TmpOutArgName+'Size'+',';
end
// #RNU_RES_B
@@ -280,9 +280,9 @@ for counterout = 1:NOutArg
PrintStringInfo(' ',CInitVarsFileName,'file','y');
else
CCall = CCall+OutArg(counterout).Name+',';
- if (OutArg(counterout).FindLike == 1)
+ if (OutArg(counterout).FindLike == 1)
CCall = CCall+'(SCI2Cint* ) __'+TmpOutArgName+'Size'+',';
- end
+ end
end
end
end
@@ -302,7 +302,7 @@ if (FlagCall == 1)
end
//NUT: la parte di generazione della C call va inserita in una funzione a parte.
//NUT: tale funzione deve avere anche uno switch che consenta di generare differenti versioni
-//NUT: delle chiamate C in accordo con la libreria disponibile, fermo restando che
+//NUT: delle chiamate C in accordo con la libreria disponibile, fermo restando che
//NUT: e' sempre possibile fornire la lista delle macro.
if mtlb_strcmp(FunctionName,'return')
// Here I introduce the pointer assignment for output scalar arguments.
@@ -358,12 +358,14 @@ else
PrintStringInfo(C_IndentBlanks(IndentLevel)+CCall,CPass1FileName,'file','y');
if (FlagCall == 0)
// Add prototype to the header file
- C_InitHeader(CCall+';',HeaderFileName,SharedInfo.Sci2CLibMainHeaderFName);
-
+
+ //-- FIXME : disable this for now
+ //-- C_InitHeader(CCall+';',HeaderFileName,SharedInfo.Sci2CLibMainHeaderFName);
+
// Add { at the beginning of the function.
PrintStringInfo(' {',ReportFileName,'file','y');
PrintStringInfo(C_IndentBlanks(IndentLevel)+'{',CPass1FileName,'file','y');
-
+
end
end
diff --git a/macros/CCodeGeneration/C_GenerateMakefile.sci b/macros/CCodeGeneration/C_GenerateMakefile.sci
index 1ef7385c..e591e6f3 100644
--- a/macros/CCodeGeneration/C_GenerateMakefile.sci
+++ b/macros/CCodeGeneration/C_GenerateMakefile.sci
@@ -37,34 +37,18 @@ PrintStringInfo('# -----------------------',FileInfo.MakefileFilename,'file','y'
PrintStringInfo('# --- USER PARAMETERS ---',FileInfo.MakefileFilename,'file','y');
PrintStringInfo('# -----------------------',FileInfo.MakefileFilename,'file','y');
PrintStringInfo('# --- DIRECTORIES AND FILES ---',FileInfo.MakefileFilename,'file','y');
-if (SharedInfo.CCompilerPathStyle == 'windows')
- makeobjpath = '..\..\..\Scilab2C\CFiles\sci2cobj';
- // makeobjpath = FileInfo.CStyleSCI2CMainDir+'\CFiles\sci2cobj';
- makecsrcdir = '..\..\..\Scilab2C\CFiles\sci2ccode';
- // makecsrcdir = FileInfo.CStyleSCI2CMainDir+'\CFiles\sci2ccode';
- makehsrcdir = '..\..\..\Scilab2C\CFiles\sci2cincludes';
- // makehsrcdir = FileInfo.CStyleSCI2CMainDir+'\CFiles\sci2cincludes';
- makeisrcdir = '..\..\..\Scilab2C\CFiles\sci2cinterfaces';
- // makeisrcdir = FileInfo.CStyleSCI2CMainDir+'\CFiles\sci2cinterfaces';
- makesci2cdir = FileInfo.CStyleOutCCCodeDir;
- // makesci2cdir = FileInfo.CStyleOutCCCodeDir;
-elseif (SharedInfo.CCompilerPathStyle == 'unix' | ...
- SharedInfo.CCompilerPathStyle == 'cygwin')
- makeobjpath = '../../../Scilab2C/CFiles/sci2cobj';
- // makeobjpath = FileInfo.CStyleSCI2CMainDir+'/CFiles/sci2cobj';
- makecsrcdir = '../../../Scilab2C/CFiles/sci2ccode';
- // makecsrcdir = FileInfo.CStyleSCI2CMainDir+'/CFiles/sci2ccode';
- makehsrcdir = '../../../Scilab2C/CFiles/sci2cincludes';
- // makehsrcdir = FileInfo.CStyleSCI2CMainDir+'/CFiles/sci2cincludes';
- makeisrcdir = '../../../Scilab2C/CFiles/sci2cinterfaces';
- // makeisrcdir = FileInfo.CStyleSCI2CMainDir+'/CFiles/sci2cinterfaces';
- makesci2cdir = FileInfo.CStyleOutCCCodeDir;
-else
- PrintStringInfo(' ',ReportFileName,'stdout','y');
- PrintStringInfo('SCI2CERROR: Unkwnown option for CCompilerPathStyle','','both','y');
- PrintStringInfo('SCI2CERROR: Please check SCI2CInputParameters.sce file.','','both','y');
- SCI2Cerror(' ');
-end
+
+makeobjpath = pathconvert('..\..\..\Scilab2C\CFiles\sci2cobj', %f, %f, 'u');
+// makeobjpath = FileInfo.CStyleSCI2CMainDir+'\CFiles\sci2cobj';
+makecsrcdir = pathconvert('..\..\..\Scilab2C\CFiles\sci2ccode', %f, %f, 'u');
+// makecsrcdir = FileInfo.CStyleSCI2CMainDir+'\CFiles\sci2ccode';
+makehsrcdir = pathconvert('..\..\..\Scilab2C\CFiles\sci2cincludes', %f, %f, 'u');
+// makehsrcdir = FileInfo.CStyleSCI2CMainDir+'\CFiles\sci2cincludes';
+makeisrcdir = pathconvert('..\..\..\Scilab2C\CFiles\sci2cinterfaces', %f, %f, 'u');
+// makeisrcdir = FileInfo.CStyleSCI2CMainDir+'\CFiles\sci2cinterfaces';
+makesci2cdir = FileInfo.CStyleOutCCCodeDir;
+// makesci2cdir = FileInfo.CStyleOutCCCodeDir;
+
PrintStringInfo('OBJDIR = '+makeobjpath,FileInfo.MakefileFilename,'file','y');
PrintStringInfo('CSRCDIR = '+makecsrcdir,FileInfo.MakefileFilename,'file','y');
@@ -77,17 +61,17 @@ PrintStringInfo('EXEFILENAME = mytest.exe',FileInfo.MakefileFilename,'file','y')
// -------------------------------
// --- Open template makefile. ---
// -------------------------------
-fidfile = SCI2COpenFileRead(FileInfo.MakefileTemplate);
+//-- fidfile = SCI2COpenFileRead(FileInfo.MakefileTemplate);
// -------------------
// --- Read lines. ---
// -------------------
-tmpline = mgetl(fidfile,1);
-while (meof(fidfile) == 0)
- PrintStringInfo(tmpline,FileInfo.MakefileFilename,'file','y');
- tmpline = mgetl(fidfile,1);
-end
+//-- tmpline = mgetl(fidfile,1);
+//-- while (meof(fidfile) == 0)
+//-- PrintStringInfo(tmpline,FileInfo.MakefileFilename,'file','y');
+//-- tmpline = mgetl(fidfile,1);
+//-- end
-mclose(fidfile);
+//-- mclose(fidfile);
endfunction
diff --git a/macros/ToolInitialization/INIT_GenFileInfo.sci b/macros/ToolInitialization/INIT_GenFileInfo.sci
index 0b97af4d..3bb88888 100644
--- a/macros/ToolInitialization/INIT_GenFileInfo.sci
+++ b/macros/ToolInitialization/INIT_GenFileInfo.sci
@@ -37,10 +37,10 @@ FileInfo.UserSciFilesPaths = UserSciFilesPaths;
// -------------------
// --- .dat Files. ---
// -------------------
-FileInfo.FileInfoDatFile = fullfile(FileInfo.WorkingDir,'FileInfo.dat');
-FileInfo.SharedInfoDatFile = fullfile(FileInfo.WorkingDir,'SharedInfo.dat');
+FileInfo.FileInfoDatFile = fullfile(FileInfo.WorkingDir,'FileInfo.dat');
+FileInfo.SharedInfoDatFile = fullfile(FileInfo.WorkingDir,'SharedInfo.dat');
FileInfo.GlobalVarFileName = fullfile(FileInfo.WorkingDir,'GBLVAR.dat');
-FileInfo.ASTStackDataFile = fullfile(FileInfo.WorkingDir,'ASTStack.dat');
+FileInfo.ASTStackDataFile = fullfile(FileInfo.WorkingDir,'ASTStack.dat');
// ----------------------
// --- SCI2C Library. ---
@@ -89,11 +89,11 @@ FileInfo.USER2CLibCFLCls = fullfile(FileInfo.USER2CLibCFunListDir,'Classe
// --- Function List. ---
// ----------------------
FileInfo.FunctionList.MainDir = fullfile(FileInfo.WorkingDir,'FunctionList');
-FileInfo.FunctionList.SCI2CAvailableCDat = fullfile(FileInfo.FunctionList.MainDir,'SCI2CAvailableC.dat');
-FileInfo.FunctionList.USER2CAvailableCDat = fullfile(FileInfo.FunctionList.MainDir,'USER2CAvailableC.dat');
-FileInfo.FunctionList.ConvertedDat = fullfile(FileInfo.FunctionList.MainDir,'Converted.dat');
-FileInfo.FunctionList.ToBeConvertedDat = fullfile(FileInfo.FunctionList.MainDir,'ToBeConverted.dat');
-FileInfo.FunctionList.FunInfoDatDir = fullfile(FileInfo.FunctionList.MainDir,'FunInfoDatFiles');
+FileInfo.FunctionList.SCI2CAvailableCDat = fullfile(FileInfo.FunctionList.MainDir,'SCI2CAvailableC.dat');
+FileInfo.FunctionList.USER2CAvailableCDat = fullfile(FileInfo.FunctionList.MainDir,'USER2CAvailableC.dat');
+FileInfo.FunctionList.ConvertedDat = fullfile(FileInfo.FunctionList.MainDir,'Converted.dat');
+FileInfo.FunctionList.ToBeConvertedDat = fullfile(FileInfo.FunctionList.MainDir,'ToBeConverted.dat');
+FileInfo.FunctionList.FunInfoDatDir = fullfile(FileInfo.FunctionList.MainDir,'FunInfoDatFiles');
// --------------------
// --- Other Files. ---
@@ -103,8 +103,10 @@ FileInfo.GeneralReport = fullfile(FileInfo.WorkingDir,'SCI2CGeneralReport.txt');
// -----------------------------------
// --- C-Style paths and Makefile. ---
// -----------------------------------
-FileInfo.CStyleSCI2CMainDir = ConvertPathMat2C(FileInfo.SCI2CMainDir,SharedInfo.CCompilerPathStyle);
-FileInfo.CStyleOutCCCodeDir = ConvertPathMat2C(OutCCCodeDir,SharedInfo.CCompilerPathStyle);
+//-- FileInfo.CStyleSCI2CMainDir = ConvertPathMat2C(FileInfo.SCI2CMainDir,SharedInfo.CCompilerPathStyle);
+//-- FileInfo.CStyleOutCCCodeDir = ConvertPathMat2C(OutCCCodeDir,SharedInfo.CCompilerPathStyle);
+FileInfo.CStyleSCI2CMainDir = pathconvert(FileInfo.SCI2CMainDir, %f, %f, 'u');
+FileInfo.CStyleOutCCCodeDir = pathconvert(OutCCCodeDir, %f, %f, 'u');
FileInfo.MakefileFilename = fullfile(FileInfo.CStyleOutCCCodeDir,'Makefile');
FileInfo.MakefileTemplate = fullfile(FileInfo.SCI2CMainDir,'CCodeGeneration','SCI2CMakefileTemplate.rc');
endfunction
diff --git a/macros/ToolInitialization/INIT_GenSharedInfo.sci b/macros/ToolInitialization/INIT_GenSharedInfo.sci
index b9d8dcef..91f74990 100644
--- a/macros/ToolInitialization/INIT_GenSharedInfo.sci
+++ b/macros/ToolInitialization/INIT_GenSharedInfo.sci
@@ -1,5 +1,4 @@
-function SharedInfo = INIT_GenSharedInfo(WorkingDir,OutCCCodeDir,UserSciFilesPaths,...
- RunMode,UserScilabMainFile,TotTempScalarVars,EnableTempVarsReuse,Sci2CLibMainHeaderFName)
+function SharedInfo = INIT_GenSharedInfo(RunMode,UserScilabMainFile,TotTempScalarVars,EnableTempVarsReuse,Sci2CLibMainHeaderFName,CopySciCodeIntoCCode)
// function SharedInfo = INIT_GenSharedInfo(WorkingDir,OutCCCodeDir,UserSciFilesPaths,...
// RunMode,UserScilabMainFile,TotTempScalarVars,EnableTempVarsReuse,Sci2CLibMainHeaderFName)
// -----------------------------------------------------------------
@@ -30,27 +29,31 @@ function SharedInfo = INIT_GenSharedInfo(WorkingDir,OutCCCodeDir,UserSciFilesPat
// ------------------------------
// --- Check input arguments. ---
// ------------------------------
-SCI2CNInArgCheck(argn(2),8,8);
+
+//-- SCI2CNInArgCheck(argn(2),8,8);
// ------------------------------
// --- Initialize SharedInfo. ---
// ------------------------------
-SharedInfo.CCompilerPathStyle = CCompilerPathStyle;
+//-- SharedInfo.CCompilerPathStyle = CCompilerPathStyle;
SharedInfo.RunMode = RunMode;
-SharedInfo.Sci2CLibMainHeaderFName = ConvertPathMat2C(Sci2CLibMainHeaderFName,SharedInfo.CCompilerPathStyle);
+//-- SharedInfo.Sci2CLibMainHeaderFName = ConvertPathMat2C(Sci2CLibMainHeaderFName,SharedInfo.CCompilerPathStyle);
+
+//-- FIXME : Must enable this for Makefile generation
+//-- SharedInfo.Sci2CLibMainHeaderFName = pathconvert(Sci2CLibMainHeaderFName, 'u');
// #RNU_RES_B
// File names of the next .sci files to be converted in AST and
-// successively into C.
+// successively into C.
// #RNU_RES_E
-SharedInfo.NextSCIFileName = UserScilabMainFile;
+SharedInfo.NextSCIFileName = UserScilabMainFile;
[scipath,funname,sciext] = fileparts(UserScilabMainFile);
SharedInfo.SCIMainFunName = funname;
SharedInfo.CMainFunName = 'main';
SharedInfo.NextSCIFunName = SharedInfo.SCIMainFunName; //NUT: per ora no so cosa metter
SharedInfo.NextCFunName = SharedInfo.CMainFunName; //NUT: per ora no so cosa metter //NUT: questo viene aggiornato dalla C_Funcall
-SharedInfo.NextSCIFunNumber = 1;
+SharedInfo.NextSCIFunNumber = 1;
SharedInfo.NFilesToTranslate = 1;
diff --git a/macros/ToolInitialization/INIT_SCI2C.sci b/macros/ToolInitialization/INIT_SCI2C.sci
index c7b7a6f8..522b2a6b 100644
--- a/macros/ToolInitialization/INIT_SCI2C.sci
+++ b/macros/ToolInitialization/INIT_SCI2C.sci
@@ -1,4 +1,5 @@
-function [FileInfoDatFile,SharedInfoDatFile] = INIT_SCI2C(SCI2CInputPrmFile)
+function [FileInfoDatFile,SharedInfoDatFile] = ...
+ INIT_SCI2C(UserScilabMainFile, UserSciFilesPaths, SCI2COutputDir, RunMode)
// function [FileInfoDatFile,SharedInfoDatFile] = INIT_SCI2C(SCI2CInputPrmFile)
// -----------------------------------------------------------------
// #RNU_RES_B
@@ -27,12 +28,12 @@ function [FileInfoDatFile,SharedInfoDatFile] = INIT_SCI2C(SCI2CInputPrmFile)
// ------------------------------
// --- Check input arguments. ---
// ------------------------------
-SCI2CNInArgCheck(argn(2),1,1);
+//SCI2CNInArgCheck(argn(2),1,1);
// ------------------------------
// --- Read Input Parameters. ---
// ------------------------------
-exec(SCI2CInputPrmFile);
+//exec(SCI2CInputPrmFile);
// #RNU_RES_B
//NUT: queste variabili sono per usi futuri.
//NUT: e saranno introdotti nel parameter file.
@@ -41,7 +42,7 @@ WorkAreaSizeBytes = 2000*8; // 2000 locations of double
// #RNU_RES_B
// Maximum number of temporary scalar variables that can be used.
// #RNU_RES_E
-TotTempScalarVars = 20;
+TotTempScalarVars = 20;
EnableTempVarsReuse = 0; // 0 = Disable; 1 = Enable.
@@ -49,7 +50,9 @@ EnableTempVarsReuse = 0; // 0 = Disable; 1 = Enable.
//NUT: I prefer to don't show this parameters to the user.
// --- Directory where all the products of the SCI2C tool will be stored. ---
// #RNU_RES_E
-[SCI2CResultDir,tmpfile,tmpext] = fileparts(SCI2CInputPrmFile);
+//-- [SCI2CResultDir,tmpfile,tmpext] = fileparts(SCI2CInputPrmFile);
+SCI2CResultDir = SCI2COutputDir;
+
WorkingDir = fullfile(SCI2CResultDir,'SCI2CTmpResultsReports');
// #RNU_RES_B
@@ -60,9 +63,11 @@ OutCCCodeDir = fullfile(SCI2CResultDir,'C_Code');
// ------------------------------
// --- Initialize SharedInfo. ---
// ------------------------------
-SharedInfo = INIT_GenSharedInfo(WorkingDir,OutCCCodeDir,UserSciFilesPaths,...
- RunMode,UserScilabMainFile,TotTempScalarVars,EnableTempVarsReuse,Sci2CLibMainHeaderFName);
-
+//SharedInfo = INIT_GenSharedInfo(WorkingDir,OutCCCodeDir,UserSciFilesPaths,...
+// RunMode,UserScilabMainFile,TotTempScalarVars,EnableTempVarsReuse,Sci2CLibMainHeaderFName);
+SharedInfo = INIT_GenSharedInfo(RunMode,UserScilabMainFile, ...
+ TotTempScalarVars,EnableTempVarsReuse,"sci2cincludes/sci2clib.h", %t);
+
// ----------------------------
// --- Initialize FileInfo. ---
// ----------------------------