fun loop (smls, mlts) =
(case Posix.FileSys.readdir dir of
- "" => (smls, mlts)
- | fname =>
+ NONE => (smls, mlts)
+ | SOME fname =>
(case getExt fname of
"mlt" => loop (smls, (path ^ "/" ^ fname) :: mlts)
| ("sml"|"sig") =>
val _ = TextIO.closeOut outf
val outf = TextIO.openOut (outPath ^ "/.build.sml")
- val _ = TextIO.output (outf, "Control.quotation := true;\n")
+ val _ = TextIO.output (outf, "Control.quotation := true;\nControl.printWarnings := false;\n")
fun printMlts [] = ()
| printMlts (h::t) =
(TextIO.output (outf, "\"" ^ h ^ "\"");
val _ = TextIO.output (outf, "]\nend\n\nstructure Main = MainFn(Templates)\n")
val _ = TextIO.closeOut outf
+ val outf = TextIO.openOut (outPath ^ "/.build.sml")
+ val _ = TextIO.output (outf, "Control.printWarnings := false;\nCM.make \"sources.cm\";\nSMLofNJ.exportFn (\"" ^ outPath ^ "/heap\", Main.main);\n")
+ val _ = TextIO.closeOut outf
+
val outf = TextIO.openOut (outPath ^ "/sources.cm")
val printNames = app (fn name => TextIO.output (outf, "\t" ^ name ^ "\n"))
printNames outputs;
TextIO.output (outf, "\n\t(* Driver *)\n\n\t_main.sml\n");
TextIO.closeOut outf;
- if OS.Process.system (sml ^ "/ml-build " ^ outPath ^ "/sources.cm Main.main " ^ outPath ^ "/heap") = OS.Process.success then
+ if OS.Process.system ("cat " ^ outPath ^ "/.build.sml | " ^ sml ^ "/sml") = OS.Process.success then
(ListPair.app makeScript (scripts, exports);
OS.Process.success)
else