Add a CRYPTO_library_init and static-initializer-less build option.

Chromium does not like static initializers, and the CPU logic uses one to
initialize CPU bits. However, the crypto library lacks an explicit
initialization function, which could complicate (no compile-time errors)
porting existing code which uses crypto/, but not ssl/.

Add an explicit CRYPTO_library_init function, but make it a no-op by default.
It only does anything (and is required) if building with

Change-Id: I6933bdc3447fb382b1f87c788e5b8142d6f3fe39
Reviewed-by: Adam Langley <>
30 files changed