Apps: divide the modules in direct command modules, support library and init

Most modules are direct implementations of openssl application
sub-commands, but some constitute a support library, which can be used
by more than one program (and is, incidently, by test/uitest).

For practical purposes, we place the support library modules in a
private, static library.

Finally, there are some modules that don't have direct references in
the rest of the apps code, but are still crucial.  See them as some
kind of extra crt0 or similar for your platform.

Inspiration from David von Oheimb

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5222)
This commit is contained in:
Richard Levitte 2018-01-31 14:15:52 +01:00
parent dab2cd68e7
commit d6baf09fe0
5 changed files with 30 additions and 16 deletions

View file

@ -11,6 +11,7 @@ my %targets=(
thread_defines => [], thread_defines => [],
apps_aux_src => "", apps_aux_src => "",
apps_init_src => "",
cpuid_asm_src => "mem_clr.c", cpuid_asm_src => "mem_clr.c",
uplink_aux_src => "", uplink_aux_src => "",
bn_asm_src => "bn_asm.c", bn_asm_src => "bn_asm.c",
@ -134,7 +135,7 @@ my %targets=(
uplink_common => { uplink_common => {
template => 1, template => 1,
apps_aux_src => add("../ms/applink.c"), apps_init_src => add("../ms/applink.c"),
uplink_aux_src => add("../ms/uplink.c"), uplink_aux_src => add("../ms/uplink.c"),
defines => add("OPENSSL_USE_APPLINK"), defines => add("OPENSSL_USE_APPLINK"),
}, },

View file

@ -1852,7 +1852,8 @@ my %targets = (
dso_scheme => "vms", dso_scheme => "vms",
thread_scheme => "pthreads", thread_scheme => "pthreads",
apps_aux_src => "vms_decc_init.c vms_term_sock.c", apps_aux_src => "vms_term_sock.c",
apps_init_src => "vms_decc_init.c",
}, },
"vms-alpha" => { "vms-alpha" => {

View file

@ -212,8 +212,14 @@ In each table entry, the following keys are significant:
export vars as export vars as
accessor functions. accessor functions.
apps_extra_src => Extra source to build apps/openssl, as apps_aux_src => Extra source to build apps/openssl and other
needed by the target. apps, as needed by the target and that can be
collected in a library.
apps_init_src => Init source to build apps/openssl and other
apps, as needed by the target. This code
cannot be placed in a library, as the rest
of the code isn't expected to link to it
explicitely.
cpuid_asm_src => assembler implementation of cpuid code as cpuid_asm_src => assembler implementation of cpuid code as
well as OPENSSL_cleanse(). well as OPENSSL_cleanse().
Default to mem_clr.c Default to mem_clr.c

View file

@ -6,7 +6,7 @@ use Config;
# we expect for the platform # we expect for the platform
use File::Spec::Functions qw(:DEFAULT rel2abs); use File::Spec::Functions qw(:DEFAULT rel2abs);
if (rel2abs('.') !~ m|\\|) { if (!$ENV{CONFIGURE_INSIST} && rel2abs('.') !~ m|\\|) {
die <<EOF; die <<EOF;
****************************************************************************** ******************************************************************************

View file

@ -1,21 +1,27 @@
{- our $tsget_name = $config{target} =~ /^(VC|vms)-/ ? "tsget.pl" : "tsget"; {- our $tsget_name = $config{target} =~ /^(VC|vms)-/ ? "tsget.pl" : "tsget";
our @apps_openssl_src = our @apps_openssl_src =
( qw(openssl.c qw(openssl.c
asn1pars.c ca.c ciphers.c cms.c crl.c crl2p7.c dgst.c dhparam.c asn1pars.c ca.c ciphers.c cms.c crl.c crl2p7.c dgst.c dhparam.c
dsa.c dsaparam.c ec.c ecparam.c enc.c engine.c errstr.c gendsa.c dsa.c dsaparam.c ec.c ecparam.c enc.c engine.c errstr.c gendsa.c
genpkey.c genrsa.c nseq.c ocsp.c passwd.c pkcs12.c pkcs7.c pkcs8.c genpkey.c genrsa.c nseq.c ocsp.c passwd.c pkcs12.c pkcs7.c pkcs8.c
pkey.c pkeyparam.c pkeyutl.c prime.c rand.c req.c rsa.c rsautl.c pkey.c pkeyparam.c pkeyutl.c prime.c rand.c req.c rsa.c rsautl.c
s_client.c s_server.c s_time.c sess_id.c smime.c speed.c spkac.c s_client.c s_server.c s_time.c sess_id.c smime.c speed.c spkac.c
srp.c ts.c verify.c version.c x509.c rehash.c storeutl.c srp.c ts.c verify.c version.c x509.c rehash.c storeutl.c);
apps.c opt.c s_cb.c s_socket.c our @apps_lib_src =
app_rand.c), ( qw(apps.c opt.c s_cb.c s_socket.c app_rand.c),
split(/\s+/, $target{apps_aux_src}) ); split(/\s+/, $target{apps_aux_src}) );
our @apps_init_src = split(/\s+/, $target{apps_init_src});
"" -} "" -}
IF[{- !$disabled{apps} -}] IF[{- !$disabled{apps} -}]
LIBS_NO_INST=libapps.a
SOURCE[libapps.a]={- join(" ", @apps_lib_src) -}
INCLUDE[libapps.a]=.. ../include
PROGRAMS=openssl PROGRAMS=openssl
SOURCE[openssl]={- join(" ", @apps_init_src) -}
SOURCE[openssl]={- join(" ", @apps_openssl_src) -} SOURCE[openssl]={- join(" ", @apps_openssl_src) -}
INCLUDE[openssl]=.. ../include INCLUDE[openssl]=.. ../include
DEPEND[openssl]=../libssl DEPEND[openssl]=libapps.a ../libssl
{- join("\n ", map { (my $x = $_) =~ s|\.c$|.o|; "DEPEND[$x]=progs.h" } {- join("\n ", map { (my $x = $_) =~ s|\.c$|.o|; "DEPEND[$x]=progs.h" }
@apps_openssl_src) -} @apps_openssl_src) -}