Unified build - fix make depend

There was a catch 22, where 'make depend' directly after configuring
in an otherwise pristine build tree would fail because buildinf.h
didn't exist yet.

This change has the depend building targets depend on the same other
targets as the object file building targets, so the generation of
buildinf.h and similar files would kick in during 'make depend'.

Reviewed-by: Rich Salz <rsalz@openssl.org>
diff --git a/Configurations/README b/Configurations/README
index b67506a..89fc65c 100644
--- a/Configurations/README
+++ b/Configurations/README
@@ -488,6 +488,7 @@
 
                         src2dep(obj => "PATH/TO/objectfile",
                                 srcs => [ "PATH/TO/sourcefile", ... ],
+                                deps => [ "dep1", ... ],
                                 incs => [ "INCL/PATH", ... ]);
 
                   'obj' has the dependent object file as well as
@@ -496,7 +497,8 @@
                   'srcs' has the list of source files to build the
                   object file, with the first item being the source
                   file that directly corresponds to the object file.
-                  'incs' is a list of include file directories.
+                  'deps' is a list of explicit dependencies.  'incs'
+                  is a list of include file directories.
 
     src2obj     - function that produces build file lines to build an
                   object file from source files and associated data.
@@ -513,8 +515,8 @@
                   'srcs' has the list of source files to build the
                   object file, with the first item being the source
                   file that directly corresponds to the object file.
-                  'deps' is a list of dependencies.  'incs' is a list
-                  of include file directories.
+                  'deps' is a list of explicit dependencies.  'incs'
+                  is a list of include file directories.
 
     obj2lib     - function that produces build file lines to build a
                   static library file ("libfoo.a" in Unix terms) from
diff --git a/Configurations/common.tmpl b/Configurations/common.tmpl
index a750e21..3bd7324 100644
--- a/Configurations/common.tmpl
+++ b/Configurations/common.tmpl
@@ -45,6 +45,7 @@
                                    @{$unified_info{includes}->{$obj}} ]);
          $OUT .= src2dep(obj => $obj_no_o,
                          srcs => $unified_info{sources}->{$obj},
+                         deps => [ reducedepends(resolvedepends($obj)) ],
                          incs => [ @{$unified_info{includes}->{$bin}},
                                    @{$unified_info{includes}->{$obj}} ]);
      }
diff --git a/Configurations/descrip.mms.tmpl b/Configurations/descrip.mms.tmpl
index 4732782..ef745ed 100644
--- a/Configurations/descrip.mms.tmpl
+++ b/Configurations/descrip.mms.tmpl
@@ -408,6 +408,7 @@
   sub src2dep {
       my %args = @_;
       my $dep = $args{obj};
+      my $deps = join(", -\n\t\t", @{$args{srcs}}, @{$args{deps}});
 
       # Because VMS C isn't very good at combining a /INCLUDE path with
       # #includes having a relative directory (like '#include "../foo.h"),
@@ -432,7 +433,7 @@
       my $after = $unified_info{after}->{$dep.".OBJ"} || "\@ !";
 
       return <<"EOF";
-$dep.MMS : $srcs
+$dep.MMS : $deps
         ${before}
         SET DEFAULT $forward
         \$(CC) \$(CFLAGS)${incs} /MMS=(TARGET=.OBJ)/OBJECT=${depd}${depn}.MMS $srcs
diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl
index e013f15..1db92a8 100644
--- a/Configurations/unix-Makefile.tmpl
+++ b/Configurations/unix-Makefile.tmpl
@@ -708,11 +708,12 @@
       my $dep = $args{obj}.'$(DEP_EXT)';
       my $obj = $args{obj}.'$(OBJ_EXT)';
       my $srcs = join(" ", @{$args{srcs}});
+      my $deps = join(" ", @{$args{srcs}}, @{$args{deps}});
       my $incs = join(" ", map { " -I".$_ } @{$args{incs}});
       my $makedepprog = $config{makedepprog};
       if ($makedepprog eq "makedepend") {
           return <<"EOF";
-$dep : $srcs
+$dep : $deps
 	rm -f \$\@.tmp; touch \$\@.tmp
 	\$(MAKEDEPEND) -f\$\@.tmp -o"|$obj"\
 	    -- -DOPENSSL_DOING_MAKEDEPEND \$(DEPFLAGS)$incs \
@@ -722,7 +723,7 @@
 EOF
       }
       return <<"EOF";
-$dep : $srcs Makefile
+$dep : $deps Makefile
 	\$(CC) -DOPENSSL_DOING_MAKEDEPEND \$(DEPFLAGS)$incs -MM -MF \$\@ -MQ $obj $srcs
 EOF
   }