liblzma: Fix a build failure related to external SHA-256 support.

If an appropriate header and structure were found by configure,
but a library with a usable SHA-256 functions wasn't, the build
failed.
This commit is contained in:
Lasse Collin 2015-11-02 18:16:51 +02:00
parent d9311647fc
commit 16d68f874d
1 changed files with 23 additions and 9 deletions

View File

@ -15,7 +15,19 @@
#include "common.h" #include "common.h"
#if defined(HAVE_COMMONCRYPTO_COMMONDIGEST_H) // If either the data type or the function for external SHA-256 is missing,
// use the internal SHA-256 code.
#if !(defined(HAVE_CC_SHA256_CTX) || defined(HAVE_SHA256_CTX) \
|| defined(HAVE_SHA2_CTX)) \
|| !(defined(HAVE_CC_SHA256_INIT) \
|| defined(HAVE_SHA256_INIT) \
|| defined(HAVE_SHA256INIT))
# define HAVE_INTERNAL_SHA256 1
#endif
#if defined(HAVE_INTERNAL_SHA256)
// Nothing
#elif defined(HAVE_COMMONCRYPTO_COMMONDIGEST_H)
# include <CommonCrypto/CommonDigest.h> # include <CommonCrypto/CommonDigest.h>
#elif defined(HAVE_SHA256_H) #elif defined(HAVE_SHA256_H)
# include <sys/types.h> # include <sys/types.h>
@ -28,13 +40,7 @@
# include <minix/sha2.h> # include <minix/sha2.h>
#endif #endif
#if defined(HAVE_CC_SHA256_CTX) #if defined(HAVE_INTERNAL_SHA256)
typedef CC_SHA256_CTX lzma_sha256_state;
#elif defined(HAVE_SHA256_CTX)
typedef SHA256_CTX lzma_sha256_state;
#elif defined(HAVE_SHA2_CTX)
typedef SHA2_CTX lzma_sha256_state;
#else
/// State for the internal SHA-256 implementation /// State for the internal SHA-256 implementation
typedef struct { typedef struct {
/// Internal state /// Internal state
@ -43,9 +49,17 @@ typedef struct {
/// Size of the message excluding padding /// Size of the message excluding padding
uint64_t size; uint64_t size;
} lzma_sha256_state; } lzma_sha256_state;
#elif defined(HAVE_CC_SHA256_CTX)
typedef CC_SHA256_CTX lzma_sha256_state;
#elif defined(HAVE_SHA256_CTX)
typedef SHA256_CTX lzma_sha256_state;
#elif defined(HAVE_SHA2_CTX)
typedef SHA2_CTX lzma_sha256_state;
#endif #endif
#if defined(HAVE_CC_SHA256_INIT) #if defined(HAVE_INTERNAL_SHA256)
// Nothing
#elif defined(HAVE_CC_SHA256_INIT)
# define LZMA_SHA256FUNC(x) CC_SHA256_ ## x # define LZMA_SHA256FUNC(x) CC_SHA256_ ## x
#elif defined(HAVE_SHA256_INIT) #elif defined(HAVE_SHA256_INIT)
# define LZMA_SHA256FUNC(x) SHA256_ ## x # define LZMA_SHA256FUNC(x) SHA256_ ## x