0.92
[imt.git] / link.ml
blob39c37c10c72dc5ec8ff6350670906a9e1f7b0052
1 let emit_endline = ref prerr_endline
3 let process_link_output s =
4 if s <> "LINK : warning LNK4044: unrecognized option '/nologo'; ignored"
5 then
6 !emit_endline s
8 let invoke argv arg_start =
9 let is_empty s =
10 let rec loop i =
11 if i = String.length s
12 then
13 true
14 else
15 if s.[i] = ' ' || s.[i] = '\t'
16 then
17 loop (succ i)
18 else
19 false
21 loop 0
24 let find_from pred arr pos =
25 let rec loop i =
26 if i >= Array.length arr
27 then
28 false
29 else
30 pred arr.(i) || loop (succ i)
32 loop pos
35 let _ =
36 if find_from (fun s -> s = "/dump" || s = "-dump") argv arg_start
37 then
38 emit_endline := print_endline
41 let args = Utils.make_arg_string Path.check_and_modify_absolute argv arg_start in
42 let tool = Utils.tool_name "link" in
43 let command =
44 if is_empty args
45 then
46 Wine.command tool
47 else
48 Wine.command tool ^ " " ^ args ^ " /nologo"
50 let ic = Unix.open_process_in command in
51 Utils.iter_crlf_chan ic process_link_output;
52 let code = Utils.close_process_in ic in
53 code