From 209184c83f7d290ceb43605598e09074b57d36f4 Mon Sep 17 00:00:00 2001 From: Enrico Tassi Date: Fri, 4 Jan 2008 09:55:23 +0000 Subject: [PATCH] added support for single target --- make/main.ml | 2 +- make/make.ml | 21 ++++++++++++++++++++- make/make.mli | 4 +++- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/make/main.ml b/make/main.ml index df20a35f2..0b9cf949a 100644 --- a/make/main.ml +++ b/make/main.ml @@ -31,4 +31,4 @@ let deps = [ ] ;; -M.make deps;; +M.make deps (Array.to_list Sys.argv);; diff --git a/make/make.ml b/make/make.ml index c243d7935..5a0dc85ce 100644 --- a/make/make.ml +++ b/make/make.ml @@ -97,7 +97,26 @@ module Make = functor (F:Format) -> struct make (compiled@List.map fst todo) deps) ;; - let make deps = make [] deps + let rec purge_unwanted_roots wanted deps = + let roots, rest = + List.partition + (fun (t,d) -> + not (List.exists (fun (_,d1) -> List.mem t d1) deps)) + deps + in + let newroots = List.filter (fun (t,_) -> List.mem t wanted) roots in + if newroots = roots then + deps + else + purge_unwanted_roots wanted (newroots @ rest) + ;; + + let make deps targets = + if targets = [] then + make [] deps + else + make [] (purge_unwanted_roots targets deps) + ;; end diff --git a/make/make.mli b/make/make.mli index 8830a8319..5346c82e7 100644 --- a/make/make.mli +++ b/make/make.mli @@ -14,5 +14,7 @@ module type Format = module Make : functor (F : Format) -> sig - val make : (F.source_object * F.source_object list) list -> unit + (* make [deps] [targets], targets = [] means make all *) + val make : (F.source_object * F.source_object list) list -> + F.source_object list -> unit end -- 2.39.2