hash.h: move SHA-1 implementation selection into a header file
Many developers use functionality in their editors that allows for quick syntax checks, including warning about questionable constructs. This functionality allows rapid development with fewer errors. However, such functionality generally does not allow the specification of project-specific defines or command-line options. Since the SHA1_HEADER include is not defined in such a case, developers see spurious errors when using these tools. Furthermore, there are known implementations of "cc" whose '#include' is unhappy with this construct. Instead of using SHA1_HEADER, create a hash.h header and use #if and #elif to select the desired header. Have the Makefile pass an appropriate option to help the header select the right implementation to use. [jc: make BLK_SHA1 the fallback default as discussed on list, e.g. <20170314201424.vccij5z2ortq4a4o@sigill.intra.peff.net>; also remove SHA1_HEADER and SHA1_HEADER_SQ that are no longer used]. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> Reviewed-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
e7e07d5a4f
commit
f18f816cb1
12
Makefile
12
Makefile
@ -1387,19 +1387,19 @@ ifdef APPLE_COMMON_CRYPTO
|
||||
endif
|
||||
|
||||
ifdef BLK_SHA1
|
||||
SHA1_HEADER = "block-sha1/sha1.h"
|
||||
LIB_OBJS += block-sha1/sha1.o
|
||||
BASIC_CFLAGS += -DSHA1_BLK
|
||||
else
|
||||
ifdef PPC_SHA1
|
||||
SHA1_HEADER = "ppc/sha1.h"
|
||||
LIB_OBJS += ppc/sha1.o ppc/sha1ppc.o
|
||||
BASIC_CFLAGS += -DSHA1_PPC
|
||||
else
|
||||
ifdef APPLE_COMMON_CRYPTO
|
||||
COMPAT_CFLAGS += -DCOMMON_DIGEST_FOR_OPENSSL
|
||||
SHA1_HEADER = <CommonCrypto/CommonDigest.h>
|
||||
BASIC_CFLAGS += -DSHA1_APPLE
|
||||
else
|
||||
SHA1_HEADER = <openssl/sha.h>
|
||||
EXTLIBS += $(LIB_4_CRYPTO)
|
||||
BASIC_CFLAGS += -DSHA1_OPENSSL
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
@ -1591,7 +1591,6 @@ endif
|
||||
|
||||
# Shell quote (do not use $(call) to accommodate ancient setups);
|
||||
|
||||
SHA1_HEADER_SQ = $(subst ','\'',$(SHA1_HEADER))
|
||||
ETC_GITCONFIG_SQ = $(subst ','\'',$(ETC_GITCONFIG))
|
||||
ETC_GITATTRIBUTES_SQ = $(subst ','\'',$(ETC_GITATTRIBUTES))
|
||||
|
||||
@ -1624,8 +1623,7 @@ PERLLIB_EXTRA_SQ = $(subst ','\'',$(PERLLIB_EXTRA))
|
||||
# from the dependency list, that would make each entry appear twice.
|
||||
LIBS = $(filter-out %.o, $(GITLIBS)) $(EXTLIBS)
|
||||
|
||||
BASIC_CFLAGS += -DSHA1_HEADER='$(SHA1_HEADER_SQ)' \
|
||||
$(COMPAT_CFLAGS)
|
||||
BASIC_CFLAGS += $(COMPAT_CFLAGS)
|
||||
LIB_OBJS += $(COMPAT_OBJS)
|
||||
|
||||
# Quote for C
|
||||
|
2
cache.h
2
cache.h
@ -10,8 +10,8 @@
|
||||
#include "trace.h"
|
||||
#include "string-list.h"
|
||||
#include "pack-revindex.h"
|
||||
#include "hash.h"
|
||||
|
||||
#include SHA1_HEADER
|
||||
#ifndef platform_SHA_CTX
|
||||
/*
|
||||
* platform's underlying implementation of SHA-1; could be OpenSSL,
|
||||
|
14
hash.h
Normal file
14
hash.h
Normal file
@ -0,0 +1,14 @@
|
||||
#ifndef HASH_H
|
||||
#define HASH_H
|
||||
|
||||
#if defined(SHA1_PPC)
|
||||
#include "ppc/sha1.h"
|
||||
#elif defined(SHA1_APPLE)
|
||||
#include <CommonCrypto/CommonDigest.h>
|
||||
#elif defined(SHA1_OPENSSL)
|
||||
#include <openssl/sha.h>
|
||||
#else /* SHA1_BLK */
|
||||
#include "block-sha1/sha1.h"
|
||||
#endif
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user