]> git.proxmox.com Git - libgit2.git/blob - cmake/SelectHashes.cmake
New upstream version 1.5.0+ds
[libgit2.git] / cmake / SelectHashes.cmake
1 # Select a hash backend
2
3 include(SanitizeBool)
4
5 # USE_SHA1=CollisionDetection(ON)/HTTPS/Generic/OFF
6 sanitizebool(USE_SHA1)
7 sanitizebool(USE_SHA256)
8
9 # sha1
10
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")
17 set(USE_SHA1 "Win32")
18 elseif(USE_HTTPS)
19 set(USE_SHA1 ${USE_HTTPS})
20 else()
21 set(USE_SHA1 "CollisionDetection")
22 endif()
23 endif()
24
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")
38 set(GIT_SHA1_WIN32 1)
39 else()
40 message(FATAL_ERROR "Asked for unknown SHA1 backend: ${USE_SHA1}")
41 endif()
42
43 # sha256
44
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")
49 endif()
50
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")
56 elseif(USE_HTTPS)
57 set(USE_SHA256 ${USE_HTTPS})
58 endif()
59 endif()
60
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)
75 else()
76 message(FATAL_ERROR "Asked for unknown SHA256 backend: ${USE_SHA256}")
77 endif()
78
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")
83 else()
84 list(APPEND LIBGIT2_PC_REQUIRES "openssl")
85 endif()
86 endif()
87
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})
95 endif()
96
97 # notify feature enablement
98
99 add_feature_info(SHA1 ON "using ${USE_SHA1}")
100 add_feature_info(SHA256 ON "using ${USE_SHA256}")