summaryrefslogtreecommitdiff
path: root/Configure
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2018-11-03 15:03:59 +0100
committerRichard Levitte <levitte@openssl.org>2018-11-05 09:27:31 +0100
commit7f73eafe2f5014ce1f915702c19ee7274e6b8c2d (patch)
tree07dfb8a37f0cedc9e9b9117606b1e3f4119021a2 /Configure
parent7b34f0fa5d060409be1fb5165ef29e5a159b1e33 (diff)
downloadopenssl-new-7f73eafe2f5014ce1f915702c19ee7274e6b8c2d.tar.gz
Build: make it possibly to specify subdirs in build.info
This adds a keyword SUBDIRS for build.info, to be used like this: SUBDIRS=foo bar This tells Configure that it should look for 'build.info' in the relative subdirectories 'foo' and 'bar' as well. Reviewed-by: Tim Hudson <tjh@openssl.org> (Merged from https://github.com/openssl/openssl/pull/7558)
Diffstat (limited to 'Configure')
-rwxr-xr-xConfigure37
1 files changed, 15 insertions, 22 deletions
diff --git a/Configure b/Configure
index 094898cc56..65a3e2b3af 100755
--- a/Configure
+++ b/Configure
@@ -15,7 +15,7 @@ use Config;
use FindBin;
use lib "$FindBin::Bin/util/perl";
use File::Basename;
-use File::Spec::Functions qw/:DEFAULT abs2rel rel2abs/;
+use File::Spec::Functions qw/:DEFAULT abs2rel rel2abs splitdir/;
use File::Path qw/mkpath/;
use OpenSSL::Glob;
@@ -1677,34 +1677,19 @@ if ($builder eq "unified") {
cleanfile($srcdir, catfile("Configurations", "common.tmpl"),
$blddir) ];
- my @build_infos = ( [ ".", "build.info" ] );
- foreach (@{$config{dirs}}) {
- push @build_infos, [ $_, "build.info" ]
- if (-f catfile($srcdir, $_, "build.info"));
- }
- foreach (@{$config{sdirs}}) {
- push @build_infos, [ catdir("crypto", $_), "build.info" ]
- if (-f catfile($srcdir, "crypto", $_, "build.info"));
- }
- foreach (@{$config{engdirs}}) {
- push @build_infos, [ catdir("engines", $_), "build.info" ]
- if (-f catfile($srcdir, "engines", $_, "build.info"));
- }
- foreach (@{$config{tdirs}}) {
- push @build_infos, [ catdir("test", $_), "build.info" ]
- if (-f catfile($srcdir, "test", $_, "build.info"));
- }
+ my @build_dirs = ( [ ] ); # current directory
$config{build_infos} = [ ];
my %ordinals = ();
- foreach (@build_infos) {
- my $sourced = catdir($srcdir, $_->[0]);
- my $buildd = catdir($blddir, $_->[0]);
+ while (@build_dirs) {
+ my @curd = @{shift @build_dirs};
+ my $sourced = catdir($srcdir, @curd);
+ my $buildd = catdir($blddir, @curd);
mkpath($buildd);
- my $f = $_->[1];
+ my $f = 'build.info';
# The basic things we're trying to build
my @programs = ();
my @programs_install = ();
@@ -1783,6 +1768,14 @@ if ($builder eq "unified") {
qr/^\s*ENDIF\s*$/
=> sub { die "ENDIF out of scope" if ! @skip;
pop @skip; },
+ qr/^\s*SUBDIRS\s*=\s*(.*)\s*$/
+ => sub {
+ if (!@skip || $skip[$#skip] > 0) {
+ foreach (tokenize($1)) {
+ push @build_dirs, [ @curd, splitdir($_, 1) ];
+ }
+ }
+ },
qr/^\s*PROGRAMS(_NO_INST)?\s*=\s*(.*)\s*$/
=> sub {
if (!@skip || $skip[$#skip] > 0) {