]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Make configure detect ARCHIVE_CRYPTO_*_WIN on mingw.
authorMichihiro NAKAJIMA <ggcueroad@gmail.com>
Thu, 4 Oct 2012 03:12:22 +0000 (12:12 +0900)
committerMichihiro NAKAJIMA <ggcueroad@gmail.com>
Thu, 4 Oct 2012 03:12:22 +0000 (12:12 +0900)
configure.ac

index ce356eef8d1ebdeedfeaebab849e2998571fdaa0..64e09a5af0b0fe65c351b8389e1f49ddf42168e1 100644 (file)
@@ -593,23 +593,61 @@ main(int argc, char **argv)
   fi
 ])
 
-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)
+AC_DEFUN([CRYPTO_CHECK_WIN], [
+  if test "$found_$1" != yes; then
+    AC_MSG_CHECKING([support for ARCHIVE_CRYPTO_$1_WIN])
+    AC_LINK_IFELSE([AC_LANG_SOURCE([
+#define _WIN32_WINNT 0x0500
+#define WINVER 0x0500
+#define ARCHIVE_$1_COMPILE_TEST
+#include <windows.h>
+#include <wincrypt.h>
+
+int
+main(int argc, char **argv)
+{
+       (void)argc;
+       (void)argv;
+
+       return ($2);
+}
+])],
+    [ AC_MSG_RESULT([yes])
+      found_$1=yes
+      AC_DEFINE(ARCHIVE_CRYPTO_$1_WIN, 1, [ $1 via ARCHIVE_CRYPTO_$1_WIN supported.])
+    ],
+    [ AC_MSG_RESULT([no])])
+  fi
+])
+
+case "$host_os" in
+  *mingw* )
+       CRYPTO_CHECK_WIN(MD5, CALG_MD5)
+       CRYPTO_CHECK_WIN(SHA1, CALG_SHA1)
+       CRYPTO_CHECK_WIN(SHA256, CALG_SHA_256)
+       CRYPTO_CHECK_WIN(SHA384, CALG_SHA_384)
+       CRYPTO_CHECK_WIN(SHA512, CALG_SHA_512)
+       ;;
+  *)
+       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
 
 if test "x$with_nettle" != "xno"; then
     CRYPTO_CHECK(MD5, NETTLE, md5, -lnettle)