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