2018-06-15 05:20:03 +00:00
|
|
|
(* -*- tuareg -*- *)
|
2018-06-06 13:48:37 +00:00
|
|
|
open Dune;;
|
|
|
|
open Stdune;;
|
|
|
|
|
2018-06-20 18:42:53 +00:00
|
|
|
let sexp_pp = Sexp.pp Dune;;
|
2018-06-06 13:48:37 +00:00
|
|
|
#install_printer Jbuild.Mode_conf.pp;;
|
|
|
|
#install_printer Binary_kind.pp;;
|
2018-06-20 18:42:53 +00:00
|
|
|
#install_printer sexp_pp;;
|
2018-06-06 13:48:37 +00:00
|
|
|
|
|
|
|
(* Jbuild.Executables.Link_mode.t *)
|
|
|
|
let test s =
|
2018-06-19 10:53:16 +00:00
|
|
|
Sexp.Of_sexp.parse Jbuild.Executables.Link_mode.t Univ_map.empty
|
2018-06-06 13:48:37 +00:00
|
|
|
(Sexp.parse_string ~fname:"" ~mode:Sexp.Parser.Mode.Single s)
|
|
|
|
[%%expect{|
|
2018-06-20 18:42:53 +00:00
|
|
|
val sexp_pp : Format.formatter -> Usexp.t -> unit = <fun>
|
|
|
|
val test : string -> Jbuild.Executables.Link_mode.t = <fun>
|
2018-06-06 13:48:37 +00:00
|
|
|
|}]
|
|
|
|
|
|
|
|
(* Link modes can be read as a (<mode> <kind>) list *)
|
|
|
|
test "(best exe)"
|
|
|
|
[%%expect{|
|
2018-06-20 18:42:53 +00:00
|
|
|
- : Jbuild.Executables.Link_mode.t = {mode = best; kind = exe}
|
2018-06-06 13:48:37 +00:00
|
|
|
|}]
|
|
|
|
|
|
|
|
(* Some shortcuts also exist *)
|
|
|
|
test "exe"
|
|
|
|
[%%expect{|
|
2018-06-20 18:42:53 +00:00
|
|
|
- : Jbuild.Executables.Link_mode.t = {mode = best; kind = exe}
|
2018-06-06 13:48:37 +00:00
|
|
|
|}]
|
|
|
|
test "object"
|
|
|
|
[%%expect{|
|
2018-06-20 18:42:53 +00:00
|
|
|
- : Jbuild.Executables.Link_mode.t = {mode = best; kind = object}
|
2018-06-06 13:48:37 +00:00
|
|
|
|}]
|
|
|
|
test "shared_object"
|
|
|
|
[%%expect{|
|
2018-06-20 18:42:53 +00:00
|
|
|
- : Jbuild.Executables.Link_mode.t = {mode = best; kind = shared_object}
|
2018-06-06 13:48:37 +00:00
|
|
|
|}]
|
|
|
|
test "byte"
|
|
|
|
[%%expect{|
|
2018-06-20 18:42:53 +00:00
|
|
|
- : Jbuild.Executables.Link_mode.t = {mode = byte; kind = exe}
|
2018-06-06 13:48:37 +00:00
|
|
|
|}]
|
|
|
|
test "native"
|
|
|
|
[%%expect{|
|
2018-06-20 18:42:53 +00:00
|
|
|
- : Jbuild.Executables.Link_mode.t = {mode = native; kind = exe}
|
2018-06-06 13:48:37 +00:00
|
|
|
|}]
|
|
|
|
|
|
|
|
(* Jbuild.Executables.Link_mode.sexp_of_t *)
|
|
|
|
let test l =
|
|
|
|
Jbuild.Executables.Link_mode.sexp_of_t l
|
|
|
|
[%%expect{|
|
2018-06-20 18:42:53 +00:00
|
|
|
val test : Jbuild.Executables.Link_mode.t -> Usexp.t = <fun>
|
2018-06-06 13:48:37 +00:00
|
|
|
|}]
|
|
|
|
|
|
|
|
(* In the general case, modes are serialized as a list *)
|
|
|
|
test {Jbuild.Executables.Link_mode.kind = Shared_object; mode = Byte }
|
|
|
|
[%%expect{|
|
2018-06-20 18:42:53 +00:00
|
|
|
- : Usexp.t = (byte shared_object)
|
2018-06-06 13:48:37 +00:00
|
|
|
|}]
|
|
|
|
|
|
|
|
(* But the specialized ones are serialized in the minimal version *)
|
|
|
|
test Jbuild.Executables.Link_mode.exe
|
|
|
|
[%%expect{|
|
2018-06-20 18:42:53 +00:00
|
|
|
- : Usexp.t = exe
|
2018-06-06 13:48:37 +00:00
|
|
|
|}]
|