1 # Select a hash backend
5 # USE_SHA1=CollisionDetection(ON)/HTTPS/Generic/OFF
7 sanitizebool(USE_SHA256)
11 if(USE_SHA1 STREQUAL ON)
12 SET(USE_SHA1 "CollisionDetection")
13 elseif(USE_SHA1 STREQUAL "HTTPS")
14 if(USE_HTTPS STREQUAL "SecureTransport")
15 set(USE_SHA1 "CommonCrypto")
16 elseif(USE_HTTPS STREQUAL "WinHTTP")
19 set(USE_SHA1 ${USE_HTTPS})
21 set(USE_SHA1 "CollisionDetection")
25 if(USE_SHA1 STREQUAL "CollisionDetection")
26 set(GIT_SHA1_COLLISIONDETECT 1)
27 elseif(USE_SHA1 STREQUAL "OpenSSL")
28 set(GIT_SHA1_OPENSSL 1)
29 elseif(USE_SHA1 STREQUAL "OpenSSL-Dynamic")
30 set(GIT_SHA1_OPENSSL 1)
31 set(GIT_SHA1_OPENSSL_DYNAMIC 1)
32 list(APPEND LIBGIT2_SYSTEM_LIBS dl)
33 elseif(USE_SHA1 STREQUAL "CommonCrypto")
34 set(GIT_SHA1_COMMON_CRYPTO 1)
35 elseif(USE_SHA1 STREQUAL "mbedTLS")
36 set(GIT_SHA1_MBEDTLS 1)
37 elseif(USE_SHA1 STREQUAL "Win32")
40 message(FATAL_ERROR "Asked for unknown SHA1 backend: ${USE_SHA1}")
45 if(USE_SHA256 STREQUAL ON AND USE_HTTPS)
46 SET(USE_SHA256 "HTTPS")
47 elseif(USE_SHA256 STREQUAL ON)
48 SET(USE_SHA256 "Builtin")
51 if(USE_SHA256 STREQUAL "HTTPS")
52 if(USE_HTTPS STREQUAL "SecureTransport")
53 set(USE_SHA256 "CommonCrypto")
54 elseif(USE_HTTPS STREQUAL "WinHTTP")
55 set(USE_SHA256 "Win32")
57 set(USE_SHA256 ${USE_HTTPS})
61 if(USE_SHA256 STREQUAL "Builtin")
62 set(GIT_SHA256_BUILTIN 1)
63 elseif(USE_SHA256 STREQUAL "OpenSSL")
64 set(GIT_SHA256_OPENSSL 1)
65 elseif(USE_SHA256 STREQUAL "OpenSSL-Dynamic")
66 set(GIT_SHA256_OPENSSL 1)
67 set(GIT_SHA256_OPENSSL_DYNAMIC 1)
68 list(APPEND LIBGIT2_SYSTEM_LIBS dl)
69 elseif(USE_SHA256 STREQUAL "CommonCrypto")
70 set(GIT_SHA256_COMMON_CRYPTO 1)
71 elseif(USE_SHA256 STREQUAL "mbedTLS")
72 set(GIT_SHA256_MBEDTLS 1)
73 elseif(USE_SHA256 STREQUAL "Win32")
74 set(GIT_SHA256_WIN32 1)
76 message(FATAL_ERROR "Asked for unknown SHA256 backend: ${USE_SHA256}")
79 # add library requirements
80 if(USE_SHA1 STREQUAL "OpenSSL" OR USE_SHA256 STREQUAL "OpenSSL")
81 if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
82 list(APPEND LIBGIT2_PC_LIBS "-lssl")
84 list(APPEND LIBGIT2_PC_REQUIRES "openssl")
88 if(USE_SHA1 STREQUAL "mbedTLS" OR USE_SHA256 STREQUAL "mbedTLS")
89 list(APPEND LIBGIT2_SYSTEM_INCLUDES ${MBEDTLS_INCLUDE_DIR})
90 list(APPEND LIBGIT2_SYSTEM_LIBS ${MBEDTLS_LIBRARIES})
91 # mbedTLS has no pkgconfig file, hence we can't require it
92 # https://github.com/ARMmbed/mbedtls/issues/228
93 # For now, pass its link flags as our own
94 list(APPEND LIBGIT2_PC_LIBS ${MBEDTLS_LIBRARIES})
97 # notify feature enablement
99 add_feature_info(SHA1 ON "using ${USE_SHA1}")
100 add_feature_info(SHA256 ON "using ${USE_SHA256}")