Windows build: build foo.d after foo.obj
authorRichard Levitte <levitte@openssl.org>
Wed, 31 Oct 2018 08:02:00 +0000 (09:02 +0100)
committerRichard Levitte <levitte@openssl.org>
Tue, 13 Nov 2018 15:05:52 +0000 (16:05 +0100)
We made the build of foo.obj depend on foo.d, meaning the latter gets
built first.  Unfortunately, the way the compiler works, we are forced
to redirect all output to foo.d, meaning that if the source contains
an error, the build fails without showing those errors.

We therefore remove the dependency and force the build of foo.d to
always happen after build of foo.obj.

Reviewed-by: Tim Hudson <tjh@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/7533)

Configurations/windows-makefile.tmpl

index ef5af424256d46b5348aeb8338b541b4b72b0b3b..5c8d3e81d3b4a164f187941f8d7af932aacf02df 100644 (file)
@@ -461,22 +461,20 @@ $obj$objext: $deps
        \$(AS) \$(ASFLAGS) \$(ASOUTFLAG)\$\@ $srcs
 EOF
      }
-     return <<"EOF"    if (!$disabled{makedepend});
-$obj$depext: $deps
-       \$(CC) \$(CFLAGS) $ecflags$inc /Zs /showIncludes $srcs 2>&1 | \\
+     my $recipe = <<"EOF";
+$obj$objext: $deps
+       \$(CC) $incs \$(CFLAGS) $ecflags -c \$(COUTFLAG)\$\@ $srcs
+EOF
+     $recipe .= <<"EOF"        unless $disabled{makedepend};
+       \$(CC) $incs \$(CFLAGS) $ecflags /Zs /showIncludes $srcs 2>&1 | \\
            "\$(PERL)" -n << > $obj$depext
 chomp;
 s/^Note: including file: *//;
 \$\$collect{\$\$_} = 1;
 END { print '$obj$objext: ',join(" ", sort keys \%collect),"\\n" }
 <<
-$obj$objext: $obj$depext
-       \$(CC) $incs \$(CFLAGS) $ecflags -c \$(COUTFLAG)\$\@ $srcs
-EOF
-    return <<"EOF"     if ($disabled{makedepend});
-$obj$objext: $deps
-       \$(CC) $incs \$(CFLAGS) $ecflags -c \$(COUTFLAG)\$\@ $srcs
 EOF
+     return $recipe;
  }
 
  # On Unix, we build shlibs from static libs, so we're ignoring the