aboutsummaryrefslogtreecommitdiff
path: root/Configurations
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2016-02-28 00:20:50 +0100
committerRichard Levitte <levitte@openssl.org>2016-02-28 01:16:44 +0100
commit340da949ccde13f6506177e327ccc21f49f56d3b (patch)
treece06693229bacd727fc7c1ce7cf5a93614ef1eaf /Configurations
parente0b5108c605b541252e601608ff70e8fb57d256f (diff)
downloadopenssl-340da949ccde13f6506177e327ccc21f49f56d3b.zip
openssl-340da949ccde13f6506177e327ccc21f49f56d3b.tar.gz
openssl-340da949ccde13f6506177e327ccc21f49f56d3b.tar.bz2
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@openssl.org>
Diffstat (limited to 'Configurations')
-rw-r--r--Configurations/descrip.mms.tmpl14
-rw-r--r--Configurations/unix-Makefile.tmpl11
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