1structure HM_BaseEnv :> HM_BaseEnv =
2struct
3
4  open Systeml Holmake_tools
5  val mosml_indicator = "%%MOSCOWML_INDICATOR%%"
6
7  val POLYMLLIBDIR0 = Systeml.POLYMLLIBDIR;
8
9
10  fun make_base_env (cline : HM_Cline.t) = let
11    open Holmake_types
12    val POLYMLLIBDIR =
13        case #polymllibdir cline of NONE => POLYMLLIBDIR0 | SOME s => s
14    val alist = [
15      ("DEBUG_FLAG",
16       if isSome (#debug (#core cline)) then [LIT "--dbg"] else []),
17      ("ISIGOBJ", [VREF "if $(findstring NO_SIGOBJ,$(OPTIONS)),,$(SIGOBJ)"]),
18      ("MOSML_INCLUDES", [VREF ("patsubst %,-I %,$(ISIGOBJ) \
19                                \ $(INCLUDES) $(PREINCLUDES)")]),
20      ("HOLMOSMLC", [VREF "MOSMLCOMP"]),
21      ("HOLMOSMLC-C", [VREF "MOSMLCOMP", LIT " -c "]),
22      ("MOSMLC",  [VREF "MOSMLCOMP"]),
23      ("MOSMLCOMP", [LIT mosml_indicator]),
24      ("POLY", [LIT (Systeml.protect Systeml.POLY)]),
25      ("POLYMLLIBDIR", [LIT POLYMLLIBDIR]),
26      ("POLY_LDFLAGS", [LIT (spacify (map Systeml.protect POLY_LDFLAGS))]),
27      ("POLY_LDFLAGS_STATIC",
28       [LIT (spacify (map Systeml.protect POLY_LDFLAGS_STATIC))]),
29      ("RELOCBUILD", if #relocbuild cline then [LIT "1"] else [])
30    ]
31  in
32    List.foldl (fn (kv,acc) => env_extend kv acc) (base_environment()) alist
33  end
34
35  fun debug_info (cline : HM_Cline.t) = let
36    val POLYMLLIBDIR =
37        case #polymllibdir cline of NONE => POLYMLLIBDIR0 | SOME s => s
38  in
39    "POLYMLLIBDIR = "^POLYMLLIBDIR
40  end
41
42
43
44end
45