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