[openssl-commits] [openssl] master update

Richard Levitte levitte at openssl.org
Sun Feb 28 00:16:48 UTC 2016


The branch master has been updated
       via  340da949ccde13f6506177e327ccc21f49f56d3b (commit)
      from  e0b5108c605b541252e601608ff70e8fb57d256f (commit)


- Log -----------------------------------------------------------------
commit 340da949ccde13f6506177e327ccc21f49f56d3b
Author: Richard Levitte <levitte at openssl.org>
Date:   Sun Feb 28 00:20:50 2016 +0100

    Make generation of dependency files more efficient when possible
    
    When building with GNU C, clang or VMS C, it's more efficient to
    generate dependency file and object file in one call rather than two.
    Have the dependency output in a temporary file and compare it with the
    previous one if available to see if replacement is waranted, thereby
    avoiding unnecessary reconstruction of Makefile / descrip.mms.
    
    Github issue #750
    
    Reviewed-by: Rich Salz <rsalz at openssl.org>

-----------------------------------------------------------------------

Summary of changes:
 Configurations/descrip.mms.tmpl   | 14 +++++---------
 Configurations/unix-Makefile.tmpl | 11 ++++++-----
 2 files changed, 11 insertions(+), 14 deletions(-)

diff --git a/Configurations/descrip.mms.tmpl b/Configurations/descrip.mms.tmpl
index eb60b4a..b7e047b 100644
--- a/Configurations/descrip.mms.tmpl
+++ b/Configurations/descrip.mms.tmpl
@@ -435,19 +435,15 @@ configdata.pm : {- sourcefile("Configurations", "descrip.mms.tmpl") -} $(SRCDIR)
       my $after = $unified_info{after}->{$obj.".OBJ"} || "\@ !";
 
       return <<"EOF";
-$obj.MMS : $deps
+$obj.OBJ : $deps
         ${before}
         SET DEFAULT $forward
-        \$(CC) \$(CFLAGS)${incs} /MMS=(FILE=${objd}${objn}.MMS,TARGET=$obj.OBJ) /NOOBJECT $srcs
-        SET DEFAULT $backward
-        ${after}
-        - PURGE $obj.MMS
-$obj.OBJ : $obj.MMS
-        ${before}
-        SET DEFAULT $forward
-        \$(CC) \$(CFLAGS)${incs} /OBJECT=${objd}${objn}.OBJ /REPOSITORY=$backward $srcs
+        \$(CC) \$(CFLAGS)${incs} /MMS=(FILE=${objd}${objn}.tmp-MMS,TARGET=$obj.OBJ) /OBJECT=${objd}${objn}.OBJ /REPOSITORY=$backward $srcs
         SET DEFAULT $backward
         ${after}
+        \@ PIPE ( \$(PERL) -e "use File::Compare qw/compare_text/; my \$x = compare_text(""$obj.MMS"",""$obj.tmp-MMS""); exit(0x10000000 + (\$x == 0));" || -
+                 RENAME $obj.tmp-MMS $obj.mms )
+        \@ IF F\$SEARCH("$obj.tmp-MMS") .NES. "" THEN DELETE $obj.tmp-MMS;*
         - PURGE $obj.OBJ
 EOF
   }
diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl
index b9fc5f8..cff0023 100644
--- a/Configurations/unix-Makefile.tmpl
+++ b/Configurations/unix-Makefile.tmpl
@@ -847,11 +847,12 @@ $obj$objext: $obj$depext
 EOF
       }
       return <<"EOF";
-$obj$depext: $deps
-	\$(CC) \$(CFLAGS) $ecflags$incs -MM -MF \$\@ -MQ $obj$objext $srcs
-	touch \$\@
-$obj$objext: $obj$depext
-	\$(CC) \$(CFLAGS) $ecflags$incs -c -o \$\@ $srcs
+$obj$objext: $deps
+	\$(CC) \$(CFLAGS) $ecflags$incs -MMD -MF $obj$depext.tmp -MT \$\@ -c -o \$\@ $srcs
+	\@touch $obj$depext.tmp
+	\@if ! cmp $obj$depext.tmp $obj$depext > /dev/null 2> /dev/null; then \\
+		mv $obj$depext.tmp $obj$depext; \\
+	fi
 EOF
   }
   # On Unix, we build shlibs from static libs, so we're ignoring the


More information about the openssl-commits mailing list