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