builder - builder scilab script of the toolbox
//builder.sce
//build mod_num_3 package for scilab-3.0
//both linux and windob(with lcc)
//13-10-2004 Alan
//
//Modification : 4/4/2005
//builder rewritten with scilab function
//Improvment : Build with VC++
// REVISION HISTORY :
// $Log$
//
//def_MODNUM_path()
//Input : nothing
//Output : tt MODNUM path (ex:/home/alan/mod_num_3)
function tt=def_MODNUM_path()
tt=get_absolute_file_path('builder.sce');
end_char=part(tt,length(tt));
if end_char=='/'|end_char=='\' then
tt=part(tt,1:length(tt)-1);
end
endfunction
mode(-1);
lines(0);
//define MODNUM path
MODNUM=def_MODNUM_path();
//Search Scilab Version
getf(MODNUM+'/macros/build_util/find_scilab_ver.sci');
[ok]=find_scilab_ver();
if ~ok then
printf("Mod_num toolbox source version only build with scilab >=3.0\n");
abort
end
//open loader.sce file for writting
ierror=execstr('u=mopen(MODNUM+""/loader.sce"",""w"");','errcatch');
if ierror<>0 then
printf("Can''t write loader file.\nVerify your writting access.\n");
end
clear ierror;
//write Header of loader.sce file
getf(MODNUM+'/macros/build_util/write_header.sci');
write_header(u,'builer.sce')
//Build and load util macro library
getf(MODNUM+'/macros/build_util/build_lib.sci');
build_lib('/macros/build_util','mod_num_util');
getf(MODNUM+'/macros/build_util/write_inf_lib.sci');
txt=write_inf_lib(u,'/macros/build_util','mod_num_util',1);
ierr=execstr(txt,'errcatch');
//Build and load all scilab library
libs=['generate_doc';'gen_doc_util';'xmltotex';
'misc';'signal';'scicos_util';'find_file'];
rep_lib='/macros/'+libs;
lib_name='mod_num_'+libs;
build_lib(rep_lib,lib_name);
txt=write_inf_lib(u,rep_lib,lib_name,1);
ierr=execstr(txt,'errcatch');
//Build and load palette of scicos_blocks
pal=['Tools';'Sources';'Sinks';'Pll';'NonLinear';'Communication'];
rep_pal='/macros/scicos_blocks/'+pal;
pal_title='mod_num_'+convstr(pal,'l');
lib_name=pal_title+'_pal';
build_lib(rep_pal,lib_name);
fprintf(u,"%s\n",'//Load mod_num scicos_blocks library');
txt=write_inf_lib(u,rep_pal,lib_name,0);
ierr=execstr(txt,'errcatch');
//Generate palette of scicos_blocks
for i=1:size(rep_pal,"*")
files_sci=basename(listfiles(MODNUM+rep_pal(i)+"/*.sci"));
generate_palette(files_sci,MODNUM+'/macros/scicos_blocks/',pal(i));
end
txt=write_inf_pal(u,rep_pal+'.cosf',pal_title);
ierr=execstr(txt,'errcatch');
clear txt;clear pal_title;clear lib_name;clear rep;clear rep_pal;
clear ierr;clear files_sci;clear i; clear pal;
//Build routines Library
printf("Build mod_num routines libraries\n");
//Find C compiler
[flagc,ccmd]=find_cmd('c');
//Find Fortran compiler
[flagf,fcmd]=find_cmd('f');
//find witch directory to include for compilation
incl_path=find_incl_path();
//Build and load mod_num_lib routines
printf("Build mod_num_lib C routines\n");
path='/routines/mod_num_lib';
files=basename(listfiles(MODNUM+path+'/*.c'));
libname="libmodnum_lib";
scifunc=["genint";"modpsk";"surecht"];
intname="intmod_num_lib";
if ccmd<>'trash' then
precompilation(flagc,ccmd,incl_path,path,files);
create_library(flagc,ccmd,libname,path,files);
txt=write_inf_rout_lib(u,libname,path,files,0);
ierr=execstr(txt,'errcatch');
txt=write_addinter_line(u,libname,path,intname,scifunc);
ierr=execstr(txt,'errcatch');
end
clear files, clear libname; clear scifunc; clear intname;
//Build and load scicos C routines
printf("Build scicos blocks C routines\n");
path='/routines/scicos';
files_c=basename(listfiles(MODNUM+path+'/*.c'));
libname="libmodnum_c";
if ccmd<>'trash' then
precompilation(flagc,ccmd,incl_path,path,files_c);
create_library(flagc,ccmd,libname,path,files_c);
txt=write_inf_rout_lib(u,libname,path,files_c,1);
ierr=execstr(txt,'errcatch');
end
clear files_c; clear libname;
//Build and load scicos F routines
printf("Build scicos blocks Fortran routines\n");
files_f=basename(listfiles(MODNUM+path+'/*.f'));
libname="libmodnum_f";
if fcmd<>'trash' then
precompilation(flagf,fcmd,incl_path,path,files_f);
create_library(flagf,fcmd,libname,path,files_f);
txt=write_inf_rout_lib(u,libname,path,files_f,2);
ierr=execstr(txt,'errcatch');
end
clear path; clear files_f; clear libname;
clear incl_path;clear flagc;clear flagf;
clear ccmd;clear fcmd; clear ierr;
//Build documentation and demos
txt=write_inf_doc(u);
ierr=execstr(txt,'errcatch');
if ierr==0 then
%helps=%helps;
end
build_demo();
//flag_doc=build_doc();
//Close loader.sce
mclose(u);
printf("Write a loader.sce file\n");
//write a .scilab file
if ~MSDOS then
txt=mgetl('loader.sce');
mputl(txt,'.scilab');
printf("Write a .scilab file\n");
end
clear u; clear txt; clear ierr; clear ok;
IRCOM Group
Alan Layec