Apps: divide the modules in direct command modules, support library and init
authorRichard Levitte <levitte@openssl.org>
Wed, 31 Jan 2018 13:15:52 +0000 (14:15 +0100)
committerRichard Levitte <levitte@openssl.org>
Wed, 31 Jan 2018 22:45:12 +0000 (23:45 +0100)
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)

Configurations/00-base-templates.conf
Configurations/10-main.conf
Configurations/README
Configurations/windows-checker.pm
apps/build.info

index 72cbde203fc72deaa6791ae6bfa6c4c3eea6ef31..0d0f8b8a7f4a403d23a0e7a766e87d4a31aaf0a3 100644 (file)
@@ -11,6 +11,7 @@ my %targets=(
        thread_defines  => [],
 
        apps_aux_src    => "",
+       apps_init_src   => "",
        cpuid_asm_src   => "mem_clr.c",
        uplink_aux_src  => "",
        bn_asm_src      => "bn_asm.c",
@@ -134,7 +135,7 @@ my %targets=(
 
     uplink_common => {
        template        => 1,
-       apps_aux_src    => add("../ms/applink.c"),
+       apps_init_src   => add("../ms/applink.c"),
        uplink_aux_src  => add("../ms/uplink.c"),
        defines         => add("OPENSSL_USE_APPLINK"),
     },
index 62fbb60f1ef122d1f8393085cc4266b0163e25c3..70b01046e7b008157f0d5a5eedcb4229f0c18ddd 100644 (file)
@@ -1852,7 +1852,8 @@ my %targets = (
         dso_scheme       => "vms",
         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" => {
index aa0c5fba8b921b5f6ca4fc55f951be3192573a59..26cd0c6e44a6da4cfdc490357b8ba161fd9a6bd9 100644 (file)
@@ -212,8 +212,14 @@ In each table entry, the following keys are significant:
                                                 export vars as
                                                 accessor functions.
 
-        apps_extra_src  => Extra source to build apps/openssl, as
-                           needed by the target.
+        apps_aux_src    => Extra source to build apps/openssl and other
+                           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
                            well as OPENSSL_cleanse().
                            Default to mem_clr.c
index de46fbc1dfc52810574f09e3505fd80fc1e3030c..4b7105df33cbf5118c30c7a13aa582397b73c54c 100644 (file)
@@ -6,7 +6,7 @@ use Config;
 # we expect for the platform
 use File::Spec::Functions qw(:DEFAULT rel2abs);
 
-if (rel2abs('.') !~ m|\\|) {
+if (!$ENV{CONFIGURE_INSIST} && rel2abs('.') !~ m|\\|) {
     die <<EOF;
 
 ******************************************************************************
index 996e5a6cfa5d6689d6a0ce254dd5fa1cda4e585f..4a36ab564a5360eafcf4154b3fba893c50a7b877 100644 (file)
@@ -1,21 +1,27 @@
 {- our $tsget_name = $config{target} =~ /^(VC|vms)-/ ? "tsget.pl" : "tsget";
    our @apps_openssl_src =
-       ( qw(openssl.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
-            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
-            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
-            apps.c opt.c s_cb.c s_socket.c
-            app_rand.c),
-          split(/\s+/, $target{apps_aux_src}) );
+       qw(openssl.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
+          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
+          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);
+   our @apps_lib_src =
+       ( qw(apps.c opt.c s_cb.c s_socket.c app_rand.c),
+         split(/\s+/, $target{apps_aux_src}) );
+   our @apps_init_src = split(/\s+/, $target{apps_init_src});
    "" -}
 IF[{- !$disabled{apps} -}]
+  LIBS_NO_INST=libapps.a
+  SOURCE[libapps.a]={- join(" ", @apps_lib_src) -}
+  INCLUDE[libapps.a]=.. ../include
+
   PROGRAMS=openssl
+  SOURCE[openssl]={- join(" ", @apps_init_src) -}
   SOURCE[openssl]={- join(" ", @apps_openssl_src) -}
   INCLUDE[openssl]=.. ../include
-  DEPEND[openssl]=../libssl
+  DEPEND[openssl]=libapps.a ../libssl
 
   {- join("\n  ", map { (my $x = $_) =~ s|\.c$|.o|; "DEPEND[$x]=progs.h" }
                   @apps_openssl_src) -}