diff options
-rwxr-xr-x | Configure | 47 | ||||
-rw-r--r-- | Makefile.in | 3 | ||||
-rw-r--r-- | engines/Makefile.in | 2 | ||||
-rw-r--r-- | engines/build.info | 2 | ||||
-rwxr-xr-x | util/mk1mf.pl | 6 |
5 files changed, 36 insertions, 24 deletions
@@ -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,20 +1004,13 @@ 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; +} # # Platform fix-ups @@ -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) { diff --git a/Makefile.in b/Makefile.in index c269a6d20a..9cca221cdd 100644 --- a/Makefile.in +++ b/Makefile.in @@ -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)' \ diff --git a/engines/Makefile.in b/engines/Makefile.in index ea2ae2cd1b..d07cc0f841 100644 --- a/engines/Makefile.in +++ b/engines/Makefile.in @@ -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 \ diff --git a/engines/build.info b/engines/build.info index cae49862ed..98f0e58ee9 100644 --- a/engines/build.info +++ b/engines/build.info @@ -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} -} \ diff --git a/util/mk1mf.pl b/util/mk1mf.pl index 08999bfe72..3e8967c315 100755 --- a/util/mk1mf.pl +++ b/util/mk1mf.pl @@ -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; } |