f0c82411e0e1b779eef1e1f70a42076d1dde33c2
[scilab.git] / scilab / modules / core / macros / toolboxes.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) INRIA
3 // 
4 // This file must be used under the terms of the CeCILL.
5 // This source file is licensed as described in the file COPYING, which
6 // you should have received as part of this distribution.  The terms
7 // are also available at    
8 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
9
10 //===========================================================
11 function [y]=toolboxes(path,flag,force) 
12 // toolboxes loading or compiling 
13 // if flag == %t then contribs are recompiled 
14 // if a loader.sce is not found or if force == %t 
15 // path is a directory to explore for contribs
16   global %toolboxes
17   global %toolboxes_dir
18 //===========================================================
19 // functions build, distrib_clean, distrib_zip only used 
20 // by toolboxes macro
21 //===========================================================
22 function y = build(i)
23   global %toolboxes
24   global %toolboxes_dir
25   y = 'p=pwd();chdir("""+%toolboxes_dir+%toolboxes(i)+""");exec(""builder.sce"");chdir(p)';
26 endfunction
27 //===========================================================
28 function distrib_clean ()
29   global %toolboxes; 
30   global %toolboxes_dir;
31   // 
32   if %toolboxes == [] then 
33     find_contribs('./');
34   end
35   contribs = %toolboxes;
36   for k = 1:size(contribs,'*') 
37     flag = fileinfo(contribs(k)+'/loader.sce')<>[] ;
38     flag = flag & fileinfo(contribs(k)+'/Makefile')<>[] ;
39     if flag then 
40       chdir(contribs(k)) ;
41       mprintf('Cleaning %s\n',contribs(k))
42       execstr('unix_s(''make distclean'')','errcatch');
43       chdir('../');
44     end
45   end
46 endfunction
47 //===========================================================  
48 function [] = distrib_zip (op,name)
49   global %toolboxes; 
50   global %toolboxes_dir;
51   // 
52   [lhs,rhs]=argn(0) 
53   if rhs <= 1 then 
54     name = 'win' 
55   end 
56   if rhs <= 0 then 
57     op = 'zip' 
58   end 
59   if %toolboxes == [] then 
60     find_contribs('./');
61   end
62   contribs = %toolboxes;
63   for k = 1:size(contribs,'*') 
64     flag = fileinfo(contribs(k)+'/loader.sce')<>[] ;
65     job = "find . \( -name ''*.o'' -o -name ''*.la'' -o -name ''*.lo'' -o"+ ..
66           " -name ''*.obj'' -name ''*.a'' \) -exec \rm -f {} \;" 
67     if flag then 
68       write(%io(2),'build archive for '+ contribs(k));
69       chdir(contribs(k)) ;
70       execstr('unix_s("""+job+""")','errcatch');
71       chdir('../');
72       select op 
73        case 'tar' then 
74         unix_s('tar cfz '+contribs(k)+'-bin-'+name+'-`date -I`'+'.tgz '+ ..
75                contribs(k));
76        case 'zip' then 
77         unix_s('zip -r '+contribs(k)+' '+contribs(k)+'-bin-'+name+'-`date -I`'+'.zip');
78       end
79     end
80   end
81 endfunction
82 //===========================================================
83   
84   [lhs,rhs] = argn(0) 
85   y = [];
86   if rhs == 1 & typeof(path)=="constant" then 
87     // execute the toolbox loader
88     y='exec("""+%toolboxes_dir+%toolboxes(path)+filesep()+"loader.sce"+""");';
89     return 
90   end
91     
92   if rhs == 0 then 
93     path = SCI+'/contrib' 
94   end
95   if rhs <= 1 then 
96     flag = %f 
97   end
98   
99   if rhs <= 2 then 
100     force = %f 
101   end
102   
103   cur_wd = pwd();
104   chdir(path);
105   files = listfiles('.');
106   contribs = [];
107   for k = 1:size(files,'*') 
108     if fileinfo(files(k)+'/loader.sce')<>[] then 
109       contribs = [contribs;files(k)];
110     end
111   end
112   if flag then 
113     // recompilation if no loader.sce 
114     for k = 1:size(contribs,'*') 
115       if fileinfo(contribs(k)+'/loader.sce')==[] | force 
116               chdir(contribs(k)) ; 
117               exec('builder.sce');
118               chdir('../');
119       else
120               write(%io(2),contribs(k)+gettext(" is already compiled.\n"));
121       end
122     end
123   end
124
125   if contribs<>[] & grep(sciargs(),"-nw")==[] then 
126         if ( ~fromjava() & ~fromc() ) then
127         delmenu(gettext("&Toolboxes"));
128         h = uimenu("parent", 0, "label", gettext("&Toolboxes"));
129         for k=1:size(contribs,'*')
130          m = uimenu(h,'label', string(contribs(k)), 'callback','execstr(toolboxes('+string(k)+'))');
131         end
132         unsetmenu(gettext("&Toolboxes"));
133     end
134   end
135   
136   %toolboxes = contribs;
137   %toolboxes_dir = pathconvert(path);
138   chdir(cur_wd);
139 endfunction
140 //===========================================================
141