From: Richard Levitte Date: Tue, 13 Mar 2018 16:56:20 +0000 (+0100) Subject: Refactor the 'depend' target X-Git-Tag: OpenSSL_1_1_1-pre3~111 X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=commitdiff_plain;h=249b4e28a6c91074f2fe276a2b2b40eb6f9639a9 Refactor the 'depend' target With the help of the perl script util/add-depends.pl, which takes all its information directly from configdata.pm, the dependency adding procedure can be streamlined for all support platforms. Reviewed-by: Rich Salz (Merged from https://github.com/openssl/openssl/pull/5606) --- diff --git a/Configurations/descrip.mms.tmpl b/Configurations/descrip.mms.tmpl index bbf00a12ad..7e7bf71efc 100644 --- a/Configurations/descrip.mms.tmpl +++ b/Configurations/descrip.mms.tmpl @@ -504,16 +504,7 @@ distclean : clean depend : descrip.mms descrip.mms : FORCE @ ! {- output_off() if $disabled{makedepend}; "" -} - @ $(PERL) -pe "if (/^# DO NOT DELETE.*/) { exit(0); }" - - < descrip.mms > descrip.mms-new - @ OPEN/APPEND DESCRIP descrip.mms-new - @ WRITE DESCRIP "# DO NOT DELETE THIS LINE -- make depend depends on it." - {- join("\n\t", map { "\@ IF F\$SEARCH(\"$_\") .NES. \"\" THEN TYPE $_ /OUTPUT=DESCRIP:" } @deps); -} - @ CLOSE DESCRIP - @ PIPE ( $(PERL) -e "use File::Compare qw/compare_text/; my $x = compare_text(""descrip.mms"",""descrip.mms-new""); exit(0x10000000 + ($x == 0));" || - - RENAME descrip.mms-new descrip.mms ) - @ IF F$SEARCH("descrip.mms-new") .NES. "" THEN DELETE descrip.mms-new;* - -@ SPAWN/OUTPUT=NLA0: PURGE/NOLOG descrip.mms + @ $(PERL) {- sourcefile("util", "add-depends.pl") -} @ ! {- output_on() if $disabled{makedepend}; "" -} # Install helper targets ############################################# diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl index dd55b8474a..0be8cb15a5 100644 --- a/Configurations/unix-Makefile.tmpl +++ b/Configurations/unix-Makefile.tmpl @@ -419,19 +419,7 @@ distclean: clean # concatenate only if that is true. depend: @: {- output_off() if $disabled{makedepend}; "" -} - @if egrep "^# DO NOT DELETE THIS LINE" Makefile >/dev/null && [ -z "`find $(DEPS) -newer Makefile 2>/dev/null; exit 0`" ]; then :; else \ - ( $(PERL) -pe 'exit 0 if /^# DO NOT DELETE THIS LINE.*/' < Makefile; \ - echo '# DO NOT DELETE THIS LINE -- make depend depends on it.'; \ - echo; \ - for f in $(DEPS); do \ - if [ -f $$f ]; then cat $$f; fi; \ - done ) > Makefile.new; \ - if cmp Makefile.new Makefile >/dev/null 2>&1; then \ - rm -f Makefile.new; \ - else \ - mv -f Makefile.new Makefile; \ - fi; \ - fi + @$(PERL) $(SRCDIR)/util/add-depends.pl @: {- output_on() if $disabled{makedepend}; "" -} # Install helper targets ############################################# diff --git a/Configurations/windows-makefile.tmpl b/Configurations/windows-makefile.tmpl index 662ec46d7b..3025b04fce 100644 --- a/Configurations/windows-makefile.tmpl +++ b/Configurations/windows-makefile.tmpl @@ -381,6 +381,9 @@ distclean: clean -del /Q /F makefile depend: + @ rem {- output_off() if $disabled{makedepend}; "" -} + @ $(PERL) $(SRCDIR)\util\add-depends.pl + @ rem {- output_on() if $disabled{makedepend}; "" -} # Install helper targets ############################################# diff --git a/util/add-depends.pl b/util/add-depends.pl new file mode 100644 index 0000000000..a7b07b64ac --- /dev/null +++ b/util/add-depends.pl @@ -0,0 +1,50 @@ +#! /usr/bin/env perl +# Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. +# +# Licensed under the OpenSSL license (the "License"). You may not use +# this file except in compliance with the License. You can obtain a copy +# in the file LICENSE in the source distribution or at +# https://www.openssl.org/source/license.html + +use lib '.'; +use configdata; + +use File::Compare qw(compare_text); + +my $buildfile = $config{build_file}; +my $buildfile_new = "$buildfile.$$"; +my $depext = $target{dep_extension} || ".d"; +my @deps = + grep { print STDERR "$_ exists: ", -f $_ ? "yes" : "no", "\n"; -f $_ } + map { (my $x = $_) =~ s|\.o$|$depext|; $x; } + grep { $unified_info{sources}->{$_}->[0] =~ /\.cc?$/ } + keys %{$unified_info{sources}}; + +print STDERR "\@deps = ( ", join(", ", @deps), " )\n"; + +open IBF, $buildfile or die "Trying to read $buildfile: $!\n"; +open OBF, '>', $buildfile_new or die "Trying to write $buildfile_new: $!\n"; +while () { + $force_rewrite = 0; + last if /^# DO NOT DELETE THIS LINE/; + print OBF or die "$!\n"; + $force_rewrite = 1; +} +close IBF; + +print OBF "# DO NOT DELETE THIS LINE -- make depend depends on it.\n"; + +foreach (@deps) { + open IBF,$_ or die "Trying to read $_: $!\n"; + while () { + print OBF or die "$!\n"; + } + close IBF; +} +close OBF; + +if (compare_text($buildfile_new, $buildfile) != 0) { + rename $buildfile_new, $buildfile + or die "Trying to rename $buildfile_new -> $buildfile: $!\n"; +} +