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.dale@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/8623)
"msan",
"multiblock",
"nextprotoneg",
"msan",
"multiblock",
"nextprotoneg",
"crypto-mdebug" => [ "crypto-mdebug-backtrace" ],
"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" ],
"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" ],
"engine" => [ grep /eng$/, @disablables ],
"hw" => [ "padlockeng" ],
$config{options} .= " no-$what";
$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;
'pic', 'dynamic-engine', 'makedepend',
'zlib-dynamic', 'zlib', 'sse2' )) {
(my $WHAT = uc $what) =~ s|-|_|g;
{
$no_shared_warn = 1
if (!$disabled{shared} || !$disabled{"dynamic-engine"});
{
$no_shared_warn = 1
if (!$disabled{shared} || !$disabled{"dynamic-engine"});
- $disabled{shared} = "no-shared-target";
$disabled{pic} = $disabled{shared} = $disabled{"dynamic-engine"} =
$disabled{pic} = $disabled{shared} = $disabled{"dynamic-engine"} =
+ $disabled{module} = "no-shared-target";
}
if ($disabled{"dynamic-engine"}) {
}
if ($disabled{"dynamic-engine"}) {
SOURCE[provider_test]=provider_test.c p_test.c
INCLUDE[provider_test]=../include ../apps/include
DEPEND[provider_test]=../libcrypto.a libtestutil.a
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
MODULES{noinst}=p_test
SOURCE[p_test]=p_test.c
INCLUDE[p_test]=../include