Move the handling of dso_scheme to dso_conf.h
authorRichard Levitte <levitte@openssl.org>
Fri, 23 Mar 2018 00:02:08 +0000 (01:02 +0100)
committerRichard Levitte <levitte@openssl.org>
Fri, 23 Mar 2018 00:02:08 +0000 (01:02 +0100)
The macros resulting from the dso_scheme attribute were defined for
libraries only, but there's a test program that uses the macros as
well.  The easier way is to move the handling of this macro to
crypto/include/internal/dso_conf.h and having the modules that need it
include it.

Reviewed-by: Andy Polyakov <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5733)

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

index ce33f488d6e76a8856e89285563028c567c59954..7a2ef9bae40a617a4bce2e5ea100b47e075baf39 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -1232,29 +1232,6 @@ if ($target =~ /linux.*-mips/ && !$disabled{asm}
        unshift @{$config{cxxflags}}, $value if $config{CXX};
 }
 
-# The DSO code currently always implements all functions so that no
-# applications will have to worry about that from a compilation point
-# of view. However, the "method"s may return zero unless that platform
-# 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;
-if (!$disabled{dso} && $target{dso_scheme} ne "")
-       {
-       $target{dso_scheme} =~ tr/[a-z]/[A-Z]/;
-       if ($target{dso_scheme} eq "DLFCN")
-               {
-               unshift @{$config{lib_defines}}, "DSO_DLFCN", "HAVE_DLFCN_H";
-               }
-       elsif ($target{dso_scheme} eq "DLFCN_NO_H")
-               {
-               unshift @{$config{lib_defines}}, "DSO_DLFCN";
-               }
-       else
-               {
-               unshift @{$config{lib_defines}}, "DSO_$target{dso_scheme}";
-               }
-       }
-
 # If threads aren't disabled, check how possible they are
 unless ($disabled{threads}) {
     if ($auto_threads) {
index daa5e247a39130231bdb0af6faa6e8ce78fc8356..ded87ca5cc754b9fffc864ce83dc5fc1d99ad174 100644 (file)
 
 #ifndef HEADER_DSO_CONF_H
 # define HEADER_DSO_CONF_H
-
+{- output_off() if $disabled{dso} -}
+{-  # The DSO code currently always implements all functions so that no
+    # applications will have to worry about that from a compilation point
+    # of view. However, the "method"s may return zero unless that platform
+    # 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 @macros = ( "DSO_$scheme" );
+    if ($scheme eq 'DLFCN') {
+        @macros = ( "DSO_DLFCN", "HAVE_DLFCN_H" );
+    } elsif ($scheme eq "DLFCN_NO_H") {
+        @macros = ( "DSO_DLFCN" );
+    }
+    join("\n", map { "# define $_" } @macros); -}
 # define DSO_EXTENSION "{- $target{dso_extension} -}"
+{- output_on() if $disabled{dso} -}
 #endif