let main () =
  if From_parameters.PathDeps.get ()
  then Db.From.Record_From_Callbacks.extend check_pathdeps;


  let not_quiet = From_parameters.verbose_atleast 1 in
  let forcedeps = From_parameters.ForceDeps.get () in
  let forcecalldeps = From_parameters.ForceCallDeps.get () in
  if forcedeps then begin
    !Db.From.compute_all ();
    From_parameters.result "%t@\n====== DEPENDENCIES COMPUTED ======" !Db.From.display
  end;
  if forcecalldeps then !Db.From.compute_all_calldeps ();
  if not_quiet && forcecalldeps then begin
    From_parameters.result "====== DISPLAYING CALLWISE DEPENDENCIES ======@\n%t@\n====== END OF CALLWISE DEPENDENCIES ======"
      (fun fmt ->
         !Db.From.Callwise.iter
           (fun ki d ->
              let id,typ =
                match ki with
                | Cil_types.Kglobal ->
                    "entry point",
                    Kernel_function.get_type (fst (Globals.entry_point ()))
                | Cil_types.Kstmt s ->
                    string_of_int s.Cil_types.sid,
                    let f =
                       try
                         Kernel_function.Hptset.min_elt
                           (Db.Value.call_to_kernel_function s)
                       with Not_found -> assert false
                    in
                    Kernel_function.get_type f
              in
              Format.fprintf fmt
                "@[call %s:@ %a@\n@]"
                id (Function_Froms.pretty_with_type typ) d))
  end