Commit 99d6ebb33375369f8a033938fab984f89832ba82

Etienne Samson 2017-09-06T22:01:50

cmake: make our macOS helpers more CMake-y

diff --git a/cmake/Modules/FindCoreFoundation.cmake b/cmake/Modules/FindCoreFoundation.cmake
index ef88694..e86ccbf 100644
--- a/cmake/Modules/FindCoreFoundation.cmake
+++ b/cmake/Modules/FindCoreFoundation.cmake
@@ -1,9 +1,26 @@
-IF (COREFOUNDATION_INCLUDE_DIR AND COREFOUNDATION_DIRS)
+# Find CoreFoundation.framework
+# This will define :
+#
+# COREFOUNDATION_FOUND
+# COREFOUNDATION_LIBRARIES
+# COREFOUNDATION_LDFLAGS
+#
+
+FIND_PATH(COREFOUNDATION_INCLUDE_DIR NAMES CoreFoundation.h)
+FIND_LIBRARY(COREFOUNDATION_LIBRARIES NAMES CoreFoundation)
+IF (COREFOUNDATION_INCLUDE_DIR AND COREFOUNDATION_LIBRARIES)
+	IF (NOT CoreFoundation_FIND_QUIETLY)
+		MESSAGE("-- Found CoreFoundation ${COREFOUNDATION_LIBRARIES}")
+	ENDIF()
 	SET(COREFOUNDATION_FOUND TRUE)
-ELSE ()
-	FIND_PATH(COREFOUNDATION_INCLUDE_DIR NAMES CoreFoundation.h)
-	FIND_LIBRARY(COREFOUNDATION_DIRS NAMES CoreFoundation)
-	IF (COREFOUNDATION_INCLUDE_DIR AND COREFOUNDATION_DIRS)
-		SET(COREFOUNDATION_FOUND TRUE)
-	ENDIF ()
+	SET(COREFOUNDATION_LDFLAGS "-framework CoreFoundation")
 ENDIF ()
+
+IF (CoreFoundation_FIND_REQUIRED AND NOT COREFOUNDATION_FOUND)
+	MESSAGE(FATAL "-- CoreFoundation not found")
+ENDIF()
+
+MARK_AS_ADVANCED(
+	COREFOUNDATION_INCLUDE_DIR
+	COREFOUNDATION_LIBRARIES
+)
diff --git a/cmake/Modules/FindSecurity.cmake b/cmake/Modules/FindSecurity.cmake
index d6950e5..487f7e5 100644
--- a/cmake/Modules/FindSecurity.cmake
+++ b/cmake/Modules/FindSecurity.cmake
@@ -1,9 +1,28 @@
-IF (SECURITY_INCLUDE_DIR AND SECURITY_DIRS)
+# Find Security.framework
+# This will define :
+#
+# SECURITY_FOUND
+# SECURITY_LIBRARIES
+# SECURITY_LDFLAGS
+# SECURITY_HAS_SSLCREATECONTEXT
+#
+
+FIND_PATH(SECURITY_INCLUDE_DIR NAMES Security/Security.h)
+FIND_LIBRARY(SECURITY_LIBRARIES NAMES Security)
+IF (SECURITY_INCLUDE_DIR AND SECURITY_LIBRARIES)
+	IF (NOT Security_FIND_QUIETLY)
+		MESSAGE("-- Found Security ${SECURITY_LIBRARIES}")
+	ENDIF()
 	SET(SECURITY_FOUND TRUE)
-ELSE ()
-	FIND_PATH(SECURITY_INCLUDE_DIR NAMES Security/Security.h)
-	FIND_LIBRARY(SECURITY_DIRS NAMES Security)
-	IF (SECURITY_INCLUDE_DIR AND SECURITY_DIRS)
-		SET(SECURITY_FOUND TRUE)
-	ENDIF ()
+	SET(SECURITY_LDFLAGS "-framework Security")
+	CHECK_LIBRARY_EXISTS("${SECURITY_LIBRARIES}" SSLCreateContext "Security/SecureTransport.h" SECURITY_HAS_SSLCREATECONTEXT)
 ENDIF ()
+
+IF (Security_FIND_REQUIRED AND NOT SECURITY_FOUND)
+	MESSAGE(FATAL "-- Security not found")
+ENDIF()
+
+MARK_AS_ADVANCED(
+	SECURITY_INCLUDE_DIR
+	SECURITY_LIBRARIES
+)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index bb50313..9ea2464 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -95,23 +95,17 @@ IF(THREADSAFE)
 ENDIF()
 
 IF (SECURITY_FOUND)
-  # OS X 10.7 and older do not have some functions we use, fall back to OpenSSL there
-  CHECK_LIBRARY_EXISTS("${SECURITY_DIRS}" SSLCreateContext "Security/SecureTransport.h" HAVE_NEWER_SECURITY)
-  IF (HAVE_NEWER_SECURITY)
-    MESSAGE("-- Found Security ${SECURITY_DIRS}")
-    LIST(APPEND LIBGIT2_PC_LIBS "-framework Security")
-    LIST(APPEND LIBGIT2_LIBS ${SECURITY_DIRS})
-  ELSE()
-    MESSAGE("-- Security framework is too old, falling back to OpenSSL")
-    SET(SECURITY_FOUND "NO")
-    SET(USE_OPENSSL "ON")
-  ENDIF()
+	IF (SECURITY_HAS_SSLCREATECONTEXT)
+		LIST(APPEND LIBGIT2_PC_LIBS ${SECURITY_LDFLAGS})
+	ELSE()
+		MESSAGE("-- Security framework is too old, falling back to OpenSSL")
+		SET(USE_OPENSSL "ON")
+	ENDIF()
 ENDIF()
 
 IF (COREFOUNDATION_FOUND)
-  MESSAGE("-- Found CoreFoundation ${COREFOUNDATION_DIRS}")
-  LIST(APPEND LIBGIT2_PC_LIBS "-framework CoreFoundation")
-  LIST(APPEND LIBGIT2_LIBS ${COREFOUNDATION_DIRS})
+	LIST(APPEND LIBGIT2_LIBS ${COREFOUNDATION_LIBRARIES})
+	LIST(APPEND LIBGIT2_PC_LIBS ${COREFOUNDATION_LDFLAGS})
 ENDIF()