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", if #debug (#core cline) then [LIT "--dbg"] else []),
16      ("ISIGOBJ", [VREF "if $(findstring NO_SIGOBJ,$(OPTIONS)),,$(SIGOBJ)"]),
17      ("MOSML_INCLUDES", [VREF ("patsubst %,-I %,$(ISIGOBJ) \
18                                \ $(INCLUDES) $(PREINCLUDES)")]),
19      ("HOLMOSMLC", [VREF "MOSMLCOMP"]),
20      ("HOLMOSMLC-C", [VREF "MOSMLCOMP", LIT " -c "]),
21      ("MOSMLC",  [VREF "MOSMLCOMP"]),
22      ("MOSMLCOMP", [LIT mosml_indicator]),
23      ("POLY", [LIT (Systeml.protect Systeml.POLY)]),
24      ("POLYMLLIBDIR", [LIT POLYMLLIBDIR]),
25      ("POLY_LDFLAGS", [LIT (spacify (map Systeml.protect POLY_LDFLAGS))]),
26      ("POLY_LDFLAGS_STATIC",
27       [LIT (spacify (map Systeml.protect POLY_LDFLAGS_STATIC))]),
28      ("RELOCBUILD", if #relocbuild cline then [LIT "1"] else [])
29    ]
30  in
31    List.foldl (fn (kv,acc) => env_extend kv acc) (base_environment()) alist
32  end
33
34  fun debug_info (cline : HM_Cline.t) = let
35    val POLYMLLIBDIR =
36        case #polymllibdir cline of NONE => POLYMLLIBDIR0 | SOME s => s
37  in
38    "POLYMLLIBDIR = "^POLYMLLIBDIR
39  end
40
41
42
43end
44