diff --git a/lib/sasacore/simuState.ml b/lib/sasacore/simuState.ml index eaa883944e44cbea2eb18e02f014ca2fcfdb9076..aaa67170187608ada1ecc68016de826c44b34767 100644 --- a/lib/sasacore/simuState.ml +++ b/lib/sasacore/simuState.ml @@ -1,4 +1,4 @@ -(* Time-stamp: <modified the 19/01/2023 (at 11:08) by Erwan Jahier> *) +(* Time-stamp: <modified the 25/01/2023 (at 10:47) by Erwan Jahier> *) open Register open Topology @@ -179,7 +179,7 @@ let (env_rif_decl: SasArg.t -> 'v Process.t list -> string) = (List.map (fun (base, tstr) -> Printf.sprintf "\"%s\":%s" base tstr) ssl) -let (make : bool -> string array -> 'v t) = +let rec (make : bool -> string array -> 'v t) = fun dynlink argv -> let args = try SasArg.parse argv; @@ -335,10 +335,14 @@ let (make : bool -> string array -> 'v t) = } with | Dynlink.Error e -> - Printf.eprintf " [sasa] Error when dynlinking (Sasacore.make): %s\n%!" - (Dynlink.error_message e); - flush_all(); - exit 2 + let res = Sys.command (Printf.sprintf "make %s.cmxs"(Filename.remove_extension args.topo)) in + if res = 0 then make dynlink argv else ( + Printf.eprintf " [sasa] %s\n%!" + (Dynlink.error_message e); + Printf.eprintf " [sasa] It looks like you didn't compile your Ocaml algorithm.\n%!"; + flush_all(); + exit res + ) | e -> Printf.eprintf " [sasa] Error (Sasacore.make): %s\n%!" (Printexc.to_string e); flush_all();