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 nob2002 = Systeml.HAVE_BASIS2002 orelse #no_basis2002 optv 10 val MOSMLDIR = case #mosmldir optv of 11 NONE => Systeml.MOSMLDIR 12 | SOME s => s 13 val MOSMLCOMP = fullPath [MOSMLDIR, "mosmlc"] 14 val basis_string = if nob2002 then [] else [LIT " basis2002.ui"] 15 val alist = [ 16 ("DEBUG_FLAG", if #debug (#core optv) then [LIT "--dbg"] else []), 17 ("MOSML_INCLUDES", 18 [VREF "if $(findstring NO_SIGOBJ,$(OPTIONS)),,-I \ 19 \$(protect $(SIGOBJ))", LIT " "] @ 20 [VREF ("patsubst %,-I %,$(INCLUDES) $(PREINCLUDES)")]), 21 ("HOLMOSMLC", [VREF "MOSMLCOMP", LIT (" -q "), VREF "MOSML_INCLUDES"] @ 22 basis_string), 23 ("HOLMOSMLC-C", 24 [VREF "MOSMLCOMP", LIT (" -q "), VREF "MOSML_INCLUDES", LIT " -c "] @ 25 basis_string @ [LIT " "] @ 26 [VREF ("if $(findstring NO_OVERLAY,$(OPTIONS)),,"^DEFAULT_OVERLAY)]), 27 ("MOSMLC", [VREF "MOSMLCOMP", LIT " ", VREF "MOSML_INCLUDES"]), 28 ("MOSMLDIR", [LIT MOSMLDIR]), 29 ("MOSMLCOMP", [VREF "protect $(MOSMLDIR)/mosmlc"]), 30 ("MOSMLLEX", [VREF "protect $(MOSMLDIR)/mosmllex"]), 31 ("MOSMLYAC", 32 [VREF "protect $(MOSMLDIR)/mosmlyac"])] @ 33 (if Systeml.HAVE_BASIS2002 then [("HAVE_BASIS2002", [LIT "1"])] 34 else []) 35 in 36 List.foldl (fn (kv,acc) => env_extend kv acc) (base_environment()) alist 37 end 38 39 fun debug_info (optv : HM_Cline.t) = 40 let 41 val MOSMLDIR = case #mosmldir optv of 42 NONE => Systeml.MOSMLDIR 43 | SOME s => s 44 in 45 "MOSMLDIR = "^MOSMLDIR 46 end 47 48end (* struct *) 49