The branch master has been updated
       via  521b7cb3883605740fb4727120f18810ba47d50b (commit)
       via  34786bdee0b2af74a84a32ca32bb1c2c256e6014 (commit)
       via  22b414672d0260904ef2f5f5304b02f96c67dd7e (commit)
      from  0b45d8eec051fd9816b6bf46a975fa461ffc983d (commit)


- Log -----------------------------------------------------------------
commit 521b7cb3883605740fb4727120f18810ba47d50b
Author: Richard Levitte <levi...@openssl.org>
Date:   Sun Mar 31 15:26:26 2019 +0200

    Correct the checks of module availability in provider test programs
    
    Previously, the macro OPENSSL_NO_SHARED was defined of the test/p_test
    module wasn't built, but the provider test programs didn't check that
    macro.  We rename it to OPENSSL_NO_MODULE, since that name describes
    the situation more than OPENSSL_NO_SHARED does, and use it.
    
    Reviewed-by: Paul Dale <paul.d...@oracle.com>
    (Merged from https://github.com/openssl/openssl/pull/8623)

commit 34786bdee0b2af74a84a32ca32bb1c2c256e6014
Author: Richard Levitte <levi...@openssl.org>
Date:   Sun Mar 31 15:17:58 2019 +0200

    Configuration / build: make it possible to disable building of modules
    
    While we're at it, sort out inconsistencies with the build of modules:
    - not building shared libraries means not building dynamic engines.
      However, other modules may still be built.
    - not having DSO functionality doesn't mean not to build modules (even
      though we can't use them from apps linked with libraries that are
      built this way).
    
    Reviewed-by: Paul Dale <paul.d...@oracle.com>
    (Merged from https://github.com/openssl/openssl/pull/8623)

commit 22b414672d0260904ef2f5f5304b02f96c67dd7e
Author: Richard Levitte <levi...@openssl.org>
Date:   Sun Mar 31 15:14:00 2019 +0200

    Build cleanup: don't use SHARED_SOURCE with modules
    
    SHARED_SOURCE is reserved for products that are expected to come in
    dual shared / non-shared form, i.e. the routine libraries like
    libcrypto and libssl, to distinguish source that should only appear in
    their shared form.
    
    Modules are always shared, so there's no need for them to have this
    type of distinction.
    
    Reviewed-by: Paul Dale <paul.d...@oracle.com>
    (Merged from https://github.com/openssl/openssl/pull/8623)

-----------------------------------------------------------------------

Summary of changes:
 Configurations/common.tmpl    |  4 ++--
 Configure                     | 29 +++++++++++++++++++++--------
 engines/build.info            | 12 ++++++------
 test/build.info               |  9 +++++----
 test/provider_internal_test.c |  9 ++-------
 test/provider_test.c          | 10 ++--------
 6 files changed, 38 insertions(+), 35 deletions(-)

diff --git a/Configurations/common.tmpl b/Configurations/common.tmpl
index 5ca0d56..62b1102 100644
--- a/Configurations/common.tmpl
+++ b/Configurations/common.tmpl
@@ -151,9 +151,9 @@
      return "" if $cache{$lib};
      $OUT .= obj2dso(lib => $lib,
                      attrs => $unified_info{attributes}->{$lib},
-                     objs => $unified_info{shared_sources}->{$lib},
+                     objs => $unified_info{sources}->{$lib},
                      deps => [ resolvedepends($lib) ]);
-     foreach (@{$unified_info{shared_sources}->{$lib}}) {
+     foreach (@{$unified_info{sources}->{$lib}}) {
          # If this is somehow a compiled object, take care of it that way
          # Otherwise, it might simply be generated
          if (defined $unified_info{sources}->{$_}) {
diff --git a/Configure b/Configure
index df66abb..62f4af5 100755
--- a/Configure
+++ b/Configure
@@ -377,6 +377,7 @@ my @disablables = (
     "md2",
     "md4",
     "mdc2",
+    "module",
     "msan",
     "multiblock",
     "nextprotoneg",
@@ -493,9 +494,23 @@ my @disable_cascades = (
 
     "crypto-mdebug"     => [ "crypto-mdebug-backtrace" ],
 
-    # Without position independent code, there can be no shared libraries or 
DSOs
-    "pic"               => [ "shared" ],
+    # If no modules, then no dynamic engines either
+    "module"            => [ "dynamic-engine" ],
+
+    # Without shared libraries, dynamic engines aren't possible.
+    # This is due to them having to link with libcrypto and register features
+    # using the ENGINE functionality, and since that relies on global tables,
+    # those *have* to be exacty the same as the ones accessed from the app,
+    # which cannot be guaranteed if shared libraries aren't present.
+    # (note that even with shared libraries, both the app and dynamic engines
+    # must be linked with the same library)
     "shared"            => [ "dynamic-engine" ],
+    # Other modules don't necessarily have to link with libcrypto, so shared
+    # libraries do not have to be a condition to produce those.
+
+    # Without position independent code, there can be no shared libraries
+    # or modules.
+    "pic"               => [ "shared", "module" ],
 
     "engine"            => [ grep /eng$/, @disablables ],
     "hw"                => [ "padlockeng" ],
@@ -1206,7 +1221,7 @@ foreach my $what (sort keys %disabled) {
 
     $config{options} .= " no-$what";
 
-    if (!grep { $what eq $_ } ( 'buildtest-c++', 'threads', 'shared',
+    if (!grep { $what eq $_ } ( 'buildtest-c++', 'threads', 'shared', 'module',
                                 'pic', 'dynamic-engine', 'makedepend',
                                 'zlib-dynamic', 'zlib', 'sse2' )) {
         (my $WHAT = uc $what) =~ s|-|_|g;
@@ -1312,9 +1327,8 @@ if ($target{shared_target} eq "")
         {
         $no_shared_warn = 1
             if (!$disabled{shared} || !$disabled{"dynamic-engine"});
-        $disabled{shared} = "no-shared-target";
         $disabled{pic} = $disabled{shared} = $disabled{"dynamic-engine"} =
-            "no-shared-target";
+            $disabled{module} = "no-shared-target";
         }
 
 if ($disabled{"dynamic-engine"}) {
@@ -2191,9 +2205,8 @@ EOF
                                            src => [ 'sources',
                                                     'shared_sources' ],
                                            dst => 'shared_sources' } },
-                modules   => { dso    => { src => [ 'sources',
-                                                    'shared_sources' ],
-                                           dst => 'shared_sources' } },
+                modules   => { dso    => { src => [ 'sources' ],
+                                           dst => 'sources' } },
                 scripts   => { script => { src => [ 'sources' ],
                                            dst => 'sources' } }
                } -> {$prodtype};
diff --git a/engines/build.info b/engines/build.info
index 16907da..3189f9f 100644
--- a/engines/build.info
+++ b/engines/build.info
@@ -21,7 +21,7 @@ IF[{- !$disabled{"engine"} -}]
       DEPEND[padlock]=../libcrypto
       INCLUDE[padlock]=../include
       IF[{- defined $target{shared_defflag} -}]
-        SHARED_SOURCE[padlock]=padlock.ld
+        SOURCE[padlock]=padlock.ld
         GENERATE[padlock.ld]=../util/engines.num
       ENDIF
     ENDIF
@@ -31,7 +31,7 @@ IF[{- !$disabled{"engine"} -}]
       DEPEND[capi]=../libcrypto
       INCLUDE[capi]=../include
       IF[{- defined $target{shared_defflag} -}]
-        SHARED_SOURCE[capi]=capi.ld
+        SOURCE[capi]=capi.ld
         GENERATE[capi.ld]=../util/engines.num
       ENDIF
     ENDIF
@@ -41,7 +41,7 @@ IF[{- !$disabled{"engine"} -}]
       DEPEND[afalg]=../libcrypto
       INCLUDE[afalg]= ../include
       IF[{- defined $target{shared_defflag} -}]
-        SHARED_SOURCE[afalg]=afalg.ld
+        SOURCE[afalg]=afalg.ld
         GENERATE[afalg.ld]=../util/engines.num
       ENDIF
     ENDIF
@@ -51,7 +51,7 @@ IF[{- !$disabled{"engine"} -}]
       DEPEND[devcrypto]=../libcrypto
       INCLUDE[devcrypto]=../include
       IF[{- defined $target{shared_defflag} -}]
-        SHARED_SOURCE[devcrypto]=devcrypto.ld
+        SOURCE[devcrypto]=devcrypto.ld
         GENERATE[devcrypto.ld]=../util/engines.num
       ENDIF
     ENDIF
@@ -61,14 +61,14 @@ IF[{- !$disabled{"engine"} -}]
     DEPEND[dasync]=../libcrypto
     INCLUDE[dasync]=../include
     IF[{- defined $target{shared_defflag} -}]
-      SHARED_SOURCE[dasync]=dasync.ld
+      SOURCE[dasync]=dasync.ld
       GENERATE[dasync.ld]=../util/engines.num
     ENDIF
     SOURCE[ossltest]=e_ossltest.c
     DEPEND[ossltest]=../libcrypto
     INCLUDE[ossltest]=../include
     IF[{- defined $target{shared_defflag} -}]
-      SHARED_SOURCE[ossltest]=ossltest.ld
+      SOURCE[ossltest]=ossltest.ld
       GENERATE[ossltest.ld]=../util/engines.num
     ENDIF
   ENDIF
diff --git a/test/build.info b/test/build.info
index 13d6630..973536d 100644
--- a/test/build.info
+++ b/test/build.info
@@ -603,7 +603,7 @@ IF[{- !$disabled{tests} -}]
   SOURCE[provider_test]=provider_test.c p_test.c
   INCLUDE[provider_test]=../include ../apps/include
   DEPEND[provider_test]=../libcrypto.a libtestutil.a
-  IF[{- !$disabled{shared} -}]
+  IF[{- !$disabled{module} -}]
     MODULES{noinst}=p_test
     SOURCE[p_test]=p_test.c
     INCLUDE[p_test]=../include
@@ -611,9 +611,10 @@ IF[{- !$disabled{tests} -}]
       SOURCE[p_test]=p_test.ld
       GENERATE[p_test.ld]=../util/providers.num
     ENDIF
-  ELSE
-    DEFINE[provider_test]=OPENSSL_NO_SHARED
-    DEFINE[provider_internal_test]=OPENSSL_NO_SHARED
+  ENDIF
+  IF[{- $disabled{module} || !$target{dso_scheme} -}]
+    DEFINE[provider_test]=OPENSSL_NO_MODULE
+    DEFINE[provider_internal_test]=OPENSSL_NO_MODULE
   ENDIF
 
   PROGRAMS{noinst}=params_test
diff --git a/test/provider_internal_test.c b/test/provider_internal_test.c
index 7f6bb20..cbb85c3 100644
--- a/test/provider_internal_test.c
+++ b/test/provider_internal_test.c
@@ -11,11 +11,6 @@
 #include "internal/provider.h"
 #include "testutil.h"
 
-#if !defined(DSO_VMS) && !defined(DSO_DLCFN) && !defined(DSO_DL) \
-    && !defined(DSO_WIN32) && !defined(DSO_DLFCN)
-# define OPENSSL_NO_DSO
-#endif
-
 extern OSSL_provider_init_fn PROVIDER_INIT_FUNCTION_NAME;
 
 static char buf[256];
@@ -61,7 +56,7 @@ static int test_builtin_provider(void)
         && test_provider(prov);
 }
 
-#ifndef OPENSSL_NO_DSO
+#ifndef OPENSSL_NO_MODULE
 static int test_loaded_provider(void)
 {
     const char *name = "p_test";
@@ -76,7 +71,7 @@ static int test_loaded_provider(void)
 int setup_tests(void)
 {
     ADD_TEST(test_builtin_provider);
-#ifndef OPENSSL_NO_DSO
+#ifndef OPENSSL_NO_MODULE
     ADD_TEST(test_loaded_provider);
 #endif
     return 1;
diff --git a/test/provider_test.c b/test/provider_test.c
index cba7cba..ee6f94c 100644
--- a/test/provider_test.c
+++ b/test/provider_test.c
@@ -11,12 +11,6 @@
 #include <openssl/provider.h>
 #include "testutil.h"
 
-#if !defined(DSO_VMS) && !defined(DSO_DLCFN) && !defined(DSO_DL) \
-    && !defined(DSO_WIN32) && !defined(DSO_DLFCN)
-# define OPENSSL_NO_DSO
-#endif
-
-
 extern OSSL_provider_init_fn PROVIDER_INIT_FUNCTION_NAME;
 
 static char buf[256];
@@ -55,7 +49,7 @@ static int test_builtin_provider(void)
         && test_provider(name);
 }
 
-#ifndef OPENSSL_NO_DSO
+#ifndef OPENSSL_NO_MODULE
 static int test_loaded_provider(void)
 {
     const char *name = "p_test";
@@ -67,7 +61,7 @@ static int test_loaded_provider(void)
 int setup_tests(void)
 {
     ADD_TEST(test_builtin_provider);
-#ifndef OPENSSL_NO_DSO
+#ifndef OPENSSL_NO_MODULE
     ADD_TEST(test_loaded_provider);
 #endif
     return 1;

Reply via email to