Skip to content

Commit

Permalink
Provide separate functions for bin_extension and solo5_bindings_pkg
Browse files Browse the repository at this point in the history
These two things are hardly related, keep them separate
  • Loading branch information
hannesm committed Oct 24, 2020
1 parent 54c6eef commit 547546b
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 13 deletions.
2 changes: 1 addition & 1 deletion lib/mirage.ml
Expand Up @@ -240,7 +240,7 @@ module Project = struct
package ~min:"6.0.0" ~max:"7.0.0" "mirage-xen" ::
common
| #Mirage_key.mode_solo5 as tgt ->
package ~min:"0.6.0" ~max:"0.7.0" ~ocamlfind:[] (fst (Mirage_configure_solo5.solo5_bindings_pkg tgt)) ::
package ~min:"0.6.0" ~max:"0.7.0" ~ocamlfind:[] (Mirage_configure_solo5.solo5_bindings_pkg tgt) ::
package ~min:"0.6.1" ~max:"0.7.0" "mirage-solo5" ::
common

Expand Down
2 changes: 1 addition & 1 deletion lib/mirage_configure.ml
Expand Up @@ -33,7 +33,7 @@ let opam_path ~name = Fpath.(v name + "opam")

let artifact ~name = function
| #Mirage_key.mode_solo5 | #Mirage_key.mode_xen as tgt ->
let ext = snd (Mirage_configure_solo5.solo5_bindings_pkg tgt) in
let ext = Mirage_configure_solo5.bin_extension tgt in
let file = Fpath.v (name ^ ext) in
file, file
| #Mirage_key.mode_unix ->
Expand Down
24 changes: 17 additions & 7 deletions lib/mirage_configure_solo5.ml
Expand Up @@ -47,13 +47,23 @@ let generate_manifest_c () =
Log.info (fun m -> m "executing %a" Bos.Cmd.pp cmd);
Bos.OS.Cmd.run cmd

let bin_extension = function
| `Virtio -> ".virtio"
| `Muen -> ".muen"
| `Hvt -> ".hvt"
| `Genode -> ".genode"
| `Spt -> ".spt"
| `Xen | `Qubes -> ".xen"
| _ ->
invalid_arg "extension only defined for solo5 targets"

let solo5_bindings_pkg = function
| `Virtio -> "solo5-bindings-virtio", ".virtio"
| `Muen -> "solo5-bindings-muen", ".muen"
| `Hvt -> "solo5-bindings-hvt", ".hvt"
| `Genode -> "solo5-bindings-genode", ".genode"
| `Spt -> "solo5-bindings-spt", ".spt"
| `Xen | `Qubes -> "solo5-bindings-xen", ".xen"
| `Virtio -> "solo5-bindings-virtio"
| `Muen -> "solo5-bindings-muen"
| `Hvt -> "solo5-bindings-hvt"
| `Genode -> "solo5-bindings-genode"
| `Spt -> "solo5-bindings-spt"
| `Xen | `Qubes -> "solo5-bindings-xen"
| _ ->
invalid_arg "solo5 bindings package only defined for solo5 targets"

Expand All @@ -66,7 +76,7 @@ let solo5_platform_pkg = function
let cflags pkg = pkg_config pkg ["--cflags"]

let compile_manifest target =
let bindings, _post = solo5_bindings_pkg target in
let bindings = solo5_bindings_pkg target in
let c = "_build/manifest.c" in
let obj = "_build/manifest.o" in
cflags bindings >>= fun cflags ->
Expand Down
4 changes: 3 additions & 1 deletion lib/mirage_configure_solo5.mli
Expand Up @@ -3,7 +3,9 @@ open Rresult
val solo5_manifest_path : Fpath.t
val clean_manifest : unit -> (unit, [> R.msg ]) result

val solo5_bindings_pkg : [> Mirage_key.mode_solo5 | Mirage_key.mode_xen ] -> string * string
val bin_extension : [> Mirage_key.mode_solo5 | Mirage_key.mode_xen ] -> string

val solo5_bindings_pkg : [> Mirage_key.mode_solo5 | Mirage_key.mode_xen ] -> string
val solo5_platform_pkg : [> Mirage_key.mode_solo5 | Mirage_key.mode_xen ] -> string

val generate_manifest_json : bool -> unit -> (unit, [> R.msg ]) result
Expand Down
2 changes: 1 addition & 1 deletion lib/mirage_impl_ip.ml
Expand Up @@ -38,7 +38,7 @@ let right_tcpip_library ?ocamlfind ~sublibs pkg =
Key.match_ Key.(value target) @@ function
| #Mirage_key.mode_unix ->
[ package ~min ~max ?ocamlfind ~sublibs:("unix"::sublibs) pkg ]
| _ ->
| #Mirage_key.mode_xen | #Mirage_key.mode_solo5 ->
[ package ~min ~max ?ocamlfind ~sublibs pkg ]

let ipv4_keyed_conf ~ip ?gateway () = impl @@ object
Expand Down
5 changes: 3 additions & 2 deletions lib/mirage_link.ml
Expand Up @@ -34,14 +34,15 @@ let link info name target _target_debug =
Bos.OS.Cmd.run link >>= fun () ->
Ok name
| #Mirage_key.mode_solo5 | #Mirage_key.mode_xen ->
let bindings, post = Mirage_configure_solo5.solo5_bindings_pkg target in
let bindings = Mirage_configure_solo5.solo5_bindings_pkg target in
let platform = Mirage_configure_solo5.solo5_platform_pkg target in
extra_c_artifacts "freestanding" libs >>= fun c_artifacts ->
static_libs platform
>>= fun static_libs ->
ldflags bindings >>= fun ldflags ->
ldpostflags bindings >>= fun ldpostflags ->
let out = name ^ post in
let extension = Mirage_configure_solo5.bin_extension target in
let out = name ^ extension in
let ld = find_ld bindings in
let linker =
Bos.Cmd.(v ld %% of_list ldflags % "_build/main.native.o" %
Expand Down

0 comments on commit 547546b

Please sign in to comment.