From: Andy Polyakov Date: Sun, 26 Jun 2016 12:40:35 +0000 (+0200) Subject: windows-makefile.tmpl: don't use $? in library targets. X-Git-Tag: OpenSSL_1_1_0-pre6~326 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=cfef7e9e681bb981ebd5af08eac3432eec336032;p=oweals%2Fopenssl.git windows-makefile.tmpl: don't use $? in library targets. Problem with Microsoft lib.exe is that it doesn't *update* modules in .lib archive, but creates new one upon every invocation. As result if a source file was updated and nmake was executed, a useless archive with only one module was created. In other words one has to always pass all .obj modules on command line, not only recently recompiled. [This also creates dilemma for directory targets, e.g. crypto\aes, that were added to simplify every-day life for developer. Since whole idea behind those targets is to minimize the re-compile time upon single file modification, the only sensible thing to do is to omit intended library update.] Reviewed-by: Rich Salz Reviewed-by: Richard Levitte --- diff --git a/Configurations/windows-makefile.tmpl b/Configurations/windows-makefile.tmpl index 0d21c50f03..aae7de3655 100644 --- a/Configurations/windows-makefile.tmpl +++ b/Configurations/windows-makefile.tmpl @@ -484,7 +484,7 @@ EOF return <<"EOF"; $lib$libext: $deps \$(AR) \$(ARFLAGS) \$(AROUTFLAG)$lib$libext @<< -\$\? +\$** << EOF } @@ -530,11 +530,7 @@ EOF next unless defined($unified_info{dirinfo}->{$dir}->{products}->{$type}); if ($type eq "lib") { foreach my $lib (@{$unified_info{dirinfo}->{$dir}->{products}->{$type}}) { - push @actions, <<"EOF"; - \$(AR) \$(ARFLAGS) \$(AROUTFLAG)$lib$libext @<< -\$\? -<< -EOF + push @actions, ""; } } else { foreach my $prod (@{$unified_info{dirinfo}->{$dir}->{products}->{$type}}) {