build.info: implement PROGRAM_NO_INST, and dito for ENGINES, SCRIPTS, LIBS
PROGRAM_NO_INST, ENGINES_NO_INST, SCRIPTS_NO_INST and LIBS_NO_INST are to be used to specify program, engines, scripts and libraries that are not to be installed in the system. Fuzzers, test programs, that sort of things are of the _NO_INST type, for example. For the benefit of build file templates and other templates that use data from configdata.pm, a new hash table $unified_info{install} is created. It contains a set of subhashes, one for each type of installable, each having an array of file names as values. For example, it can look like this: "install" => { "engines" => [ "engines/afalg/afalg", "engines/capi", "engines/dasync", "engines/padlock", ], "libraries" => [ "libcrypto", "libssl", ], "programs" => [ "apps/openssl", ], "scripts" => [ "apps/CA.pl", "apps/tsget", "tools/c_rehash", ], }, Reviewed-by: Rich Salz <rsalz@openssl.org>
This commit is contained in:
parent
3cea73a7fc
commit
7f5af79728
1 changed files with 73 additions and 13 deletions
86
Configure
86
Configure
|
@ -1360,9 +1360,13 @@ if ($builder eq "unified") {
|
|||
my $f = $_->[1];
|
||||
# The basic things we're trying to build
|
||||
my @programs = ();
|
||||
my @programs_install = ();
|
||||
my @libraries = ();
|
||||
my @libraries_install = ();
|
||||
my @engines = ();
|
||||
my @engines_install = ();
|
||||
my @scripts = ();
|
||||
my @scripts_install = ();
|
||||
my @extra = ();
|
||||
my @overrides = ();
|
||||
my @intermediates = ();
|
||||
|
@ -1426,18 +1430,42 @@ if ($builder eq "unified") {
|
|||
qr/^\s*ENDIF\s*$/
|
||||
=> sub { die "ENDIF out of scope" if ! @skip;
|
||||
pop @skip; },
|
||||
qr/^\s*PROGRAMS\s*=\s*(.*)\s*$/
|
||||
=> sub { push @programs, tokenize($1)
|
||||
if !@skip || $skip[$#skip] > 0 },
|
||||
qr/^\s*LIBS\s*=\s*(.*)\s*$/
|
||||
=> sub { push @libraries, tokenize($1)
|
||||
if !@skip || $skip[$#skip] > 0 },
|
||||
qr/^\s*ENGINES\s*=\s*(.*)\s*$/
|
||||
=> sub { push @engines, tokenize($1)
|
||||
if !@skip || $skip[$#skip] > 0 },
|
||||
qr/^\s*SCRIPTS\s*=\s*(.*)\s*$/
|
||||
=> sub { push @scripts, tokenize($1)
|
||||
if !@skip || $skip[$#skip] > 0 },
|
||||
qr/^\s*PROGRAMS(_NO_INST)?\s*=\s*(.*)\s*$/
|
||||
=> sub {
|
||||
if (!@skip || $skip[$#skip] > 0) {
|
||||
my $install = $1;
|
||||
my @x = tokenize($2);
|
||||
push @programs, @x;
|
||||
push @programs_install, @x unless $install;
|
||||
}
|
||||
},
|
||||
qr/^\s*LIBS(_NO_INST)?\s*=\s*(.*)\s*$/
|
||||
=> sub {
|
||||
if (!@skip || $skip[$#skip] > 0) {
|
||||
my $install = $1;
|
||||
my @x = tokenize($2);
|
||||
push @libraries, @x;
|
||||
push @libraries_install, @x unless $install;
|
||||
}
|
||||
},
|
||||
qr/^\s*ENGINES(_NO_INST)?\s*=\s*(.*)\s*$/
|
||||
=> sub {
|
||||
if (!@skip || $skip[$#skip] > 0) {
|
||||
my $install = $1;
|
||||
my @x = tokenize($2);
|
||||
push @engines, @x;
|
||||
push @engines_install, @x unless $install;
|
||||
}
|
||||
},
|
||||
qr/^\s*SCRIPTS(_NO_INST)?\s*=\s*(.*)\s*$/
|
||||
=> sub {
|
||||
if (!@skip || $skip[$#skip] > 0) {
|
||||
my $install = $1;
|
||||
my @x = tokenize($2);
|
||||
push @scripts, @x;
|
||||
push @scripts_install, @x unless $install;
|
||||
}
|
||||
},
|
||||
qr/^\s*EXTRA\s*=\s*(.*)\s*$/
|
||||
=> sub { push @extra, tokenize($1)
|
||||
if !@skip || $skip[$#skip] > 0 },
|
||||
|
@ -1523,6 +1551,14 @@ if ($builder eq "unified") {
|
|||
$unified_info{programs}->{$program} = 1;
|
||||
}
|
||||
|
||||
foreach (@programs_install) {
|
||||
my $program = cleanfile($buildd, $_, $blddir);
|
||||
if ($unified_info{rename}->{$program}) {
|
||||
$program = $unified_info{rename}->{$program};
|
||||
}
|
||||
$unified_info{install}->{programs}->{$program} = 1;
|
||||
}
|
||||
|
||||
foreach (@libraries) {
|
||||
my $library = cleanfile($buildd, $_, $blddir);
|
||||
if ($unified_info{rename}->{$library}) {
|
||||
|
@ -1531,6 +1567,14 @@ if ($builder eq "unified") {
|
|||
$unified_info{libraries}->{$library} = 1;
|
||||
}
|
||||
|
||||
foreach (@libraries_install) {
|
||||
my $library = cleanfile($buildd, $_, $blddir);
|
||||
if ($unified_info{rename}->{$library}) {
|
||||
$library = $unified_info{rename}->{$library};
|
||||
}
|
||||
$unified_info{install}->{libraries}->{$library} = 1;
|
||||
}
|
||||
|
||||
die <<"EOF" if scalar @engines and !$config{dynamic_engines};
|
||||
ENGINES can only be used if configured with 'dynamic-engine'.
|
||||
This is usually a fault in a build.info file.
|
||||
|
@ -1543,6 +1587,14 @@ EOF
|
|||
$unified_info{engines}->{$library} = 1;
|
||||
}
|
||||
|
||||
foreach (@engines_install) {
|
||||
my $library = cleanfile($buildd, $_, $blddir);
|
||||
if ($unified_info{rename}->{$library}) {
|
||||
$library = $unified_info{rename}->{$library};
|
||||
}
|
||||
$unified_info{install}->{engines}->{$library} = 1;
|
||||
}
|
||||
|
||||
foreach (@scripts) {
|
||||
my $script = cleanfile($buildd, $_, $blddir);
|
||||
if ($unified_info{rename}->{$script}) {
|
||||
|
@ -1551,6 +1603,14 @@ EOF
|
|||
$unified_info{scripts}->{$script} = 1;
|
||||
}
|
||||
|
||||
foreach (@scripts_install) {
|
||||
my $script = cleanfile($buildd, $_, $blddir);
|
||||
if ($unified_info{rename}->{$script}) {
|
||||
$script = $unified_info{rename}->{$script};
|
||||
}
|
||||
$unified_info{install}->{scripts}->{$script} = 1;
|
||||
}
|
||||
|
||||
foreach (@extra) {
|
||||
my $extra = cleanfile($buildd, $_, $blddir);
|
||||
$unified_info{extra}->{$extra} = 1;
|
||||
|
@ -1749,7 +1809,7 @@ EOF
|
|||
$unified_info{$_} = [ sort keys %{$unified_info{$_}} ];
|
||||
}
|
||||
# Two level structures
|
||||
foreach my $l1 (("sources", "shared_sources", "ldadd", "depends")) {
|
||||
foreach my $l1 (("install", "sources", "shared_sources", "ldadd", "depends")) {
|
||||
foreach my $l2 (sort keys %{$unified_info{$l1}}) {
|
||||
$unified_info{$l1}->{$l2} =
|
||||
[ sort keys %{$unified_info{$l1}->{$l2}} ];
|
||||
|
|
Loading…
Reference in a new issue