1structure HM_BaseEnv :> HM_BaseEnv =
2struct
3
4  open Systeml Holmake_tools
5
6  fun make_base_env (optv : HM_Cline.t) =
7    let
8      open Holmake_types
9      val MOSMLDIR = case #mosmldir optv of
10                         NONE => Systeml.MOSMLDIR
11                       | SOME s => s
12      val MOSMLCOMP = fullPath [MOSMLDIR, "mosmlc"]
13      val alist = [
14        ("DEBUG_FLAG",
15         if isSome (#debug (#core optv)) then [LIT "--dbg"] else []),
16        ("MOSML_INCLUDES",
17         [VREF "if $(findstring NO_SIGOBJ,$(OPTIONS)),,-I \
18                                   \$(protect $(SIGOBJ))", LIT " "] @
19         [VREF ("patsubst %,-I %,$(INCLUDES) $(PREINCLUDES)")]),
20        ("HOLMOSMLC", [VREF "MOSMLCOMP", LIT (" -q "), VREF "MOSML_INCLUDES"]),
21        ("HOLMOSMLC-C",
22         [VREF "MOSMLCOMP", LIT (" -q "), VREF "MOSML_INCLUDES", LIT " -c ",
23          VREF ("if $(findstring NO_OVERLAY,$(OPTIONS)),,"^DEFAULT_OVERLAY)]),
24        ("MOSMLC",  [VREF "MOSMLCOMP", LIT " ", VREF "MOSML_INCLUDES"]),
25        ("MOSMLDIR", [LIT MOSMLDIR]),
26        ("MOSMLCOMP", [VREF "protect $(MOSMLDIR)/mosmlc"]),
27        ("MOSMLLEX", [VREF "protect $(MOSMLDIR)/mosmllex"]),
28        ("MOSMLYAC", [VREF "protect $(MOSMLDIR)/mosmlyac"])
29      ]
30    in
31      List.foldl (fn (kv,acc) => env_extend kv acc) (base_environment()) alist
32    end
33
34  fun debug_info (optv : HM_Cline.t) =
35    let
36      val MOSMLDIR = case #mosmldir optv of
37                         NONE => Systeml.MOSMLDIR
38                       | SOME s => s
39    in
40      "MOSMLDIR = "^MOSMLDIR
41    end
42
43end (* struct *)
44