1signature buildutils =
2sig
3
4  val startup_check : unit -> unit
5  val normPath : string -> string
6  val fullPath : string list -> string
7  val quote : string -> string
8  val die : string -> 'a
9  val warn : string -> unit
10
11  val SIGOBJ : string
12  val EXECUTABLE : string
13  val SYSTEML : string list -> bool
14  val HOLMAKE : string
15
16  val process_cline :
17      unit -> {SRCDIRS : (string * int) list} buildcline_dtype.final_options
18
19
20  val map_dir : (string * string -> unit) -> string -> unit
21                (* f gets dirname * filename *)
22  val rem_file : string -> unit
23  val copy : string -> string -> unit (* copy src dest *)
24  val bincopy : string -> string -> unit (* bincopy src dest *)
25  val update_copy : (string -> string -> unit) -> string -> string -> unit
26                    (* copy fn. applied to args, but modTime on destination set
27                       to be that of src *)
28  val cp : bool -> string -> string -> unit
29           (* if boolean is true, then update_copy bincopy,
30              else update_copy copy *)
31
32  val mv : bool -> string -> string -> unit
33           (* if boolean is true, renames (/bin/mv) src to dest.  Otherwise
34              does update_copy bincopy *)
35
36  val clean_sigobj : unit -> unit
37
38  val check_against : string -> string -> unit
39    (* [check_against f1 f2] checks to see if file f1 is older than file f2
40       and prints big warning if so *)
41
42  val app_sml_files : (string -> unit) -> {dirname : string} -> unit
43    (* applies function to every .sml and .sig file in given
44       directory *)
45
46  val transfer_file : (bool -> string -> string -> unit) -> string ->
47                      (string * string) -> unit
48      (* transfer_file opn dir (d,f)
49           opn will be cp, mv or a symbolic link operation;
50           dir is destination directory
51           (d,f) is source file info (directory and file) *)
52
53  val build_help : bool -> unit
54    (* boolean says whether or not to build the theory graph *)
55
56  val build_dir : (string -> unit) -> int -> (string * int) -> unit
57      (* build_dir Holmake i (dir, j)
58           Holmake calls Holmake in the provided directory argument;
59           i is the user's specified selftest level
60           dir is the directory to make
61           j is the selftest level as given in the build sequence for dir *)
62
63  val make_buildstamp : unit -> unit
64  val setup_logfile : unit -> unit
65  val finish_logging : bool -> unit
66
67  val Holmake : (string -> string list -> 'a) -> ('a -> bool) ->
68                (unit -> string list) ->
69                ('a -> string) ->
70                int -> string -> unit
71      (* [Holmake sysl isSuccess extras analysis selftest dir] invokes
72         Holmake, using function extras to generate extra commandline
73         arguments, and function analysis to generate extra
74         diagnostics from the exit code of the call to Holmake. The
75         dir argument is also used for feedback; the assumption is
76         that the current directory is already dir. The selftest
77         parameter is the user's specification of the selftest level.
78         The sysl function actually does the invocation (fork/exec,
79         whatever), taking the path to the thing to run, and the
80         additional arguments. The isSuccess parameter interprets
81         whether or not the result of sysl constitutes a success. *)
82
83end
84