[add target names to dependency files generated by jhc and include true lib dependencies in makefile
John Meacham <john@repetae.net>**20100722085016
 Ignore-this: f96ca7447654a19fcf39a51da57d8d51
] addfile ./utils/deps_to_make.prl
hunk ./Makefile.am 88
-uninstall-hook: $(JHC_LIBS)
+uninstall-hook:
hunk ./Makefile.am 217
-LIB_OPTIONS=$(RTSOPTS) $(JHC_TEST) --noauto -L- -L.
+LIB_OPTIONS=$(RTSOPTS) $(JHC_TEST) --noauto -L- -L. # --deps tmp/$@.yaml
hunk ./Makefile.am 274
-libs: $(JHC_LIBS) $(JHC_EXT_LIBS)
+libs: $(JHC_LIBS)
+elibs: $(JHC_EXT_LIBS)
hunk ./Makefile.am 285
+
+
+## autogenerated dependencies
+
+applicative-1.0.hl: lib/applicative/applicative.cabal lib/applicative/Control/Arrow.hs lib/applicative/Control/Applicative.hs lib/applicative/Data/Foldable.hs \
+    lib/applicative/Control/Category.hs lib/applicative/Data/Traversable.hs base-1.0.hl jhc-1.0.hl
+base-1.0.hl: lib/base/base.cabal lib/base/System/Info.hs lib/base/Debug/Trace.hs lib/base/Data/Array.hs \
+    lib/base/Data/Typeable.hs lib/base/Text/Printf.hs lib/base/System/Directory.hs lib/base/Data/Maybe.hs \
+    lib/base/System/IO/Error.hs lib/base/System/IO/Binary.hs lib/base/System/CPUTime.hs lib/base/System/IO/Pipe.hs \
+    lib/base/Control/Monad/Instances.hs lib/base/Foreign/Marshal/Error.hs lib/base/System/Exit.hs lib/base/System/Environment.hs \
+    lib/base/Data/Array/IO.hs lib/base/Data/Version.hs lib/base/Text/Show/Functions.hs lib/base/Control/Monad.hs \
+    lib/base/Data/Functor.hs lib/base/Data/Monoid.hs lib/base/System/Locale.hs lib/base/System/IO.hs \
+    lib/base/Foreign/Marshal/Pool.hs lib/base/Control/Monad/Fix.hs lib/base/Data/Complex.hs lib/base/Data/IORef.hs \
+    lib/base/System/Console/GetOpt.hs lib/base/Data/List.hs lib/base/System/Cmd.hs lib/base/System/Random.hs \
+    lib/base/Data/Unicode.hs lib/base/Foreign/ForeignPtr.hs lib/base/System/Time.hs lib/base/Control/Exception.hs \
+    lib/base/Foreign/StablePtr.hs lib/base/Foreign/C.hs lib/base/Data/Bits.hs lib/base/Foreign/Marshal.hs \
+    lib/base/Foreign.hs lib/base/Data/Array/Unboxed.hs lib/base/Data/Function.hs lib/base/Data/Ix.hs \
+    jhc-1.0.hl
+flat-foreign-1.0.hl: lib/flat-foreign/flat-foreign.cabal lib/flat-foreign/StablePtr.hs lib/flat-foreign/MarshalAlloc.hs lib/flat-foreign/CForeign.hs \
+    lib/flat-foreign/Storable.hs lib/flat-foreign/Ptr.hs lib/flat-foreign/MarshalArray.hs lib/flat-foreign/Int.hs \
+    lib/flat-foreign/CString.hs lib/flat-foreign/Word.hs lib/flat-foreign/CError.hs lib/flat-foreign/CTypes.hs \
+    lib/flat-foreign/MarshalError.hs lib/flat-foreign/MarshalUtils.hs lib/flat-foreign/Bits.hs lib/flat-foreign/ForeignPtr.hs \
+    base-1.0.hl jhc-1.0.hl
+haskell98-1.0.hl: lib/haskell98/haskell98.cabal lib/haskell98/System.hs lib/haskell98/List.hs lib/haskell98/Time.hs \
+    lib/haskell98/Array.hs lib/haskell98/Random.hs lib/haskell98/Complex.hs lib/haskell98/Locale.hs \
+    lib/haskell98/CPUTime.hs lib/haskell98/Ratio.hs lib/haskell98/Monad.hs lib/haskell98/Directory.hs \
+    lib/haskell98/IO.hs lib/haskell98/Ix.hs lib/haskell98/Char.hs lib/haskell98/Maybe.hs \
+    base-1.0.hl jhc-1.0.hl
+jhc-1.0.hl: lib/jhc/jhc.cabal lib/jhc/Jhc/Prim.hs lib/jhc/Jhc/IO.hs lib/jhc/Jhc/Int.hs \
+    lib/jhc/Jhc/Inst/Enum.hs lib/jhc/Data/Int.hs lib/jhc/Prelude/IO.hs lib/jhc/Jhc/Order.hs \
+    lib/jhc/System/C/Stdio.hs lib/jhc/Jhc/JumpPoint.hs lib/jhc/Data/Word.hs lib/jhc/Foreign/C/String.hs \
+    lib/jhc/Jhc/Show.hs lib/jhc/Jhc/Handle.hs lib/jhc/Jhc/Addr.hs lib/jhc/Numeric.hs \
+    lib/jhc/Jhc/Float.hs lib/jhc/Jhc/Inst/Storable.hs lib/jhc/Foreign/C/Types.hs lib/jhc/Data/Ratio.hs \
+    lib/jhc/Jhc/Hole.hs lib/jhc/Data/Char.hs lib/jhc/Jhc/List.hs lib/jhc/Foreign/Marshal/Utils.hs \
+    lib/jhc/Jhc/Basics.hs lib/jhc/System/Mem.hs lib/jhc/Prelude.hs lib/jhc/Jhc/Num.hs \
+    lib/jhc/Jhc/Text/Read.hs lib/jhc/Foreign/C/Error.hs lib/jhc/Foreign/Storable.hs lib/jhc/Foreign/Ptr.hs \
+    lib/jhc/Jhc/Inst/Order.hs lib/jhc/Jhc/Enum.hs lib/jhc/Jhc/Tuples.hs lib/jhc/Jhc/String.hs \
+    lib/jhc/Prelude/Float.hs lib/jhc/Jhc/Inst/PrimEnum.hs lib/jhc/Jhc/Inst/Show.hs lib/jhc/Jhc/Array.hs \
+    lib/jhc/Prelude/Text.hs lib/jhc/Foreign/Marshal/Alloc.hs lib/jhc/Foreign/Marshal/Array.hs lib/jhc/Jhc/Types.hs \
+    lib/jhc/Jhc/Options.hs lib/jhc/Prelude/CType.hs lib/jhc/Jhc/Monad.hs lib/jhc/System/IO/Unsafe.hs \
+    lib/jhc/System/Mem/StableName.hs lib/jhc/Jhc/Inst/Read.hs lib/jhc/Jhc/Maybe.hs
hunk ./src/Ho/Build.hs 226
-dumpDeps memap cug = case optDeps options of
+dumpDeps targets memap cug = case optDeps options of
hunk ./src/Ho/Build.hs 231
+                ("Target",toNode targets),
hunk ./src/Ho/Build.hs 399
-    :: [String]                                             -- ^ Extra libraries to load
-    -> [Either Module String]                               -- ^ Either a module or filename to find
+    :: [FilePath]                                           -- ^ Targets we are building, used when dumping dependencies
+    -> [String]                                             -- ^ Extra libraries to load
+    -> [Either Module FilePath]                             -- ^ Either a module or filename to find
hunk ./src/Ho/Build.hs 405
-parseFiles elibs need ifunc func = do
+parseFiles targets elibs need ifunc func = do
hunk ./src/Ho/Build.hs 407
-    (ksm,chash,cug) <- loadModules (optHls options ++ elibs) need
+    (ksm,chash,cug) <- loadModules targets (optHls options ++ elibs) need
hunk ./src/Ho/Build.hs 420
-loadModules :: [String]                 -- ^ libraries to load
-            -> [Either Module String]   -- ^ a list of modules or filenames
-            -> IO (Map.Map SourceHash (Module,[Module]),HoHash,CompUnitGraph)  -- ^ the resulting acyclic graph of compilation units
-loadModules libs need = do
+loadModules
+    :: [FilePath]               -- ^ targets
+    -> [String]                 -- ^ libraries to load
+    -> [Either Module String]   -- ^ a list of modules or filenames
+    -> IO (Map.Map SourceHash (Module,[Module]),HoHash,CompUnitGraph)  -- ^ the resulting acyclic graph of compilation units
+loadModules targets libs need = do
hunk ./src/Ho/Build.hs 463
-    dumpDeps (modEncountered done) cug
+    dumpDeps targets (modEncountered done) cug
hunk ./src/Ho/Build.hs 732
-
+        let outName = case optOutName options of
+                Nothing -> name ++ "-" ++ showVersion vers ++ ".hl"
+                Just fn -> fn
hunk ./src/Ho/Build.hs 736
-        (rnode@(CompNode lhash _ _),cho) <- parseFiles [] (map Left $ Set.toList allMods) ifunc func
+        (rnode@(CompNode lhash _ _),cho) <- parseFiles [outName] [] (map Left $ Set.toList allMods) ifunc func
hunk ./src/Ho/Build.hs 771
-        let outName = case optOutName options of
-                Nothing -> name ++ "-" ++ showVersion vers ++ ".hl"
-                Just fn -> fn
hunk ./src/Main.hs 62
-    g fs = processCollectedHo . snd =<< parseFiles [] fs processInitialHo processDecls
+    g fs = processCollectedHo . snd =<< parseFiles [outputName] [] fs processInitialHo processDecls
hunk ./utils/deps_to_make.prl 1
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use YAML;
+
+sub pdeps {
+    while(@_) {
+        for(my $i = 0; $i < 4; $i++) {
+            last unless @_;
+            print " ", shift;
+        }
+        print " \\\n   " if @_;
+    }
+    print "\n";
+}
+
+
+for (@ARGV) {
+    my $y = YAML::LoadFile($_);
+    next unless exists $y->{Target};
+    my @deps = values %{$y->{ModuleSource}};
+    my @libs = values %{$y->{LibraryDeps}} if exists $y->{LibraryDeps};
+    map { s/^\.\/// } @libs;
+    @deps = (@{$y->{LibraryDesc}}, @deps) if exists $y->{LibraryDesc};
+    for (@{$y->{Target}}) {
+        #print "$_: ";, join(" ",@deps,@libs), "\n";
+        print "$_:";
+        pdeps(@deps,@libs);
+    }
+}