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/main/cm-boot.sml
ViewVC logotype

Diff of /sml/trunk/src/cm/main/cm-boot.sml

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

revision 691, Tue Jul 25 07:20:24 2000 UTC revision 692, Thu Jul 27 08:34:53 2000 UTC
# Line 320  Line 320 
320                before dropPickles ()                before dropPickles ()
321            end            end
322    
323            (* I would have liked to express this using "run", but "run"            fun mk_standalone sflag { project, wrapper, target } = let
324             * thinks it has to return a bool... *)                val hsfx = SMLofNJ.SysInfo.getHeapSuffix ()
325            fun mk_standalone sflag s = let                fun extendTarget () =
326                val p = mkStdSrcPath s                    OS.Path.joinBaseExt { base = target, ext = SOME hsfx }
327                  val target =
328                      case OS.Path.splitBaseExt target of
329                          { base, ext = NONE } => extendTarget ()
330                        | { base, ext = SOME e } =>
331                          if e = hsfx then target else extendTarget ()
332                  val pp = mkStdSrcPath project
333                  val wp = mkStdSrcPath wrapper
334                  val ts = TStamp.fmodTime target
335                val gr = GroupReg.new ()                val gr = GroupReg.new ()
336                  fun do_wrapper () =
337                      case Parse.parse (parse_arg (gr, NONE, wp)) of
338                          NONE => NONE
339                        | SOME (g, gp) =>
340                          if recomp_runner gp g then SOME (mkBootList g)
341                          else NONE
342            in            in
343                (case Parse.parse (parse_arg (gr, sflag, p)) of                (case Parse.parse (parse_arg (gr, sflag, pp)) of
344                     NONE => NONE                     NONE => NONE
345                   | SOME (g, gp) =>                   | SOME (g, gp) =>
346                     if isSome sflag orelse recomp_runner gp g then                     if isSome sflag orelse recomp_runner gp g then
347                         SOME (mkBootList g)                         case (ts, !(#youngest gp)) of
348                               (TStamp.TSTAMP tgt_t, TStamp.TSTAMP src_t) =>
349                               if Time.< (tgt_t, src_t) then do_wrapper ()
350                               else SOME []
351                             | _ => do_wrapper ()
352                     else NONE)                     else NONE)
353                before dropPickles ()                before dropPickles ()
354            end            end
# Line 348  Line 366 
366    
367            fun al_ginfo () = { param = param (),            fun al_ginfo () = { param = param (),
368                                groupreg = al_greg,                                groupreg = al_greg,
369                                errcons = EM.defaultConsumer () }                                errcons = EM.defaultConsumer (),
370                                  youngest = ref TStamp.ancient }
371    
372            val al_manager =            val al_manager =
373                AutoLoad.mkManager { get_ginfo = al_ginfo,                AutoLoad.mkManager { get_ginfo = al_ginfo,
# Line 427  Line 446 
446                                        symval = SSV.symval,                                        symval = SSV.symval,
447                                        keep_going = false },                                        keep_going = false },
448                              groupreg = GroupReg.new (),                              groupreg = GroupReg.new (),
449                              errcons = EM.defaultConsumer () }                              errcons = EM.defaultConsumer (),
450                                youngest = ref TStamp.ancient }
451                fun loadInitGroup () =                fun loadInitGroup () =
452                    Stabilize.loadStable                    Stabilize.loadStable
453                        { getGroup = fn _ =>                        { getGroup = fn _ =>
# Line 502  Line 522 
522          fun procCmdLine () = let          fun procCmdLine () = let
523              val autoload = ignore o autoload              val autoload = ignore o autoload
524              val make = ignore o make              val make = ignore o make
525              fun p (f, ("sml" | "sig"), mk) = HostMachDepVC.Interact.useFile f              fun p (f, mk, ("sml" | "sig" | "fun")) =
526                | p (f, "cm", mk) = mk f                  HostMachDepVC.Interact.useFile f
527                | p (f, e, mk) = Say.say ["!* unable to process `", f,                | p (f, mk, "cm") = mk f
528                  | p (f, mk, e) = Say.say ["!* unable to process `", f,
529                                          "' (unknown extension `", e, "')\n"]                                          "' (unknown extension `", e, "')\n"]
530                fun badopt opt f () =
531                    Say.say ["!* bad ", opt, " option: `", f, "'\n"]
532                fun carg ("-D", f, _) =
533                    let val bad = badopt "-D" f
534                    in
535                        case String.fields (fn c => c = #"=")
536                                           (String.extract (f, 2, NONE)) of
537                            "" :: _ => bad ()
538                          | [var, num] =>
539                            (case Int.fromString num of
540                                 SOME i => #set (SSV.symval var) (SOME i)
541                               | NONE => bad ())
542                          | [var] => #set (SSV.symval var) (SOME 1)
543                          | _ => bad ()
544                    end
545                  | carg ("-U", f, _) =
546                    (case String.extract (f, 2, NONE) of
547                         "" => badopt "-U" f ()
548                       | var => #set (SSV.symval var) NONE)
549                  | carg (_, f, mk) = p (f, mk,
550                                     String.map Char.toLower
551                                                (getOpt (OS.Path.ext f, "<none>")))
552              fun arg ("-a", _) = autoload              fun arg ("-a", _) = autoload
553                | arg ("-m", _) = make                | arg ("-m", _) = make
554                | arg (f, mk) =                | arg (f, mk) = (carg (String.substring (f, 0, 2), f, mk)
555                  (p (f,                                 handle General.Subscript => ();
                     String.map Char.toLower (getOpt (OS.Path.ext f, "<none>")),  
                     mk);  
556                   mk)                   mk)
557          in          in
558              case SMLofNJ.getArgs () of              case SMLofNJ.getArgs () of

Legend:
Removed from v.691  
changed lines
  Added in v.692

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