@@ -2,6 +2,7 @@ open! Dune_engine
2
2
3
3
(* This file is licensed under The MIT License *)
4
4
(* (c) MINES ParisTech 2018-2019 *)
5
+ (* (c) INRIA 2020 *)
5
6
(* Written by: Emilio Jesús Gallego Arias *)
6
7
7
8
open ! Stdune
@@ -39,23 +40,44 @@ let name x = x.name
39
40
let build_vo_dir ~obj_dir x =
40
41
List. fold_left x.prefix ~init: obj_dir ~f: Path.Build. relative
41
42
42
- type obj =
43
- | Dep
44
- | Aux
45
- | Glob
46
- | Obj
47
-
48
- let fname_of_obj t obj =
49
- match obj with
50
- | Dep -> t.name ^ " .v.d"
51
- | Aux -> " ." ^ t.name ^ " .aux"
52
- | Glob -> t.name ^ " .glob"
53
- | Obj -> t.name ^ " .vo"
54
-
55
- let obj_file t obj ~obj_dir =
56
- let vo_dir = build_vo_dir ~obj_dir t in
57
- let fname = fname_of_obj t obj in
58
- Path.Build. relative vo_dir fname
43
+ let cmxs_of_mod ~wrapper_name x =
44
+ let native_base =
45
+ " N" ^ String. concat ~sep: " _" ((wrapper_name :: x.prefix) @ [ x.name ])
46
+ in
47
+ [ native_base ^ " .cmi" ; native_base ^ " .cmxs" ]
48
+
49
+ let dep_file x ~obj_dir =
50
+ let vo_dir = build_vo_dir ~obj_dir x in
51
+ Path.Build. relative vo_dir (x.name ^ " .v.d" )
52
+
53
+ type obj_files_mode =
54
+ | Build
55
+ | Install
56
+
57
+ (* XXX: Remove the install .coq-native hack once rules can output targets in
58
+ multiple subdirs *)
59
+ let obj_files x ~wrapper_name ~mode ~obj_dir ~obj_files_mode =
60
+ let vo_dir = build_vo_dir ~obj_dir x in
61
+ let install_vo_dir = String. concat ~sep: " /" x.prefix in
62
+ let native_objs =
63
+ match mode with
64
+ | Coq_mode. Native ->
65
+ let cmxs_obj = cmxs_of_mod ~wrapper_name x in
66
+ List. map
67
+ ~f: (fun x ->
68
+ ( Path.Build. relative vo_dir x
69
+ , Filename. (concat (concat install_vo_dir " .coq-native" ) x) ))
70
+ cmxs_obj
71
+ | VoOnly -> []
72
+ in
73
+ let obj_files =
74
+ match obj_files_mode with
75
+ | Build -> [ x.name ^ " .vo" ; " ." ^ x.name ^ " .aux" ; x.name ^ " .glob" ]
76
+ | Install -> [ x.name ^ " .vo" ]
77
+ in
78
+ List. map obj_files ~f: (fun fname ->
79
+ (Path.Build. relative vo_dir fname, Filename. concat install_vo_dir fname))
80
+ @ native_objs
59
81
60
82
let to_dyn { source; prefix; name } =
61
83
let open Dyn.Encoder in
0 commit comments