@@ -3,11 +3,6 @@ IF(DEBUG_POOL)
33ENDIF ()
44ADD_FEATURE_INFO(debugpool GIT_DEBUG_POOL "debug pool allocator" )
55
6- # Add the features.h file as a dummy. This is required for Xcode
7- # to successfully build the libgit2 library when using only
8- # object libraries.
9- SET (LIBGIT2_OBJECTS "${CMAKE_CURRENT_BINARY_DIR} /git2/sys/features.h" )
10-
116# This variable will contain the libraries we need to put into
127# libgit2.pc's Requires.private. That is, what we're linking to or
138# what someone who's statically linking us needs to link to.
@@ -127,10 +122,6 @@ ELSE ()
127122 PKG_CHECK_MODULES(CURL libcurl)
128123 ENDIF ()
129124
130- IF (NOT AMIGA AND (USE_HTTPS STREQUAL "OpenSSL" OR USE_HTTPS STREQUAL "ON" ))
131- FIND_PACKAGE (OpenSSL QUIET )
132- ENDIF ()
133-
134125 IF (CURL_FOUND)
135126 SET (GIT_CURL 1)
136127 LIST (APPEND LIBGIT2_INCLUDES ${CURL_INCLUDE_DIRS} )
@@ -183,6 +174,8 @@ IF (USE_HTTPS)
183174 LIST (APPEND LIBGIT2_LIBS ${COREFOUNDATION_LIBRARIES} ${SECURITY_LIBRARIES} )
184175 LIST (APPEND LIBGIT2_PC_LIBS ${COREFOUNDATION_LDFLAGS} ${SECURITY_LDFLAGS} )
185176 ELSEIF (HTTPS_BACKEND STREQUAL "OpenSSL" )
177+ FIND_PACKAGE (OpenSSL)
178+
186179 IF (NOT OPENSSL_FOUND)
187180 MESSAGE (FATAL_ERROR "Asked for OpenSSL TLS backend, but it wasn't found" )
188181 ENDIF ()
@@ -191,6 +184,7 @@ IF (USE_HTTPS)
191184 LIST (APPEND LIBGIT2_INCLUDES ${OPENSSL_INCLUDE_DIR} )
192185 LIST (APPEND LIBGIT2_LIBS ${OPENSSL_LIBRARIES} )
193186 LIST (APPEND LIBGIT2_PC_LIBS ${OPENSSL_LDFLAGS} )
187+ LIST (APPEND LIBGIT2_PC_REQUIRES "openssl" )
194188 ELSEIF (HTTPS_BACKEND STREQUAL "WinHTTP" )
195189 # WinHTTP setup was handled in the WinHTTP-specific block above
196190 ELSE ()
@@ -204,34 +198,42 @@ ELSE()
204198ENDIF ()
205199
206200# Specify sha1 implementation
207- IF (USE_SHA1DC)
208- ADD_FEATURE_INFO(SHA ON "using SHA1DC" )
201+ IF (SHA1_BACKEND STREQUAL "OpenSSL" )
202+ IF (NOT OPENSSL_FOUND)
203+ FIND_PACKAGE (OpenSSL)
204+ IF (NOT OPENSSL_FOUND)
205+ MESSAGE (FATAL_ERROR "Requested OpenSSL SHA1 backend, but OpenSSL could not be found" )
206+ ENDIF ()
207+ ENDIF ()
208+
209+ ADD_FEATURE_INFO(SHA ON "using OpenSSL" )
210+ SET (GIT_SHA1_OPENSSL 1)
211+ IF (CMAKE_SYSTEM_NAME MATCHES "FreeBSD" )
212+ LIST (APPEND LIBGIT2_PC_LIBS "-lssl" )
213+ ELSE ()
214+ LIST (APPEND LIBGIT2_PC_REQUIRES "openssl" )
215+ ENDIF ()
216+ ELSEIF (SHA1_BACKEND STREQUAL "CollisionDetection" )
217+ ADD_FEATURE_INFO(SHA ON "using CollisionDetection" )
209218 SET (GIT_SHA1_COLLISIONDETECT 1)
210219 ADD_DEFINITIONS (-DSHA1DC_NO_STANDARD_INCLUDES=1)
211220 ADD_DEFINITIONS (-DSHA1DC_CUSTOM_INCLUDE_SHA1_C=\"common.h\")
212221 ADD_DEFINITIONS (-DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C=\"common.h\")
213222 FILE (GLOB SRC_SHA1 hash/hash_collisiondetect.c hash/sha1dc/*)
214- ELSEIF (WIN32 AND NOT MINGW)
215- ADD_FEATURE_INFO(SHA ON "using SHA1_WIN32" )
223+ ELSEIF (SHA1_BACKEND STREQUAL "Generic" )
224+ ADD_FEATURE_INFO(SHA ON "using Generic" )
225+ FILE (GLOB SRC_SHA1 hash/hash_generic.c)
226+ ELSEIF (SHA1_BACKEND STREQUAL "Win32" )
227+ ADD_FEATURE_INFO(SHA ON "using Win32" )
216228 SET (GIT_SHA1_WIN32 1)
217229 FILE (GLOB SRC_SHA1 hash/hash_win32.c)
218- ELSEIF ( ${CMAKE_SYSTEM_NAME} MATCHES "Darwin " )
230+ ELSEIF (SHA1_BACKEND STREQUAL "CommonCrypto " )
219231 ADD_FEATURE_INFO(SHA ON "using CommonCrypto" )
220232 SET (GIT_SHA1_COMMON_CRYPTO 1)
221- ELSEIF (OPENSSL_FOUND)
222- ADD_FEATURE_INFO(SHA ON "using OpenSSL" )
223- SET (GIT_SHA1_OPENSSL 1)
224- IF (CMAKE_SYSTEM_NAME MATCHES "FreeBSD" )
225- LIST (APPEND LIBGIT2_PC_LIBS "-lssl" )
226- ELSE ()
227- SET (LIBGIT2_PC_REQUIRES "${LIBGIT2_PC_REQUIRES} openssl" )
228- ENDIF ()
229233ELSE ()
230- ADD_FEATURE_INFO(SHA ON "using generic" )
231- FILE (GLOB SRC_SHA1 hash/hash_generic.c)
234+ MESSAGE (FATAL_ERROR "Asked for unknown SHA1 backend ${SHA1_BACKEND} " )
232235ENDIF ()
233236
234-
235237# Include POSIX regex when it is required
236238IF (WIN32 OR AMIGA OR CMAKE_SYSTEM_NAME MATCHES "(Solaris|SunOS)" )
237239 ADD_SUBDIRECTORY ("${libgit2_SOURCE_DIR} /deps/regex" "${libgit2_BINARY_DIR} /deps/regex" )
@@ -264,7 +266,7 @@ IF(NOT USE_BUNDLED_ZLIB)
264266 LIST (APPEND LIBGIT2_LIBS "z" )
265267 LIST (APPEND LIBGIT2_PC_LIBS "-lz" )
266268 ELSE ()
267- SET (LIBGIT2_PC_REQUIRES " ${ LIBGIT2_PC_REQUIRES} zlib" )
269+ LIST ( APPEND LIBGIT2_PC_REQUIRES " zlib" )
268270 ENDIF ()
269271 ADD_FEATURE_INFO(zlib ON "using system zlib" )
270272 ELSE ()
@@ -404,6 +406,13 @@ SET(LIBGIT2_INCLUDES ${LIBGIT2_INCLUDES} PARENT_SCOPE)
404406SET (LIBGIT2_LIBS ${LIBGIT2_LIBS} PARENT_SCOPE)
405407SET (LIBGIT2_LIBDIRS ${LIBGIT2_LIBDIRS} PARENT_SCOPE)
406408
409+ IF (XCODE_VERSION )
410+ # This is required for Xcode to actually link the libgit2 library
411+ # when using only object libraries.
412+ FILE (WRITE ${CMAKE_CURRENT_BINARY_DIR} /dummy.c "" )
413+ LIST (APPEND LIBGIT2_OBJECTS ${CMAKE_CURRENT_BINARY_DIR} /dummy.c)
414+ ENDIF ()
415+
407416# Compile and link libgit2
408417LINK_DIRECTORIES (${LIBGIT2_LIBDIRS} )
409418ADD_LIBRARY (git2 ${WIN_RC} ${LIBGIT2_OBJECTS} )
@@ -431,6 +440,9 @@ IF (SONAME)
431440 SET_TARGET_PROPERTIES (git2 PROPERTIES PREFIX "${LIBGIT2_PREFIX} " )
432441 ENDIF ()
433442ENDIF ()
443+
444+ LIST (REMOVE_DUPLICATES LIBGIT2_PC_REQUIRES)
445+ STRING (REPLACE ";" " " LIBGIT2_PC_REQUIRES "${LIBGIT2_PC_REQUIRES} " )
434446STRING (REPLACE ";" " " LIBGIT2_PC_LIBS "${LIBGIT2_PC_LIBS} " )
435447CONFIGURE_FILE (${libgit2_SOURCE_DIR} /libgit2.pc.in ${libgit2_BINARY_DIR} /libgit2.pc @ONLY)
436448
0 commit comments