RT4310: Fix varous no-XXX builds

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>
This commit is contained in:
Rich Salz 2016-02-17 13:33:51 -05:00
parent c7c4625693
commit 1288f26fb9
4 changed files with 28 additions and 5 deletions

View File

@ -269,12 +269,12 @@ my @disablables = (
"ec_nistp_64_gcc_128", "ec_nistp_64_gcc_128",
"egd", "egd",
"engine", "engine",
"err", # Really??? "err",
"heartbeats", "heartbeats",
"hmac", "hmac",
"hw(-.+)?", "hw(-.+)?",
"idea", "idea",
"locking", # Really??? "locking",
"md2", "md2",
"md4", "md4",
"md5", "md5",
@ -292,6 +292,7 @@ my @disablables = (
"rdrand", "rdrand",
"rfc3779", "rfc3779",
"rijndael", # Old AES name "rijndael", # Old AES name
"ripemd",
"rmd160", "rmd160",
"rsa", "rsa",
"scrypt", "scrypt",
@ -310,6 +311,8 @@ my @disablables = (
"stdio", "stdio",
"threads", "threads",
"tls", "tls",
"ts",
"ui",
"unit-test", "unit-test",
"whirlpool", "whirlpool",
"zlib", "zlib",
@ -772,13 +775,17 @@ foreach (sort (keys %disabled))
elsif (/^sse2$/) elsif (/^sse2$/)
{ $no_sse2 = 1; } { $no_sse2 = 1; }
elsif (/^engine$/) 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 else
{ {
my ($ALGO, $algo); my ($ALGO, $algo);
($ALGO = $algo = $_) =~ tr/[\-a-z]/[_A-Z]/; ($ALGO = $algo = $_) =~ tr/[\-a-z]/[_A-Z]/;
if (/^asm$/ || /^err$/ || /^hw$/ || /^hw-/ || /^async$/ if (/^asm$/ || /^err$/ || /^hw$/ || /^hw-/
|| /^autoalginit/ || /^autoerrinit/) || /^autoalginit/ || /^autoerrinit/)
{ {
push @{$config{openssl_other_defines}}, "OPENSSL_NO_$ALGO"; push @{$config{openssl_other_defines}}, "OPENSSL_NO_$ALGO";

View File

@ -56,6 +56,7 @@
#include "bio_lcl.h" #include "bio_lcl.h"
#ifndef OPENSSL_NO_SOCK
#include <openssl/err.h> #include <openssl/err.h>
#include <openssl/buffer.h> #include <openssl/buffer.h>
#include <ctype.h> #include <ctype.h>
@ -848,3 +849,4 @@ int BIO_lookup(const char *host, const char *service,
return ret; return ret;
} }
#endif /* OPENSSL_NO_SOCK */

View File

@ -62,7 +62,9 @@
#include <internal/evp_int.h> #include <internal/evp_int.h>
#include <internal/conf.h> #include <internal/conf.h>
#include <internal/async.h> #include <internal/async.h>
#ifndef OPENSSL_NO_ENGINE
#include <internal/engine.h> #include <internal/engine.h>
#endif
#include <openssl/comp.h> #include <openssl/comp.h>
#include <internal/err.h> #include <internal/err.h>
#include <stdlib.h> #include <stdlib.h>
@ -372,6 +374,7 @@ static void ossl_init_no_config(void)
config_inited = 1; config_inited = 1;
} }
#ifndef OPENSSL_NO_ASYNC
static OPENSSL_INIT_ONCE async = OPENSSL_INIT_ONCE_STATIC_INIT; static OPENSSL_INIT_ONCE async = OPENSSL_INIT_ONCE_STATIC_INIT;
static int async_inited = 0; static int async_inited = 0;
static void ossl_init_async(void) static void ossl_init_async(void)
@ -382,6 +385,7 @@ static void ossl_init_async(void)
async_init(); async_init();
async_inited = 1; async_inited = 1;
} }
#endif
#ifndef OPENSSL_NO_ENGINE #ifndef OPENSSL_NO_ENGINE
static int engine_inited = 0; static int engine_inited = 0;
@ -483,6 +487,7 @@ static void ossl_init_thread_stop(struct thread_local_inits_st *locals)
if (locals == NULL) if (locals == NULL)
return; return;
#ifndef OPENSSL_NO_ASYNC
if (locals->async) { if (locals->async) {
#ifdef OPENSSL_INIT_DEBUG #ifdef OPENSSL_INIT_DEBUG
fprintf(stderr, "OPENSSL_INIT: ossl_init_thread_stop: " 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 #endif
ASYNC_cleanup_thread(); ASYNC_cleanup_thread();
} }
#endif
if (locals->err_state) { if (locals->err_state) {
#ifdef OPENSSL_INIT_DEBUG #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); CRYPTO_w_unlock(CRYPTO_LOCK_INIT);
} }
#ifndef OPENSSL_NO_ASYNC
if (opts & OPENSSL_INIT_ASYNC) { if (opts & OPENSSL_INIT_ASYNC) {
ossl_init_once_run(&async, ossl_init_async); ossl_init_once_run(&async, ossl_init_async);
} }
#endif
#ifndef OPENSSL_NO_ENGINE #ifndef OPENSSL_NO_ENGINE
if (opts & OPENSSL_INIT_ENGINE_OPENSSL) { if (opts & OPENSSL_INIT_ENGINE_OPENSSL) {
ossl_init_once_run(&engine_openssl, ossl_init_engine_openssl); ossl_init_once_run(&engine_openssl, ossl_init_engine_openssl);

View File

@ -53,6 +53,12 @@
#ifndef HEADER_ASYNC_H #ifndef HEADER_ASYNC_H
# define 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> #include <stdlib.h>
#if defined(_WIN32) #if defined(_WIN32)
@ -116,4 +122,5 @@ void ERR_load_ASYNC_strings(void);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif /* OPENSSL_NO_ASYNC */
#endif #endif