]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
configure: On Darwin, get digests from libsystem 2973/head
authorDag-Erling Smørgrav <des@des.dev>
Mon, 20 Apr 2026 18:31:28 +0000 (20:31 +0200)
committerDag-Erling Smørgrav <des@des.dev>
Sat, 2 May 2026 10:49:02 +0000 (12:49 +0200)
Darwin covers a wide range of platforms with similar but not identical
sets of libraries.  MD5, SHA1 and SHA2 are available from libsystem on
all of these, but macOS also has them in libc and libmd.  Restricting
our search to only libsystem means we can run configure on macOS and get
a config.h that also works for other Darwin platforms.

CMakeLists.txt
configure.ac

index b5ae26e412c1bff8b9e52ed802bc121a147e7d41..2cd03f5de427c8025bf253b1842f681d167c92f4 100644 (file)
@@ -2107,16 +2107,19 @@ ENDIF(ENABLE_ACL)
 # Check MD5/RMD160/SHA support
 # NOTE: Crypto checks must be run last before generating config.h
 #
-CHECK_CRYPTO("MD5;RMD160;SHA1;SHA256;SHA384;SHA512" LIBC)
-CHECK_CRYPTO("SHA256;SHA384;SHA512" LIBC2)
-CHECK_CRYPTO("SHA256;SHA384;SHA512" LIBC3)
-CHECK_CRYPTO("MD5;SHA1;SHA256;SHA384;SHA512" LIBSYSTEM)
-CHECK_CRYPTO("MD5;RMD160;SHA1;SHA256;SHA384;SHA512" MBEDTLS)
-CHECK_CRYPTO("MD5;RMD160;SHA1;SHA256;SHA384;SHA512" NETTLE)
-CHECK_CRYPTO("MD5;RMD160;SHA1;SHA256;SHA384;SHA512" OPENSSL)
-
-# Libmd has to be probed after OpenSSL.
-CHECK_CRYPTO("MD5;RMD160;SHA1;SHA256;SHA512" LIBMD)
+IF(CMAKE_SYSTEM_NAME MATCHES "Darwin")
+  CHECK_CRYPTO("MD5;SHA1;SHA256;SHA384;SHA512" LIBSYSTEM)
+ELSE()
+  CHECK_CRYPTO("MD5;RMD160;SHA1;SHA256;SHA384;SHA512" LIBC)
+  CHECK_CRYPTO("SHA256;SHA384;SHA512" LIBC2)
+  CHECK_CRYPTO("SHA256;SHA384;SHA512" LIBC3)
+  CHECK_CRYPTO("MD5;RMD160;SHA1;SHA256;SHA384;SHA512" MBEDTLS)
+  CHECK_CRYPTO("MD5;RMD160;SHA1;SHA256;SHA384;SHA512" NETTLE)
+  CHECK_CRYPTO("MD5;RMD160;SHA1;SHA256;SHA384;SHA512" OPENSSL)
+
+  # Libmd has to be probed after OpenSSL.
+  CHECK_CRYPTO("MD5;RMD160;SHA1;SHA256;SHA512" LIBMD)
+ENDIF()
 
 # Check visibility annotations
 SET(OLD_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")
index 604132cb32ff790bc95c7bb2a4a546e6487fd4a4..64683896d6b0ff15d143614f8e5bf094da81fdcd 100644 (file)
@@ -1291,24 +1291,26 @@ main(int argc, char **argv)
 case "$host_os" in
   *mingw* | *cygwin* | *msys*)
        ;;
+  *darwin*)
+       CRYPTO_CHECK(MD5, LIBSYSTEM, md5)
+       CRYPTO_CHECK(SHA1, LIBSYSTEM, sha1)
+       CRYPTO_CHECK(SHA256, LIBSYSTEM, sha256)
+       CRYPTO_CHECK(SHA384, LIBSYSTEM, sha384)
+       CRYPTO_CHECK(SHA512, LIBSYSTEM, sha512)
+       ;;
   *)
        CRYPTO_CHECK(MD5, LIBC, md5)
-       CRYPTO_CHECK(MD5, LIBSYSTEM, md5)
        CRYPTO_CHECK(RMD160, LIBC, rmd160)
        CRYPTO_CHECK(SHA1, LIBC, sha1)
-       CRYPTO_CHECK(SHA1, LIBSYSTEM, sha1)
        CRYPTO_CHECK(SHA256, LIBC, sha256)
        CRYPTO_CHECK(SHA256, LIBC2, sha256)
        CRYPTO_CHECK(SHA256, LIBC3, sha256)
-       CRYPTO_CHECK(SHA256, LIBSYSTEM, sha256)
        CRYPTO_CHECK(SHA384, LIBC, sha384)
        CRYPTO_CHECK(SHA384, LIBC2, sha384)
        CRYPTO_CHECK(SHA384, LIBC3, sha384)
-       CRYPTO_CHECK(SHA384, LIBSYSTEM, sha384)
        CRYPTO_CHECK(SHA512, LIBC, sha512)
        CRYPTO_CHECK(SHA512, LIBC2, sha512)
        CRYPTO_CHECK(SHA512, LIBC3, sha512)
-       CRYPTO_CHECK(SHA512, LIBSYSTEM, sha512)
        ;;
 esac