function compilemex(root)
% COMPILEMEX Compiles all MEX files of the STPRtoolbox.
%
Synopsis:
%  compilemex
%  compilemex( toolboxroot )
%
Description:
%  It calls MEX complier on all C-codes of the STPRtoolbox.
%  If argument toolboxroot is not given then uses 
%   'toolboxroot=pwd'.
%

About: Statistical Pattern Recognition Toolbox
% (C) 1999-2003, Written by Vojtech Franc and Vaclav Hlavac
% <a href="http://www.cvut.cz">Czech Technical University Prague</a>
% <a href="http://www.feld.cvut.cz">Faculty of Electrical Engineering</a>
% <a href="http://cmp.felk.cvut.cz">Center for Machine Perception</a>

Modifications:
% 19-sep-2004, VF
% 16-may-2004, VF
% 5-July-2003, VF
% 20-June-2003, VF
% 23-Jan-2003, VF


fprintf('Compiling MEX files of STPRtool...\n');

if nargin < 1
   Root=pwd;              % get current directory
end

% -- List of functions to be complied ---------------------------
fun(1).source={'$kernels/kernel.c','$kernels/kernel_fun.c'};
fun(1).outdir='$kernels';
fun(1).include='$kernels';

fun(2).source={'$kernels/diagker.c','$kernels/kernel_fun.c'};
fun(2).outdir='$kernels';
fun(2).include='$kernels';

fun(3).source={'$svm/lib/smo1d_mex.c'};
fun(3).outdir='$svm';
fun(3).include='$kernels';

fun(4).source={'$svm/lib/smo_mex.c','$kernels/kernel_fun.c'};
fun(4).outdir='$svm';
fun(4).include='$kernels';

fun(5).source = {'$svm/lib/bsvm2_mex.c','$kernels/kernel_fun.c',...
    '$svm/lib/npa.c','$svm/lib/kozinec.c''$svm/lib/mdm.c'};
fun(5).outdir = '$svm';
fun(5).include = '$kernels';

fun(6).source = {'$misc/knnclass_mex.c'};
fun(6).outdir = '$misc';
fun(6).include = '$';

fun(7).source = {'$svm/lib/ssvm2_mex.c','$kernels/kernel_fun.c',...
    '$svm/lib/npa.c','$svm/lib/kozinec.c''$svm/lib/mdm.c'};
fun(7).outdir = '$svm';
fun(7).include = '$kernels';

fun(8).source={'$kernels/kernelproj_mex.c','$kernels/kernel_fun.c'};
fun(8).outdir='$kernels';
fun(8).include='$kernels';


% -- Compile functions -----------------------------
for i=1:length(fun),
   mexstr = ['mex -O -I' translate(fun(i).include,Root) ...
             ' -outdir ' translate(fun(i).outdir, Root) ' '];
  
  for j=1:length(fun(i).source),    
    mexstr = [mexstr translate(char(fun(i).source(j)),Root) ' '];
  end

  fprintf('%s\n',mexstr);
  
  eval(mexstr);
end

return;

%--translate ---------------------------------------------------------
function translate(p,toolboxroot);
%TRANSLATE Translate unix path to platform specific path
%   TRANSLATE fixes up the path so that it's valid on non-UNIX platforms
%
% This function was derived from MathWork M-file "pathdef.m"

cname = computer;
% Look for VMS, this covers VAX_VMSxx as well as AXP_VMSxx.
%if (length (cname) >= 7) & strcmp(cname(4:7),'_VMS')
%  p = strrep(p,'/','.');
%  p = strrep(p,':','],');
%  p = strrep(p,'$toolbox.','toolbox:[');
%  p = strrep(p,'$','matlab:[');
%  p = [p ']']; % Append a final ']'

% Look for PC
if strncmp(cname,'PC',2)
  p = strrep(p,'/','\');
  p = strrep(p,':',';');
  p = strrep(p,'$',[toolboxroot '\']);

% Look for MAC
elseif strncmp(cname,'MAC',3)
  p = strrep(p,':',':;');
  p = strrep(p,'/',':');
  m = toolboxroot;
  if m(end) ~= ':'
    p = strrep(p,'$',[toolboxroot ':']);
  else
    p = strrep(p,'$',toolboxroot);
  end
else
  p = strrep(p,'$',[toolboxroot '/']);
end