From b32eb934ed84df4e85319edd7ef3773c68ffafa2 Mon Sep 17 00:00:00 2001 From: Olivier Nicole Date: Sat, 21 Sep 2024 23:52:21 +0200 Subject: [PATCH] CR: Config.target --- compiler/bin-js_of_ocaml/compile.ml | 1 + compiler/bin-js_of_ocaml/link.ml | 1 + compiler/lib-dynlink/js_of_ocaml_compiler_dynlink.ml | 1 + compiler/lib-runtime-files/gen/gen.ml | 1 + compiler/lib/config.ml | 9 +++++---- 5 files changed, 9 insertions(+), 4 deletions(-) diff --git a/compiler/bin-js_of_ocaml/compile.ml b/compiler/bin-js_of_ocaml/compile.ml index 60a0110b08..cc7b2c34c6 100644 --- a/compiler/bin-js_of_ocaml/compile.ml +++ b/compiler/bin-js_of_ocaml/compile.ml @@ -90,6 +90,7 @@ let run } = let include_cmis = toplevel && not no_cmis in let custom_header = common.Jsoo_cmdline.Arg.custom_header in + Config.set_target `JavaScript; Jsoo_cmdline.Arg.eval common; Linker.reset (); (match output_file with diff --git a/compiler/bin-js_of_ocaml/link.ml b/compiler/bin-js_of_ocaml/link.ml index 45c2dd0c0e..0cd273b600 100644 --- a/compiler/bin-js_of_ocaml/link.ml +++ b/compiler/bin-js_of_ocaml/link.ml @@ -150,6 +150,7 @@ let f ; mklib ; toplevel } = + Config.set_target `JavaScript; Jsoo_cmdline.Arg.eval common; Linker.reset (); let with_output f = diff --git a/compiler/lib-dynlink/js_of_ocaml_compiler_dynlink.ml b/compiler/lib-dynlink/js_of_ocaml_compiler_dynlink.ml index 8ff9e3d8eb..583323ab62 100644 --- a/compiler/lib-dynlink/js_of_ocaml_compiler_dynlink.ml +++ b/compiler/lib-dynlink/js_of_ocaml_compiler_dynlink.ml @@ -26,6 +26,7 @@ let normalize_bytecode code = Bytes.to_string b let () = + Config.set_target `JavaScript; let global = J.pure_js_expr "globalThis" in Config.Flag.set "use-js-string" (Jsoo_runtime.Sys.Config.use_js_string ()); Config.Flag.set "effects" (Jsoo_runtime.Sys.Config.effects ()); diff --git a/compiler/lib-runtime-files/gen/gen.ml b/compiler/lib-runtime-files/gen/gen.ml index bdf330f4e8..7f920cc953 100644 --- a/compiler/lib-runtime-files/gen/gen.ml +++ b/compiler/lib-runtime-files/gen/gen.ml @@ -51,6 +51,7 @@ let rec list_product l = let bool = [ true; false ] let () = + Js_of_ocaml_compiler.Config.set_target `JavaScript; let () = set_binary_mode_out stdout true in match Array.to_list Sys.argv with | [] -> assert false diff --git a/compiler/lib/config.ml b/compiler/lib/config.ml index aad34fd42c..c49751610f 100644 --- a/compiler/lib/config.ml +++ b/compiler/lib/config.ml @@ -183,11 +183,12 @@ end (****) -let target_ : [ `JavaScript | `Wasm ] option ref = ref None +let target_ : [ `JavaScript | `Wasm | `None ] ref = ref `None let target () = match !target_ with - | Some t -> t - | None -> failwith "target was not set" + | `None -> failwith "target was not set" + | `JavaScript | `Wasm as t -> t -let set_target t = target_ := Some t +let set_target (t : [ `JavaScript | `Wasm ]) = + target_ := (t :> [ `JavaScript | `Wasm | `None ])