Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
git2
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
git2
Commits
e1299171
Unverified
Commit
e1299171
authored
Apr 02, 2020
by
Patrick Steinhardt
Committed by
GitHub
Apr 02, 2020
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #5440 from pks-t/pks/cmake-streamlining
CMake: backend selection streamlining
parents
b8eec0b2
541de515
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
66 additions
and
91 deletions
+66
-91
cmake/Modules/SelectGSSAPI.cmake
+18
-26
cmake/Modules/SelectHTTPSBackend.cmake
+25
-32
cmake/Modules/SelectHashes.cmake
+18
-28
deps/ntlmclient/CMakeLists.txt
+5
-5
No files found.
cmake/Modules/SelectGSSAPI.cmake
View file @
e1299171
# Select the backend to use
# We try to find any packages our backends might use
INCLUDE
(
SanitizeBool
)
# We try to find any packages our backends might use
FIND_PACKAGE
(
GSSAPI
)
IF
(
CMAKE_SYSTEM_NAME MATCHES
"Darwin"
)
INCLUDE
(
FindGSSFramework
)
ENDIF
()
# Auto-select GSS backend
SanitizeBool
(
USE_GSSAPI
)
IF
(
USE_GSSAPI STREQUAL ON
)
IF
(
GSSFRAMEWORK_FOUND
)
SET
(
GSS_BACKEND
"GSS.framework"
)
ELSEIF
(
GSSAPI_FOUND
)
SET
(
GSS_BACKEND
"gssapi"
)
ELSE
()
MESSAGE
(
FATAL_ERROR
"Unable to autodetect a usable GSS backend."
"Please pass the backend name explicitly (-DUSE_GSS=backend)"
)
IF
(
USE_GSSAPI
)
# Auto-select GSS backend
SanitizeBool
(
USE_GSSAPI
)
IF
(
USE_GSSAPI STREQUAL ON
)
IF
(
GSSFRAMEWORK_FOUND
)
SET
(
USE_GSSAPI
"GSS.framework"
)
ELSEIF
(
GSSAPI_FOUND
)
SET
(
USE_GSSAPI
"gssapi"
)
ELSE
()
MESSAGE
(
FATAL_ERROR
"Unable to autodetect a usable GSS backend."
"Please pass the backend name explicitly (-DUSE_GSS=backend)"
)
ENDIF
()
ENDIF
()
ELSEIF
(
USE_GSSAPI
)
# Backend was explicitly set
SET
(
GSS_BACKEND
${
USE_GSSAPI
}
)
ELSE
()
SET
(
GSS_BACKEND NO
)
ENDIF
()
IF
(
GSS_BACKEND
)
# Check that we can find what's required for the selected backend
IF
(
GSS_BACKEND
STREQUAL
"GSS.framework"
)
IF
(
USE_GSSAPI
STREQUAL
"GSS.framework"
)
IF
(
NOT GSSFRAMEWORK_FOUND
)
MESSAGE
(
FATAL_ERROR
"Asked for GSS.framework backend, but it wasn't found"
)
ENDIF
()
...
...
@@ -37,8 +29,8 @@ IF(GSS_BACKEND)
LIST
(
APPEND LIBGIT2_LIBS
${
GSSFRAMEWORK_LIBRARIES
}
)
SET
(
GIT_GSSFRAMEWORK 1
)
ADD_FEATURE_INFO
(
SPNEGO GIT_GSSFRAMEWORK
"SPNEGO authentication support (
${
GSS_BACKEND
}
)"
)
ELSEIF
(
GSS_BACKEND
STREQUAL
"gssapi"
)
ADD_FEATURE_INFO
(
SPNEGO GIT_GSSFRAMEWORK
"SPNEGO authentication support (
${
USE_GSSAPI
}
)"
)
ELSEIF
(
USE_GSSAPI
STREQUAL
"gssapi"
)
IF
(
NOT GSSAPI_FOUND
)
MESSAGE
(
FATAL_ERROR
"Asked for gssapi GSS backend, but it wasn't found"
)
ENDIF
()
...
...
@@ -46,9 +38,9 @@ IF(GSS_BACKEND)
LIST
(
APPEND LIBGIT2_LIBS
${
GSSAPI_LIBRARIES
}
)
SET
(
GIT_GSSAPI 1
)
ADD_FEATURE_INFO
(
SPNEGO GIT_GSSAPI
"SPNEGO authentication support (
${
GSS_BACKEND
}
)"
)
ADD_FEATURE_INFO
(
SPNEGO GIT_GSSAPI
"SPNEGO authentication support (
${
USE_GSSAPI
}
)"
)
ELSE
()
MESSAGE
(
FATAL_ERROR
"Asked for backend
${
GSS_BACKEND
}
but it wasn't found"
)
MESSAGE
(
FATAL_ERROR
"Asked for backend
${
USE_GSSAPI
}
but it wasn't found"
)
ENDIF
()
ELSE
()
SET
(
GIT_GSSAPI 0
)
...
...
cmake/Modules/SelectHTTPSBackend.cmake
View file @
e1299171
# Select the backend to use
INCLUDE
(
SanitizeBool
)
# We try to find any packages our backends might use
...
...
@@ -10,36 +8,31 @@ IF (CMAKE_SYSTEM_NAME MATCHES "Darwin")
FIND_PACKAGE
(
CoreFoundation
)
ENDIF
()
# Auto-select TLS backend
SanitizeBool
(
USE_HTTPS
)
IF
(
USE_HTTPS STREQUAL ON
)
IF
(
SECURITY_FOUND
)
IF
(
SECURITY_HAS_SSLCREATECONTEXT
)
SET
(
HTTPS_BACKEND
"SecureTransport"
)
IF
(
USE_HTTPS
)
# Auto-select TLS backend
SanitizeBool
(
USE_HTTPS
)
IF
(
USE_HTTPS STREQUAL ON
)
IF
(
SECURITY_FOUND
)
IF
(
SECURITY_HAS_SSLCREATECONTEXT
)
SET
(
USE_HTTPS
"SecureTransport"
)
ELSE
()
MESSAGE
(
STATUS
"Security framework is too old, falling back to OpenSSL"
)
SET
(
USE_HTTPS
"OpenSSL"
)
ENDIF
()
ELSEIF
(
WINHTTP
)
SET
(
USE_HTTPS
"WinHTTP"
)
ELSEIF
(
OPENSSL_FOUND
)
SET
(
USE_HTTPS
"OpenSSL"
)
ELSEIF
(
MBEDTLS_FOUND
)
SET
(
USE_HTTPS
"mbedTLS"
)
ELSE
()
MESSAGE
(
STATUS
"Security framework is too old, falling back to OpenSSL"
)
SET
(
HTTPS_BACKEND
"OpenSSL
"
)
MESSAGE
(
FATAL_ERROR
"Unable to autodetect a usable HTTPS backend."
"Please pass the backend name explicitly (-DUSE_HTTPS=backend)
"
)
ENDIF
()
ELSEIF
(
WINHTTP
)
SET
(
HTTPS_BACKEND
"WinHTTP"
)
ELSEIF
(
OPENSSL_FOUND
)
SET
(
HTTPS_BACKEND
"OpenSSL"
)
ELSEIF
(
MBEDTLS_FOUND
)
SET
(
HTTPS_BACKEND
"mbedTLS"
)
ELSE
()
MESSAGE
(
FATAL_ERROR
"Unable to autodetect a usable HTTPS backend."
"Please pass the backend name explicitly (-DUSE_HTTPS=backend)"
)
ENDIF
()
ELSEIF
(
USE_HTTPS
)
# HTTPS backend was explicitly set
SET
(
HTTPS_BACKEND
${
USE_HTTPS
}
)
ELSE
()
SET
(
HTTPS_BACKEND NO
)
ENDIF
()
IF
(
HTTPS_BACKEND
)
# Check that we can find what's required for the selected backend
IF
(
HTTPS_BACKEND
STREQUAL
"SecureTransport"
)
IF
(
USE_HTTPS
STREQUAL
"SecureTransport"
)
IF
(
NOT COREFOUNDATION_FOUND
)
MESSAGE
(
FATAL_ERROR
"Cannot use SecureTransport backend, CoreFoundation.framework not found"
)
ENDIF
()
...
...
@@ -54,7 +47,7 @@ IF(HTTPS_BACKEND)
LIST
(
APPEND LIBGIT2_SYSTEM_INCLUDES
${
SECURITY_INCLUDE_DIR
}
)
LIST
(
APPEND LIBGIT2_LIBS
${
COREFOUNDATION_LDFLAGS
}
${
SECURITY_LDFLAGS
}
)
LIST
(
APPEND LIBGIT2_PC_LIBS
${
COREFOUNDATION_LDFLAGS
}
${
SECURITY_LDFLAGS
}
)
ELSEIF
(
HTTPS_BACKEND
STREQUAL
"OpenSSL"
)
ELSEIF
(
USE_HTTPS
STREQUAL
"OpenSSL"
)
IF
(
NOT OPENSSL_FOUND
)
MESSAGE
(
FATAL_ERROR
"Asked for OpenSSL TLS backend, but it wasn't found"
)
ENDIF
()
...
...
@@ -64,7 +57,7 @@ IF(HTTPS_BACKEND)
LIST
(
APPEND LIBGIT2_LIBS
${
OPENSSL_LIBRARIES
}
)
LIST
(
APPEND LIBGIT2_PC_LIBS
${
OPENSSL_LDFLAGS
}
)
LIST
(
APPEND LIBGIT2_PC_REQUIRES
"openssl"
)
ELSEIF
(
HTTPS_BACKEND
STREQUAL
"mbedTLS"
)
ELSEIF
(
USE_HTTPS
STREQUAL
"mbedTLS"
)
IF
(
NOT MBEDTLS_FOUND
)
MESSAGE
(
FATAL_ERROR
"Asked for mbedTLS backend, but it wasn't found"
)
ENDIF
()
...
...
@@ -113,14 +106,14 @@ IF(HTTPS_BACKEND)
# https://github.com/ARMmbed/mbedtls/issues/228
# For now, pass its link flags as our own
LIST
(
APPEND LIBGIT2_PC_LIBS
${
MBEDTLS_LIBRARIES
}
)
ELSEIF
(
HTTPS_BACKEND
STREQUAL
"WinHTTP"
)
ELSEIF
(
USE_HTTPS
STREQUAL
"WinHTTP"
)
# WinHTTP setup was handled in the WinHTTP-specific block above
ELSE
()
MESSAGE
(
FATAL_ERROR
"Asked for backend
${
HTTPS_BACKEND
}
but it wasn't found"
)
MESSAGE
(
FATAL_ERROR
"Asked for backend
${
USE_HTTPS
}
but it wasn't found"
)
ENDIF
()
SET
(
GIT_HTTPS 1
)
ADD_FEATURE_INFO
(
HTTPS GIT_HTTPS
"using
${
HTTPS_BACKEND
}
"
)
ADD_FEATURE_INFO
(
HTTPS GIT_HTTPS
"using
${
USE_HTTPS
}
"
)
ELSE
()
SET
(
GIT_HTTPS 0
)
ADD_FEATURE_INFO
(
HTTPS NO
""
)
...
...
cmake/Modules/SelectHashes.cmake
View file @
e1299171
...
...
@@ -5,37 +5,28 @@ INCLUDE(SanitizeBool)
# USE_SHA1=CollisionDetection(ON)/HTTPS/Generic/OFF
SanitizeBool
(
USE_SHA1
)
IF
(
USE_SHA1 STREQUAL ON
OR USE_SHA1 STREQUAL
"CollisionDetection"
)
SET
(
SHA1_BACKEND
"CollisionDetection"
)
IF
(
USE_SHA1 STREQUAL ON
)
SET
(
USE_SHA1
"CollisionDetection"
)
ELSEIF
(
USE_SHA1 STREQUAL
"HTTPS"
)
message
(
STATUS
"Checking HTTPS backend…
${
HTTPS_BACKEND
}
"
)
IF
(
HTTPS_BACKEND STREQUAL
"SecureTransport"
)
SET
(
SHA1_BACKEND
"CommonCrypto"
)
ELSEIF
(
HTTPS_BACKEND STREQUAL
"WinHTTP"
)
SET
(
SHA1_BACKEND
"Win32"
)
ELSEIF
(
HTTPS_BACKEND
)
SET
(
SHA1_BACKEND
${
HTTPS_BACKEND
}
)
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
}
)
ELSE
()
SET
(
USE_SHA1
"CollisionDetection"
)
ENDIF
()
IF
(
NOT HTTPS_BACKEND
)
SET
(
SHA1_BACKEND
"CollisionDetection"
)
ENDIF
()
message
(
STATUS
"Using SHA1 backend
${
SHA1_BACKEND
}
"
)
ELSEIF
(
USE_SHA1 STREQUAL
"Generic"
)
SET
(
SHA1_BACKEND
"Generic"
)
# ELSEIF(NOT USE_SHA1)
ELSE
()
MESSAGE
(
FATAL_ERROR
"Invalid value for USE_SHA1:
${
USE_SHA1
}
"
)
ENDIF
()
IF
(
SHA1_BACKEND
STREQUAL
"CollisionDetection"
)
IF
(
USE_SHA1
STREQUAL
"CollisionDetection"
)
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
\"
)
FILE(GLOB SRC_SHA1 hash/sha1/collisiondetect.* hash/sha1/sha1dc/*)
ELSEIF(
SHA1_BACKEND
STREQUAL "
OpenSSL
")
# OPENSSL_FOUND should already be set, we're checking
HTTPS_BACKEND
ELSEIF(
USE_SHA1
STREQUAL "
OpenSSL
")
# OPENSSL_FOUND should already be set, we're checking
USE_HTTPS
SET(GIT_SHA1_OPENSSL 1)
IF(CMAKE_SYSTEM_NAME MATCHES "
FreeBSD
")
...
...
@@ -44,10 +35,10 @@ ELSEIF(SHA1_BACKEND STREQUAL "OpenSSL")
LIST(APPEND LIBGIT2_PC_REQUIRES "
openssl
")
ENDIF()
FILE(GLOB SRC_SHA1 hash/sha1/openssl.*)
ELSEIF(
SHA1_BACKEND
STREQUAL "
CommonCrypto
")
ELSEIF(
USE_SHA1
STREQUAL "
CommonCrypto
")
SET(GIT_SHA1_COMMON_CRYPTO 1)
FILE(GLOB SRC_SHA1 hash/sha1/common_crypto.*)
ELSEIF(
SHA1_BACKEND
STREQUAL "
mbedTLS
")
ELSEIF(
USE_SHA1
STREQUAL "
mbedTLS
")
SET(GIT_SHA1_MBEDTLS 1)
FILE(GLOB SRC_SHA1 hash/sha1/mbedtls.*)
LIST(APPEND LIBGIT2_SYSTEM_INCLUDES
${
MBEDTLS_INCLUDE_DIR
}
)
...
...
@@ -56,14 +47,13 @@ ELSEIF(SHA1_BACKEND STREQUAL "mbedTLS")
# https://github.com/ARMmbed/mbedtls/issues/228
# For now, pass its link flags as our own
LIST(APPEND LIBGIT2_PC_LIBS
${
MBEDTLS_LIBRARIES
}
)
ELSEIF(
SHA1_BACKEND
STREQUAL "
Win32
")
ELSEIF(
USE_SHA1
STREQUAL "
Win32
")
SET(GIT_SHA1_WIN32 1)
FILE(GLOB SRC_SHA1 hash/sha1/win32.*)
ELSEIF(
SHA1_BACKEND
STREQUAL "
Generic
")
ELSEIF(
USE_SHA1
STREQUAL "
Generic
")
FILE(GLOB SRC_SHA1 hash/sha1/generic.*)
# ELSEIF(NOT USE_SHA1)
ELSE()
MESSAGE(FATAL_ERROR "
Asked for unknown SHA1 backend:
${
SHA1_BACKEND
}
")
MESSAGE(FATAL_ERROR "
Asked for unknown SHA1 backend:
${
USE_SHA1
}
")
ENDIF()
ADD_FEATURE_INFO(SHA ON "
using
${
SHA1_BACKEND
}
")
ADD_FEATURE_INFO(SHA ON "
using
${
USE_SHA1
}
")
deps/ntlmclient/CMakeLists.txt
View file @
e1299171
...
...
@@ -4,20 +4,20 @@ ADD_DEFINITIONS(-DNTLM_STATIC=1)
DISABLE_WARNINGS
(
implicit-fallthrough
)
IF
(
HTTPS_BACKEND
STREQUAL
"SecureTransport"
)
IF
(
USE_HTTPS
STREQUAL
"SecureTransport"
)
ADD_DEFINITIONS
(
-DCRYPT_COMMONCRYPTO
)
SET
(
SRC_NTLMCLIENT_CRYPTO
"crypt_commoncrypto.c"
)
# CC_MD4 has been deprecated in macOS 10.15.
SET_SOURCE_FILES_PROPERTIES
(
"crypt_commoncrypto.c"
COMPILE_FLAGS
"-Wno-deprecated"
)
ELSEIF
(
HTTPS_BACKEND
STREQUAL
"OpenSSL"
)
ELSEIF
(
USE_HTTPS
STREQUAL
"OpenSSL"
)
ADD_DEFINITIONS
(
-DCRYPT_OPENSSL
)
INCLUDE_DIRECTORIES
(
${
OPENSSL_INCLUDE_DIR
}
)
SET
(
SRC_NTLMCLIENT_CRYPTO
"crypt_openssl.c"
)
ELSEIF
(
HTTPS_BACKEND
STREQUAL
"mbedTLS"
)
ELSEIF
(
USE_HTTPS
STREQUAL
"mbedTLS"
)
ADD_DEFINITIONS
(
-DCRYPT_MBEDTLS
)
SET
(
SRC_NTLMCLIENT_CRYPTO
"crypt_mbedtls.c"
)
ELSE
()
MESSAGE
(
FATAL_ERROR
"Unable to use libgit2's HTTPS backend (
${
HTTPS_BACKEND
}
) for NTLM crypto"
)
ELSE
()
MESSAGE
(
FATAL_ERROR
"Unable to use libgit2's HTTPS backend (
${
USE_HTTPS
}
) for NTLM crypto"
)
ENDIF
()
ADD_LIBRARY
(
ntlmclient OBJECT
${
SRC_NTLMCLIENT
}
${
SRC_NTLMCLIENT_CRYPTO
}
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment