Put files called lib.dtl first in dependency orderings
authorAdam Chlipala <adamc@hcoop.net>
Sun, 24 Feb 2008 18:23:44 +0000 (18:23 +0000)
committerAdam Chlipala <adamc@hcoop.net>
Sun, 24 Feb 2008 18:23:44 +0000 (18:23 +0000)
src/order.sml

index 599c62a..14bd01e 100644 (file)
@@ -300,6 +300,25 @@ fun order basisOpt fnames =
            order basisOpt (List.filter (fn fname => not (SS.member (!naughtyFiles, fname))) fnames)
     end
 
+fun order basisOpt fnames =
+    let
+       val (providers, fnames) = order basisOpt fnames
+
+       val (hasLib, fnames) = foldl (fn (fname, (hasLib, fnames)) =>
+                                        if OS.Path.file fname = "lib.dtl" then
+                                            (SOME fname, fnames)
+                                        else
+                                            (hasLib, fname :: fnames))
+                              (NONE, []) fnames
+
+       val fnames = rev fnames
+       val fnames = case hasLib of
+                        NONE => fnames
+                      | SOME hasLib => hasLib :: fnames
+    in
+       (providers, fnames)
+    end
+
 type providers = {provideC : string SM.map,
                  provideT : string SM.map,
                  provideV : string SM.map}