function ofc_siplt_install(varargin)
  if strversion2num(version)<strversion2num('4.2.0')
    error('Using Octave version %s. Version must be >= 4.2.0. ',version)
  end
  v='0.0.1';
  v_fc_simesh='0.2.0'; % uses fc_simesh install with 'graphics' option to true
  p = inputParser; 
  p.addParamValue('version', v, @ischar ); 
  p.addParamValue('dir', './fc-siplt-full', @ischar );
  p.addParamValue('fc_simesh',v_fc_simesh , @ischar );
  %p.addParamValue('fc_graphimesh',v_fc_simesh , @ischar );
  %p.addParamValue('gmsh_bin','',@ischar);
  p.parse(varargin{:});
  version=p.Results.version;
  fprintf('Parts of the Octave <fc-siplt> package.\nCopyright (C) 2017 F. Cuvelier <cuvelier@math.univ-paris13.fr>\n\n');
  currentdir=pwd;
  fprintf('**************************************\n');
  fprintf('Downloading and installing the package\n');
  fprintf('    <fc-simesh>[%s]\n',p.Results.fc_simesh)
  fprintf('**************************************\n');
  fc_simesh_dir=get_install('simesh',p.Results.fc_simesh,p.Results.dir,'graphics',true);
  fprintf('    <fc-simesh>[%s]: installed\n\n',p.Results.fc_simesh)
  
  fprintf('*** Using instructions \n');
  fprintf('   To use the <fc-siplt> package:\n');
  fprintf('   addpath(''%s'')\n',fc_simesh_dir);
  fprintf('   fc_simesh.init()\n');
  logfile=[currentdir,filesep,'ofc_siplt_set.m'];
  fprintf('\n   See %s\n',logfile);
  fid=fopen(logfile,'w');
  fprintf(fid,'addpath(''%s'')\n',fc_simesh_dir);
  fprintf(fid,'fc_simesh.init()\n');
  fclose(fid);
end

function fulldir=get_install(name,ver,dir)
  mfile=sprintf('ofc_%s_install',name);
  urlfile=sprintf('http://www.math.univ-paris13.fr/~cuvelier/software/codes/Octave/fc-%s/%s/%s.m',name,ver,mfile);
  try
    urlwrite(urlfile,[mfile,'.m']);
  catch
    error('Unable to get :\n  -> %s\n',urlfile);
  end
  eval([mfile,'(''dir'',dir)']) % run installation 
  fulldir=fullfile(pwd,sprintf('%s%sfc_%s-%s',dir,filesep,name,ver));
end

function fulldir=get_inst_fc_gen(name,ver,dir)
  file=sprintf('ofc-%s-%s.tar.gz',name,ver);
  urlfile=sprintf('http://www.math.univ-paris13.fr/~cuvelier/software/codes/Octave/fc-%s/%s/fc_%s-%s.tar.gz',name,ver,name,ver);
  urlwrite(urlfile,file);
  try
    untar(file,dir)
  catch
    error('Unable to get :\n  -> %s\n',urlfile);
  end
  fulldir=fullfile(pwd,sprintf('%s%sfc_%s-%s',dir,filesep,name,ver));
end

function ver=strversion2num(strv)
% convert version string 'x.y.z' in x*10^6+y*10^3+z
S=strsplit(strv,'.');
assert(length(S)==3);
z=str2num(S{3});assert(z<10^3);
ver=z;
y=str2num(S{2});assert(y<10^3);
ver=ver+10^3*y;
x=str2num(S{1});assert(x<10^3);
ver=ver+10^6*x;
end