Re: [PATCH v6 1/2] cache.h: eliminate SHA-1 deprecation warnings on Mac OS X
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:57:16
David Aguilar [off-list ref] writes:
Mac OS X 10.8 Mountain Lion prints warnings when building git: warning: 'SHA1_Init' is deprecated (declared at /usr/include/openssl/sha.h:121) Silence the warnings by using the CommonCrytpo SHA-1 functions for SHA1_Init(), SHA1_Update(), and SHA1_Final(). Add a NO_COMMON_DIGEST_FOR_OPENSSL option to the Makefile to allow users to opt out of using this library. When defined, Git will use OpenSSL instead. COMMON_DIGEST_FOR_OPENSSL is defined to enable the OpenSSL compatibility macros in CommonDigest.h.
This symbol will also cover not just SHA but also HMAC, would it make more sense to call it COMMON_CRYPTO_FOR_OPENSSL? After all, that is what Apple calls this library, no?
quoted hunk
Helped-by: Eric Sunshine [off-list ref] Helped-by: Torsten Bögershausen [off-list ref] Signed-off-by: David Aguilar <redacted> --- Changes since last time: Name the Makefile variable after the #define for consistency. Makefile | 13 +++++++++++++ 1 file changed, 13 insertions(+)diff --git a/Makefile b/Makefile index f698c1a..b0eb949 100644 --- a/Makefile +++ b/Makefile@@ -137,6 +137,10 @@ all:: # specify your own (or DarwinPort's) include directories and # library directories by defining CFLAGS and LDFLAGS appropriately. # +# Define NO_COMMON_DIGEST_FOR_OPENSSL if you are building on Darwin/Mac OS X +# and do not want to use Apple's CommonCrypto library. This allows you to +# provide your own OpenSSL library, for example from MacPorts. +# # Define BLK_SHA1 environment variable to make use of the bundled # optimized C SHA1 routine. #@@ -1054,6 +1058,9 @@ ifeq ($(uname_S),Darwin) BASIC_LDFLAGS += -L/opt/local/lib endif endif + ifndef NO_COMMON_DIGEST_FOR_OPENSSL + COMMON_DIGEST_FOR_OPENSSL = YesPlease + endif NO_REGEX = YesPlease PTHREAD_LIBS = endif@@ -1389,10 +1396,16 @@ ifdef PPC_SHA1 LIB_OBJS += ppc/sha1.o ppc/sha1ppc.o LIB_H += ppc/sha1.h else +ifdef COMMON_DIGEST_FOR_OPENSSL + BASIC_CFLAGS += -DCOMMON_DIGEST_FOR_OPENSSL + SHA1_HEADER = <CommonCrypto/CommonDigest.h> +else SHA1_HEADER = <openssl/sha.h> EXTLIBS += $(LIB_4_CRYPTO) endif endif +endif + ifdef NO_PERL_MAKEMAKER export NO_PERL_MAKEMAKER endif