From: Dag-Erling Smørgrav Date: Mon, 20 Apr 2026 18:31:28 +0000 (+0200) Subject: configure: On Darwin, get digests from libsystem X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7364e380bc67c106a8787350ec6ca196446fddef;p=thirdparty%2Flibarchive.git configure: On Darwin, get digests from libsystem 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. --- diff --git a/CMakeLists.txt b/CMakeLists.txt index b5ae26e41..2cd03f5de 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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}") diff --git a/configure.ac b/configure.ac index 604132cb3..64683896d 100644 --- a/configure.ac +++ b/configure.ac @@ -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