C build tool of the 21st century
at main 33 lines 925 B view raw
1type path = Eio.Fs.dir_ty Eio.Path.t 2 3module String_set = Set.Make (String) 4module String_map = Map.Make (String) 5 6module Path_set = Set.Make (struct 7 type t = path 8 9 let compare a b = 10 let a = Eio.Path.native_exn a in 11 let b = Eio.Path.native_exn b in 12 String.compare a b 13end) 14 15module Source_file = struct 16 type t = { path : path; flags : Flags.t; root : path } 17 18 let v ?flags ~root path = 19 { path; flags = Option.value ~default:(Flags.v ()) flags; root } 20 21 let ext { path; _ } = Util.ext path 22end 23 24module Object_file = struct 25 type t = { source : Source_file.t; path : path; flags : Flags.t } 26 27 let v ?flags ~source path = 28 { source; path; flags = Option.value ~default:(Flags.v ()) flags } 29 30 let of_source ?flags ~root ~build_name ~build_dir source = 31 let obj_file = Util.relative_to root source.Source_file.path ^ ".o" in 32 v ?flags ~source @@ Eio.Path.(build_dir / build_name / obj_file) 33end