Fix building statically without any dso support
authorBernd Edlinger <bernd.edlinger@hotmail.de>
Fri, 13 Sep 2019 08:45:29 +0000 (10:45 +0200)
committerBernd Edlinger <bernd.edlinger@hotmail.de>
Mon, 16 Sep 2019 16:23:20 +0000 (18:23 +0200)
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/9895)

Configure
INSTALL
crypto/include/internal/dso_conf.h.in

index 92c9d4e..4415e1d 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -350,6 +350,7 @@ my @disablables = (
     "dgram",
     "dh",
     "dsa",
     "dgram",
     "dh",
     "dsa",
+    "dso",
     "dtls",
     "dynamic-engine",
     "ec",
     "dtls",
     "dynamic-engine",
     "ec",
@@ -442,7 +443,6 @@ my %deprecated_disablables = (
     "hw-padlock" => "padlockeng",
     "ripemd" => "rmd160",
     "ui" => "ui-console",
     "hw-padlock" => "padlockeng",
     "ripemd" => "rmd160",
     "ui" => "ui-console",
-    "dso" => undef,
     "heartbeats" => undef,
     );
 
     "heartbeats" => undef,
     );
 
@@ -510,6 +510,7 @@ my @disable_cascades = (
     # (note that even with shared libraries, both the app and dynamic engines
     # must be linked with the same library)
     "shared"            => [ "dynamic-engine", "uplink" ],
     # (note that even with shared libraries, both the app and dynamic engines
     # must be linked with the same library)
     "shared"            => [ "dynamic-engine", "uplink" ],
+    "dso"               => [ "dynamic-engine", "module" ],
     # Other modules don't necessarily have to link with libcrypto, so shared
     # libraries do not have to be a condition to produce those.
 
     # Other modules don't necessarily have to link with libcrypto, so shared
     # libraries do not have to be a condition to produce those.
 
@@ -1239,7 +1240,7 @@ foreach my $what (sort keys %disabled) {
 
         $skipdir{engines} = $what if $what eq 'engine';
         $skipdir{"crypto/$skipdir"} = $what
 
         $skipdir{engines} = $what if $what eq 'engine';
         $skipdir{"crypto/$skipdir"} = $what
-            unless $what eq 'async' || $what eq 'err';
+            unless $what eq 'async' || $what eq 'err' || $what eq 'dso';
     }
 }
 
     }
 }
 
diff --git a/INSTALL b/INSTALL
index c02ceb1..d576548 100644 (file)
--- a/INSTALL
+++ b/INSTALL
                    Don't build support for datagram based BIOs. Selecting this
                    option will also force the disabling of DTLS.
 
                    Don't build support for datagram based BIOs. Selecting this
                    option will also force the disabling of DTLS.
 
+  no-dso
+                   Don't build support for loading Dynamic Shared Objects.
+
   enable-devcryptoeng
                    Build the /dev/crypto engine.  It is automatically selected
                    on BSD implementations, in which case it can be disabled with
   enable-devcryptoeng
                    Build the /dev/crypto engine.  It is automatically selected
                    on BSD implementations, in which case it can be disabled with
index b6703f7..9a373b2 100644 (file)
@@ -16,7 +16,7 @@
     # has support compiled in for them. Currently each method is enabled
     # by a define "DSO_<name>" ... we translate the "dso_scheme" config
     # string entry into using the following logic;
     # has support compiled in for them. Currently each method is enabled
     # by a define "DSO_<name>" ... we translate the "dso_scheme" config
     # string entry into using the following logic;
-    my $scheme = uc $target{dso_scheme};
+    my $scheme = $disabled{dso} ? undef : uc $target{dso_scheme};
     if (!$scheme) {
         $scheme = "NONE";
     }
     if (!$scheme) {
         $scheme = "NONE";
     }