From: Richard Levitte Date: Mon, 13 Jun 2016 19:57:51 +0000 (+0200) Subject: Configure: Make it possible to generate mandatory header files X-Git-Tag: OpenSSL_1_1_0-pre6~451 X-Git-Url: https://git.openssl.org/?a=commitdiff_plain;h=4f858293a9b5a5db8c8af0725b6402d21626040b;hp=7c46746bf2958fd2eccc59ecb48039e4e20ce38a;p=openssl.git Configure: Make it possible to generate mandatory header files 'DEPEND[]=file.h' becomes a special way to say that 'file.h' must be generated before anything else is built. It's likely that a number of source files depend on these header files, this provides a simple way to make sure they are always generated even it the dependency data hasn't been added to the build file yet. Reviewed-by: Rich Salz --- diff --git a/Configurations/common.tmpl b/Configurations/common.tmpl index 48b3d18716..9d7fbf2e77 100644 --- a/Configurations/common.tmpl +++ b/Configurations/common.tmpl @@ -213,6 +213,9 @@ } } + # Build mandatory generated headers + foreach (@{$unified_info{depends}->{""}}) { dogenerate($_); } + # Build all known libraries, engines, programs and scripts. # Everything else will be handled as a consequence. foreach (@{$unified_info{libraries}}) { dolib($_); } diff --git a/Configure b/Configure index 7bbb5b7697..cc36087aa7 100755 --- a/Configure +++ b/Configure @@ -1465,7 +1465,7 @@ if ($builder eq "unified") { qr/^\s*INCLUDE\[((?:\\.|[^\\\]])+)\]\s*=\s*(.*)\s*$/ => sub { push @{$includes{$1}}, tokenize($2) if !@skip || $skip[$#skip] > 0 }, - qr/^\s*DEPEND\[((?:\\.|[^\\\]])+)\]\s*=\s*(.*)\s*$/ + qr/^\s*DEPEND\[((?:\\.|[^\\\]])*)\]\s*=\s*(.*)\s*$/ => sub { push @{$depends{$1}}, tokenize($2) if !@skip || $skip[$#skip] > 0 }, qr/^\s*GENERATE\[((?:\\.|[^\\\]])+)\]\s*=\s*(.*)\s*$/ @@ -1689,11 +1689,11 @@ EOF foreach (keys %depends) { my $dest = $_; - my $ddest = cleanfile($sourced, $_, $blddir); + my $ddest = $dest eq "" ? "" : cleanfile($sourced, $_, $blddir); # If the destination doesn't exist in source, it can only be # a generated file in the build tree. - if (! -f $ddest) { + if ($ddest ne "" && ! -f $ddest) { $ddest = cleanfile($buildd, $_, $blddir); if ($unified_info{rename}->{$ddest}) { $ddest = $unified_info{rename}->{$ddest}; @@ -1710,7 +1710,7 @@ EOF if (! -f $d || (grep { $d eq $_ } map { cleanfile($srcdir, $_, $blddir) } - (@generated_headers, @generated_by_make_headers))) { + grep { /\.h$/ } keys %{$unified_info{generate}})) { $d = cleanfile($buildd, $_, $blddir); } # Take note if the file to depend on is being renamed @@ -1720,7 +1720,7 @@ EOF $unified_info{depends}->{$ddest}->{$d} = 1; # If we depend on a header file or a perl module, let's make # sure it can get included - if ($d =~ /\.(h|pm)$/) { + if ($dest ne "" && $d =~ /\.(h|pm)$/) { my $i = dirname($d); push @{$unified_info{includes}->{$ddest}}, $i unless grep { $_ eq $i } @{$unified_info{includes}->{$ddest}};