Mercurial > fem-fenics-eugenio
diff inst/import_ufl_Functional.m @ 231:e3f57f92fa66
Avoid just-in-time compilation when not needed
* inst/private/check_hash.m: check whether the previous compilation used
the same ufl file
* inst/private/save_hash.m: save to disk ufl file's md5sum for future
comparison
* inst/private/check_oct_files.m: ensure the expected oct files are present
* inst/import_ufl_*.m: add checks using the logic above
author | Eugenio Gianniti <eugenio.gianniti@mail.polimi.it> |
---|---|
date | Sat, 14 Jun 2014 15:27:43 +0200 |
parents | 0de6ca5e31a2 |
children | 072aee55bb75 |
line wrap: on
line diff
--- a/inst/import_ufl_Functional.m Fri Jun 13 18:45:40 2014 +0200 +++ b/inst/import_ufl_Functional.m Sat Jun 14 15:27:43 2014 +0200 @@ -32,24 +32,27 @@ error ("import_ufl_Functional: first argument is not a valid string"); endif - n = length (mfilename ("fullpath")) - length (mfilename()); - path = strtrunc(mfilename ("fullpath"), n); + if (check_hash (var_prob) || ! check_oct_files (var_prob, "Functional")) + n = length (mfilename ("fullpath")) - length (mfilename()); + path = strtrunc(mfilename ("fullpath"), n); - private = fullfile (path, "include/"); - output = generate_fun (var_prob); - output += generate_makefile (var_prob, private); - if output != 0 - error ("Compilation failed"); - else - [output, textfile] = system (sprintf ("make -f Makefile_%s fun", var_prob)); + private = fullfile (path, "include/"); + output = generate_fun (var_prob); + output += generate_makefile (var_prob, private); if output != 0 - display (text); error ("Compilation failed"); - endif - [output, textfile] = system (sprintf ("make -f Makefile_%s clean", var_prob)); - if output != 0 - display (text); - error ("Compilation failed"); + else + [output, textfile] = system (sprintf ("make -f Makefile_%s fun", var_prob)); + if output != 0 + display (text); + error ("Compilation failed"); + endif + [output, textfile] = system (sprintf ("make -f Makefile_%s clean", var_prob)); + if output != 0 + display (text); + error ("Compilation failed"); + endif + save_hash (var_prob); endif endif endfunction