RT4310: Fix varous no-XXX builds
authorRich Salz <rsalz@openssl.org>
Wed, 17 Feb 2016 18:33:51 +0000 (13:33 -0500)
committerRich Salz <rsalz@openssl.org>
Wed, 17 Feb 2016 18:33:51 +0000 (13:33 -0500)
When OPENSSL_NO_ASYNC is set, make ASYNC_{un,}block_pause() do nothing.
This prevents md_rand.c from failing to build. Probably better to do it
this way than to wrap every instance in an explicit #ifdef.

A bunch of new socket code got added to a new file crypto/bio/b_addr.c.
Make it all go away if OPENSSL_NO_SOCK is defined.

Allow configuration with no-ripemd, no-ts, no-ui
We use these for the UEFI build.

Also remove the 'Really???' comment from no-err and no-locking. We use
those too.

We need to drop the crypto/engine directory from the build too, and also
set OPENSSL_NO_ENGINE

Signed-off-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Tim Hudson <tjh@openssl.org>
Configure
crypto/bio/b_addr.c
crypto/init.c
include/openssl/async.h

index bc753633f34a3fb564b088e8a2a362658738aba6..2ada7029f2a602f89c1f17782e481867cc7624e9 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -269,12 +269,12 @@ my @disablables = (
     "ec_nistp_64_gcc_128",
     "egd",
     "engine",
-    "err",                     # Really???
+    "err",
     "heartbeats",
     "hmac",
     "hw(-.+)?",
     "idea",
-    "locking",                 # Really???
+    "locking",
     "md2",
     "md4",
     "md5",
@@ -292,6 +292,7 @@ my @disablables = (
     "rdrand",
     "rfc3779",
     "rijndael",                        # Old AES name
+    "ripemd",
     "rmd160",
     "rsa",
     "scrypt",
@@ -310,6 +311,8 @@ my @disablables = (
     "stdio",
     "threads",
     "tls",
+    "ts",
+    "ui",
     "unit-test",
     "whirlpool",
     "zlib",
@@ -772,13 +775,17 @@ foreach (sort (keys %disabled))
        elsif (/^sse2$/)
                { $no_sse2 = 1; }
        elsif (/^engine$/)
-               { @{$config{dirs}} = grep !/^engine$/, @{$config{dirs}}; }
+               {
+               @{$config{dirs}} = grep !/^engines$/, @{$config{dirs}};
+               @{$config{sdirs}} = grep !/^engine$/, @{$config{sdirs}};
+               push @{$config{openssl_other_defines}}, "OPENSSL_NO_ENGINE";
+               }
        else
                {
                my ($ALGO, $algo);
                ($ALGO = $algo = $_) =~ tr/[\-a-z]/[_A-Z]/;
 
-               if (/^asm$/ || /^err$/ || /^hw$/ || /^hw-/ || /^async$/
+               if (/^asm$/ || /^err$/ || /^hw$/ || /^hw-/
                                || /^autoalginit/ || /^autoerrinit/)
                        {
                        push @{$config{openssl_other_defines}}, "OPENSSL_NO_$ALGO";
index e92876ab99260124cb074149e1f9d78daf5c0142..a46cf93786505b3eb336f2c874265dce6f843576 100644 (file)
@@ -56,6 +56,7 @@
 
 #include "bio_lcl.h"
 
+#ifndef OPENSSL_NO_SOCK
 #include <openssl/err.h>
 #include <openssl/buffer.h>
 #include <ctype.h>
@@ -848,3 +849,4 @@ int BIO_lookup(const char *host, const char *service,
 
     return ret;
 }
+#endif /* OPENSSL_NO_SOCK */
index c7eff8ba4ab51c88c736ac3d6e1d6e9739d8acaa..8775b82a228315640e536f0b03904fb0db9c2273 100644 (file)
@@ -62,7 +62,9 @@
 #include <internal/evp_int.h>
 #include <internal/conf.h>
 #include <internal/async.h>
+#ifndef OPENSSL_NO_ENGINE
 #include <internal/engine.h>
+#endif
 #include <openssl/comp.h>
 #include <internal/err.h>
 #include <stdlib.h>
@@ -372,6 +374,7 @@ static void ossl_init_no_config(void)
     config_inited = 1;
 }
 
+#ifndef OPENSSL_NO_ASYNC
 static OPENSSL_INIT_ONCE async = OPENSSL_INIT_ONCE_STATIC_INIT;
 static int async_inited = 0;
 static void ossl_init_async(void)
@@ -382,6 +385,7 @@ static void ossl_init_async(void)
     async_init();
     async_inited = 1;
 }
+#endif
 
 #ifndef OPENSSL_NO_ENGINE
 static int engine_inited = 0;
@@ -483,6 +487,7 @@ static void ossl_init_thread_stop(struct thread_local_inits_st *locals)
     if (locals == NULL)
         return;
 
+#ifndef OPENSSL_NO_ASYNC
     if (locals->async) {
 #ifdef OPENSSL_INIT_DEBUG
         fprintf(stderr, "OPENSSL_INIT: ossl_init_thread_stop: "
@@ -490,6 +495,7 @@ static void ossl_init_thread_stop(struct thread_local_inits_st *locals)
 #endif
         ASYNC_cleanup_thread();
     }
+#endif
 
     if (locals->err_state) {
 #ifdef OPENSSL_INIT_DEBUG
@@ -664,10 +670,11 @@ int OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings)
         CRYPTO_w_unlock(CRYPTO_LOCK_INIT);
     }
 
+#ifndef OPENSSL_NO_ASYNC
     if (opts & OPENSSL_INIT_ASYNC) {
         ossl_init_once_run(&async, ossl_init_async);
     }
-
+#endif
 #ifndef OPENSSL_NO_ENGINE
     if (opts & OPENSSL_INIT_ENGINE_OPENSSL) {
         ossl_init_once_run(&engine_openssl, ossl_init_engine_openssl);
index 8ec9b000c43c6b774508953b578195191f04257b..99d80752159dd13e4b7aad738c02c70ff7c98e97 100644 (file)
 #ifndef HEADER_ASYNC_H
 # define HEADER_ASYNC_H
 
+#include <openssl/opensslconf.h>
+
+#ifdef OPENSSL_NO_ASYNC
+#define ASYNC_block_pause() do { ; } while(0)
+#define ASYNC_unblock_pause() do { ; } while(0)
+#else
 #include <stdlib.h>
 
 #if defined(_WIN32)
@@ -116,4 +122,5 @@ void ERR_load_ASYNC_strings(void);
 #ifdef  __cplusplus
 }
 #endif
+#endif /* OPENSSL_NO_ASYNC */
 #endif