From f1d19787a5177943dba17c7c0359fcaf62c3def4 Mon Sep 17 00:00:00 2001 From: jofret Date: Tue, 5 May 2009 15:19:04 +0000 Subject: Adaptation to a toolbox version --- macros/CCodeGeneration/C_Funcall.sci | 36 ++++++++-------- macros/CCodeGeneration/C_GenerateMakefile.sci | 54 +++++++++--------------- macros/ToolInitialization/INIT_GenFileInfo.sci | 22 +++++----- macros/ToolInitialization/INIT_GenSharedInfo.sci | 19 +++++---- macros/ToolInitialization/INIT_SCI2C.sci | 21 +++++---- 5 files changed, 74 insertions(+), 78 deletions(-) (limited to 'macros') 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. --- // ---------------------------- -- cgit