SelectHashes.cmake 1.91 KB
Newer Older
1 2
# Select a hash backend

3 4
INCLUDE(SanitizeBool)

5 6
# USE_SHA1=CollisionDetection(ON)/HTTPS/Generic/OFF

7
SanitizeBool(USE_SHA1)
8 9
IF(USE_SHA1 STREQUAL ON)
	SET(USE_SHA1 "CollisionDetection")
10
ELSEIF(USE_SHA1 STREQUAL "HTTPS")
11 12 13 14 15 16
	IF(USE_HTTPS STREQUAL "SecureTransport")
		SET(USE_SHA1 "CommonCrypto")
	ELSEIF(USE_HTTPS STREQUAL "WinHTTP")
		SET(USE_SHA1 "Win32")
	ELSEIF(USE_HTTPS)
		SET(USE_SHA1 ${USE_HTTPS})
17
	ELSE()
18
		SET(USE_SHA1 "CollisionDetection")
19 20 21
	ENDIF()
ENDIF()

22
IF(USE_SHA1 STREQUAL "CollisionDetection")
23 24 25 26
	SET(GIT_SHA1_COLLISIONDETECT 1)
	ADD_DEFINITIONS(-DSHA1DC_NO_STANDARD_INCLUDES=1)
	ADD_DEFINITIONS(-DSHA1DC_CUSTOM_INCLUDE_SHA1_C=\"common.h\")
	ADD_DEFINITIONS(-DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C=\"common.h\")
27
	FILE(GLOB SRC_SHA1 hash/sha1/collisiondetect.* hash/sha1/sha1dc/*)
28 29
ELSEIF(USE_SHA1 STREQUAL "OpenSSL")
	# OPENSSL_FOUND should already be set, we're checking USE_HTTPS
30 31 32 33 34 35 36

	SET(GIT_SHA1_OPENSSL 1)
	IF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
		LIST(APPEND LIBGIT2_PC_LIBS "-lssl")
	ELSE()
		LIST(APPEND LIBGIT2_PC_REQUIRES "openssl")
	ENDIF()
37
	FILE(GLOB SRC_SHA1 hash/sha1/openssl.*)
38
ELSEIF(USE_SHA1 STREQUAL "CommonCrypto")
39
	SET(GIT_SHA1_COMMON_CRYPTO 1)
40
	FILE(GLOB SRC_SHA1 hash/sha1/common_crypto.*)
41
ELSEIF(USE_SHA1 STREQUAL "mbedTLS")
42
	SET(GIT_SHA1_MBEDTLS 1)
43
	FILE(GLOB SRC_SHA1 hash/sha1/mbedtls.*)
44 45 46 47 48 49
	LIST(APPEND LIBGIT2_SYSTEM_INCLUDES ${MBEDTLS_INCLUDE_DIR})
	LIST(APPEND LIBGIT2_LIBS ${MBEDTLS_LIBRARIES})
	# mbedTLS has no pkgconfig file, hence we can't require it
	# https://github.com/ARMmbed/mbedtls/issues/228
	# For now, pass its link flags as our own
	LIST(APPEND LIBGIT2_PC_LIBS ${MBEDTLS_LIBRARIES})
50
ELSEIF(USE_SHA1 STREQUAL "Win32")
51
	SET(GIT_SHA1_WIN32 1)
52
	FILE(GLOB SRC_SHA1 hash/sha1/win32.*)
53
ELSEIF(USE_SHA1 STREQUAL "Generic")
54
	FILE(GLOB SRC_SHA1 hash/sha1/generic.*)
55
ELSE()
56
	MESSAGE(FATAL_ERROR "Asked for unknown SHA1 backend: ${USE_SHA1}")
57 58
ENDIF()

59 60
list(SORT SRC_SHA1)

61
ADD_FEATURE_INFO(SHA ON "using ${USE_SHA1}")