Build dynamic engines even if configured "no-shared"
Until now, the engines in engines/ were only built as dynamicaly loadable ones if shared libraries were built. We not dissociate the two and can build dynamicaly loadable engines even if we only build static libcrypto and libssl. This is controlled with the option (enable|disable|no)-static-engine, defaulting to no-static-engine. Note that the engines in crypto/engine/ (dynamic and cryptodev) will always be built into libcrypto. Reviewed-by: Rich Salz <rsalz@openssl.org>
This commit is contained in:
parent
45502bfe19
commit
343ec2b083
5 changed files with 36 additions and 24 deletions
45
Configure
45
Configure
|
@ -261,7 +261,7 @@ my @disablables = (
|
|||
"dsa",
|
||||
"dso",
|
||||
"dtls",
|
||||
"dynamic[-_]engine",
|
||||
"dynamic-engine",
|
||||
"ec",
|
||||
"ec2m",
|
||||
"ecdh",
|
||||
|
@ -335,6 +335,7 @@ my %disabled = ( # "what" => "comment"
|
|||
"sctp" => "default",
|
||||
"shared" => "default",
|
||||
"ssl-trace" => "default",
|
||||
"static-engine" => "default",
|
||||
"unit-test" => "default",
|
||||
"zlib" => "default",
|
||||
"crypto-mdebug" => "default",
|
||||
|
@ -380,6 +381,9 @@ my @disable_cascades = (
|
|||
"tlsext" => [ "srp", "heartbeats" ],
|
||||
|
||||
"crypto-mdebug" => [ "crypto-mdebug-backtrace" ],
|
||||
|
||||
# Without DSO, we can't load dynamic engines, so don't build them dynamic
|
||||
"dso" => [ "dynamic-engine" ],
|
||||
);
|
||||
|
||||
# Avoid protocol support holes. Also disable all versions below N, if version
|
||||
|
@ -544,6 +548,14 @@ foreach (@argvcopy)
|
|||
$disabled{$proto} = "option(tls)";
|
||||
}
|
||||
}
|
||||
elsif ($1 eq "static-engine")
|
||||
{
|
||||
$disabled{"static-engine"} = "option";
|
||||
}
|
||||
elsif ($1 eq "dynamic-engine")
|
||||
{
|
||||
delete $disabled{"static-engine"};
|
||||
}
|
||||
else
|
||||
{
|
||||
$disabled{$1} = "option";
|
||||
|
@ -551,6 +563,14 @@ foreach (@argvcopy)
|
|||
}
|
||||
elsif (/^enable-(.+)$/)
|
||||
{
|
||||
if ($1 eq "static-engine")
|
||||
{
|
||||
delete $disabled{"static-engine"};
|
||||
}
|
||||
elsif ($1 eq "dynamic-engine")
|
||||
{
|
||||
$disabled{"static-engine"} = "option";
|
||||
}
|
||||
my $algo = $1;
|
||||
delete $disabled{$algo};
|
||||
|
||||
|
@ -984,19 +1004,12 @@ if ($target{shared_target} eq "")
|
|||
$config{no_shared} = 1;
|
||||
}
|
||||
|
||||
if ($builder ne "mk1mf")
|
||||
{
|
||||
# add {no-}static-engine to options to allow mkdef.pl to work without extra arguments
|
||||
if ($config{no_shared})
|
||||
{
|
||||
push @{$config{openssl_other_defines}}, "OPENSSL_NO_DYNAMIC_ENGINE";
|
||||
$config{options}.=" static-engine";
|
||||
}
|
||||
else
|
||||
{
|
||||
push @{$config{openssl_other_defines}}, "OPENSSL_NO_STATIC_ENGINE";
|
||||
$config{options}.=" no-static-engine";
|
||||
}
|
||||
if ($disabled{"static-engine"}) {
|
||||
push @{$config{defines}}, "OPENSSL_NO_STATIC_ENGINE";
|
||||
$config{dynamic_engines} = 1;
|
||||
} else {
|
||||
push @{$config{defines}}, "OPENSSL_NO_DYNAMIC_ENGINE";
|
||||
$config{dynamic_engines} = 0;
|
||||
}
|
||||
|
||||
#
|
||||
|
@ -1371,8 +1384,8 @@ if ($builder eq "unified") {
|
|||
$unified_info{libraries}->{$library} = 1;
|
||||
}
|
||||
|
||||
die <<"EOF" if $config{no_shared} && scalar @engines;
|
||||
ENGINES can only be used if configured with 'shared'.
|
||||
die <<"EOF" if scalar @engines and !$config{dynamic_engines};
|
||||
ENGINES can only be used if configured with 'static-enginex'.
|
||||
This is usually a fault in a build.info file.
|
||||
EOF
|
||||
foreach (@engines) {
|
||||
|
|
|
@ -210,6 +210,7 @@ SHARED_LDFLAG={- $target{shared_ldflag}
|
|||
. ($config{target} =~ m|^BSD-| && $prefix !~ m|^/usr/.*$|
|
||||
? " -Wl,-rpath,\$\$(LIBRPATH)" : "") -}
|
||||
SHARED_RCFLAG={- $target{shared_rcflag} -}
|
||||
DYNAMIC_ENGINES={- $config{dynamic_engines} -}
|
||||
|
||||
GENERAL= Makefile
|
||||
BASENAME= openssl
|
||||
|
@ -254,7 +255,7 @@ BUILDENV= LC_ALL=C PLATFORM='$(PLATFORM)' PROCESSOR='$(PROCESSOR)'\
|
|||
AS='$(CC)' ASFLAG='$(CFLAG) -c' \
|
||||
AR='$(AR)' NM='$(NM)' RANLIB='$(RANLIB)' \
|
||||
CROSS_COMPILE='$(CROSS_COMPILE)' \
|
||||
PERL='$(PERL)' \
|
||||
PERL='$(PERL)' DYNAMIC_ENGINES='$(DYNAMIC_ENGINES)' \
|
||||
SDIRS='$(SDIRS)' LIBRPATH='$(INSTALLTOP)/$(LIBDIR)' \
|
||||
DESTDIR='$(DESTDIR)' \
|
||||
INSTALLTOP='$(INSTALLTOP)' OPENSSLDIR='$(OPENSSLDIR)' \
|
||||
|
|
|
@ -57,7 +57,7 @@ top:
|
|||
all: lib
|
||||
|
||||
lib: $(LIBOBJ) $(TESTLIBOBJ)
|
||||
@if [ -n "$(SHARED_LIBS)" ]; then \
|
||||
@if [ "$(DYNAMIC_ENGINES)" = 1 ]; then \
|
||||
set -e; \
|
||||
for l in $(LIBNAMES) $(TESTLIBNAMES); do \
|
||||
$(MAKE) -f ../Makefile.shared -e \
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{- use File::Spec::Functions qw/:DEFAULT rel2abs/; -}
|
||||
IF[{- $config{no_shared} -}]
|
||||
IF[{- !$config{dynamic_engines} -}]
|
||||
LIBS=../libcrypto
|
||||
SOURCE[../libcrypto]=\
|
||||
e_padlock.c {- $target{padlock_asm_src} -} \
|
||||
|
|
|
@ -176,8 +176,6 @@ foreach (grep(!/^$/, split(/ /, $OPTIONS)))
|
|||
print STDERR "unknown option - $_\n" if !&read_options;
|
||||
}
|
||||
|
||||
$no_static_engine = 0 if (!$shlib);
|
||||
|
||||
$no_mdc2=1 if ($no_des);
|
||||
|
||||
$no_ssl3=1 if ($no_md5);
|
||||
|
@ -1463,11 +1461,11 @@ sub read_options
|
|||
{
|
||||
$zlib_opt = 2;
|
||||
}
|
||||
elsif (/^no-static-engine/)
|
||||
elsif (/^no-static-engine/ or /^enable-dynamic-engine/)
|
||||
{
|
||||
$no_static_engine = 1;
|
||||
}
|
||||
elsif (/^enable-static-engine/)
|
||||
elsif (/^no-dynamic-engine/ or /^enable-static-engine/)
|
||||
{
|
||||
$no_static_engine = 0;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue