Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Diff of /sml/trunk/src/cm/tools/main/tools-fn.sml
ViewVC logotype

Diff of /sml/trunk/src/cm/tools/main/tools-fn.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 756, Thu Dec 14 16:01:33 2000 UTC revision 1895, Fri Feb 24 22:23:53 2006 UTC
# Line 27  Line 27 
27                extensionStyle, template, dflopts } = args                extensionStyle, template, dflopts } = args
28          val template = getOpt (template, "%c %s")          val template = getOpt (template, "%c %s")
29          fun err m = raise ToolError { tool = tool, msg = m }          fun err m = raise ToolError { tool = tool, msg = m }
30          fun rule { spec, context, native2pathmaker, defaultClassOf } = let          fun rule { spec, context, native2pathmaker, defaultClassOf, sysinfo } = let
31              val { name, mkpath, opts = oto, derived, ... } : spec = spec              val { name, mkpath, opts = oto, derived, ... } : spec = spec
32              val opts = getOpt (oto, dflopts)              val opts = getOpt (oto, dflopts)
33              val sol = let               (* only use STRING options for %o *)              val sol = let               (* only use STRING options for %o *)
# Line 49  Line 49 
49                                             derived = true })                                             derived = true })
50                       tfiles)                       tfiles)
51              fun runcmd () = let              fun runcmd () = let
52                  val cmdname = mkCmdName cmdStdPath                  val cmdname = mkCmdName (cmdStdPath ())
53                  fun fill ([], sl) = concat (rev sl)                  val cmd =
54                    | fill (#"%" :: #"%" :: t, sl) = fill (t, "%" :: sl)                      Subst.substitute
55                    | fill (#"%" :: #"c" :: t, sl) = fill (t, cmdname :: sl)                          [{ prefix = "%",
56                    | fill (#"%" :: #"s" :: t, sl) = fill (t, nativename :: sl)                             substitutions = [Subst.subfor "%c" cmdname,
57                    | fill (#"%" :: t, sl0) = let                                              Subst.subfor "%s" nativename,
58                          val o0 = Char.ord #"0"                                              Subst.subfor "%%" "%",
59                          fun select (0, cl, sl, ol, sel) =                                              Subst.subnsel (1, #"o", fn x => x, " ") sol,
60                              fill (cl, foldl (fn (x, l) => sel x :: " " :: l)                                              Subst.subnsel (1, #"t", #1, " ") tfiles] }]
61                                              sl0 ol)                          template
                           | select (n, cl, sl, ol, sel) =  
                             (fill (cl, sel (List.nth (ol, n-1)) :: sl0)  
                              handle General.Subscript => fill (cl, sl))  
                         fun loop (n, [], sl) = fill ([], sl)  
                           | loop (n, t as (c :: t'), sl) =  
                             if c >= #"0" andalso c <= #"9" then  
                                 loop (n * 10 + Char.ord c - o0,  
                                       t', String.str c :: sl)  
                             else let  
                                 val sl = String.str c :: sl  
                             in  
                                 case c of  
                                     #"o" => select (n, t', sl, sol, fn x => x)  
                                   | #"t" => select (n, t', sl, tfiles, #1)  
                                   | _ => fill (t', sl)  
                             end  
                     in  
                         loop (0, t, "%" :: sl0)  
                     end  
                   | fill (c :: t, sl) = fill (t, String.str c :: sl)  
                 val cmd = fill (String.explode template, [])  
62              in              in
63                  Say.vsay ["[", cmd, "]\n"];                  Say.vsay ["[", cmd, "]\n"];
64                  if OS.Process.system cmd = OS.Process.success then ()                  if OS.Process.system cmd = OS.Process.success then ()
# Line 104  Line 83 
83          val suffixclass = "suffix"          val suffixclass = "suffix"
84          val empty_expansion =          val empty_expansion =
85              ({ cmfiles = [], smlfiles = [], sources = [] }, [])              ({ cmfiles = [], smlfiles = [], sources = [] }, [])
86          fun toolrule { spec, context, native2pathmaker, defaultClassOf } =          fun toolrule { spec, context, native2pathmaker, defaultClassOf, sysinfo } =
87              let val { name, mkpath, opts, ... } : spec = spec              let val { name, mkpath, opts, ... } : spec = spec
88                  fun err m = raise ToolError { tool = toolclass, msg = m }                  fun err m = raise ToolError { tool = toolclass, msg = m }
89                  val p = srcpath (mkpath ())                  val p = srcpath (mkpath ())
# Line 115  Line 94 
94                              else err "tool registration failed"                              else err "tool registration failed"
95                    | SOME _ => err "no tool options are recognized"                    | SOME _ => err "no tool options are recognized"
96              end              end
97          fun suffixrule { spec, context, native2pathmaker, defaultClassOf } =          fun suffixrule { spec, context, native2pathmaker, defaultClassOf, sysinfo } =
98              let val { name = s, opts, ... } : spec = spec              let val { name = s, opts, ... } : spec = spec
99                  fun err m = raise ToolError { tool = suffixclass, msg = m }                  fun err m = raise ToolError { tool = suffixclass, msg = m }
100                  fun reg c =                  fun reg c =
# Line 133  Line 112 
112          val _ = registerClass (toolclass, toolrule)          val _ = registerClass (toolclass, toolrule)
113          val _ = registerClass (suffixclass, suffixrule)          val _ = registerClass (suffixclass, suffixrule)
114      end      end
115    
116        fun boolcontrol (name, doc, default) =
117            StdConfig.new (ControlUtil.Cvt.bool, name, doc, default)
118  end  end

Legend:
Removed from v.756  
changed lines
  Added in v.1895

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0