]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
archive_read_support_format_rar5: enable blake2 support via libb2
authorMartin Matuska <martin@matuska.org>
Sat, 6 Oct 2018 19:43:30 +0000 (21:43 +0200)
committerMartin Matuska <martin@matuska.org>
Sat, 6 Oct 2018 20:05:07 +0000 (22:05 +0200)
CMakeLists.txt
Makefile.am
configure.ac
libarchive/CMakeLists.txt
libarchive/archive_read_support_format_rar5.c

index 3141dff772f629cbf81f8b8472f7cd015d9ba843..a5641ade2411be54363acb507696984038066ea4 100644 (file)
@@ -179,6 +179,7 @@ include(CTest)
 
 OPTION(ENABLE_NETTLE "Enable use of Nettle" ON)
 OPTION(ENABLE_OPENSSL "Enable use of OpenSSL" ON)
+OPTION(ENABLE_LIBB2 "Enable the use of the system LIBB2 library if found" ON)
 OPTION(ENABLE_LZ4 "Enable the use of the system LZ4 library if found" ON)
 OPTION(ENABLE_LZO "Enable the use of the system LZO library if found" OFF)
 OPTION(ENABLE_LZMA "Enable the use of the system LZMA library if found" ON)
@@ -508,6 +509,33 @@ ENDIF(LZO2_FOUND)
 MARK_AS_ADVANCED(CLEAR LZO2_INCLUDE_DIR)
 MARK_AS_ADVANCED(CLEAR LZO2_LIBRARY)
 #
+# Find libb2
+#
+IF(ENABLE_LIBB2)
+  IF (LIBB2_INCLUDE_DIR)
+    # Already in cache, be silent
+    SET(LIBB2_FIND_QUIETLY TRUE)
+  ENDIF (LIBB2_INCLUDE_DIR)
+
+  FIND_PATH(LIBB2_INCLUDE_DIR blake2.h)
+  FIND_LIBRARY(LIBB2_LIBRARY NAMES b2 libb2)
+  INCLUDE(FindPackageHandleStandardArgs)
+  FIND_PACKAGE_HANDLE_STANDARD_ARGS(LIBB2 DEFAULT_MSG LIBB2_LIBRARY LIBB2_INCLUDE_DIR)
+ELSE(ENABLE_LIBB2)
+  SET(LIBB2_FOUND FALSE) # Override cached value
+ENDIF(ENABLE_LIBB2)
+IF(LIBB2_FOUND)
+  SET(HAVE_LIBB2 1)
+  SET(HAVE_BLAKE2_H 1)
+  SET(ARCHIVE_BLAKE2 FALSE)
+  LIST(APPEND ADDITIONAL_LIBS ${LIBB2_LIBRARY})
+  SET(CMAKE_REQUIRED_LIBRARIES ${LIBB2_LIBRARY})
+  SET(CMAKE_REQUIRED_INCLUDES ${LIBB2_INCLUDE_DIR})
+  CHECK_FUNCTION_EXISTS(blake2sp_init HAVE_LIBB2)
+ELSE(LIBB2_FOUND)
+  SET(ARCHIVE_BLAKE2 TRUE)
+ENDIF(LIBB2_FOUND)
+#
 # Find LZ4
 #
 IF(ENABLE_LZ4)
index 146e16e384cdc99108f82086b55302a4b7d24b24..80a4e17d1b719694b706b61abc283634d71c6cd0 100644 (file)
@@ -94,8 +94,6 @@ include_HEADERS= libarchive/archive.h libarchive/archive_entry.h
 libarchive_la_SOURCES= \
        libarchive/archive_acl.c \
        libarchive/archive_acl_private.h \
-       libarchive/archive_blake2s_ref.c \
-       libarchive/archive_blake2sp_ref.c \
        libarchive/archive_check_magic.c \
        libarchive/archive_cmdline.c \
        libarchive/archive_cmdline_private.h \
@@ -254,6 +252,12 @@ libarchive_la_SOURCES+= \
        libarchive/filter_fork_windows.c
 endif
 
+if INC_BLAKE2
+libarchive_la_SOURCES+= \
+       libarchive/archive_blake2s_ref.c \
+       libarchive/archive_blake2sp_ref.c
+endif
+
 if INC_LINUX_ACL
 libarchive_la_SOURCES+= libarchive/archive_disk_acl_linux.c
 else
index 17d6641888bf2cfa70554db6cc137a8506611dfa..64f77a6736820b5607eac00493398cfa69e51a13 100644 (file)
@@ -340,6 +340,16 @@ if test "x$with_bz2lib" != "xno"; then
   esac
 fi
 
+AC_ARG_WITH([libb2],
+  AS_HELP_STRING([--without-libb2], [Don't build support for BLAKE2 through libb2]))
+
+if test "x$with_libb2" != "xno"; then
+  AC_CHECK_HEADERS([blake2.h])
+  AC_CHECK_LIB(b2,blake2sp_init)
+fi
+
+AM_CONDITIONAL([INC_BLAKE2], [test "x$ac_cv_lib_b2_blake2sp_init" != "xyes"])
+
 AC_ARG_WITH([iconv],
   AS_HELP_STRING([--without-iconv], [Don't try to link against iconv]))
 
index 972403b45cd5a84b9004495627c15599d61d17c9..79719773cd50d581b0976f14110dbcde748a9226 100644 (file)
@@ -53,8 +53,6 @@ SET(libarchive_SOURCES
   archive_ppmd_private.h
   archive_ppmd7.c
   archive_ppmd7_private.h
-  archive_blake2sp_ref.c
-  archive_blake2s_ref.c
   archive_private.h
   archive_random.c
   archive_random_private.h
@@ -218,6 +216,11 @@ IF(WIN32 AND NOT CYGWIN)
   LIST(APPEND libarchive_SOURCES filter_fork_windows.c)
 ENDIF(WIN32 AND NOT CYGWIN)
 
+IF(ARCHIVE_BLAKE2)
+  LIST(APPEND libarchive_SOURCES archive_blake2sp_ref.c)
+  LIST(APPEND libarchive_SOURCES archive_blake2s_ref.c)
+ENDIF(ARCHIVE_BLAKE2)
+
 IF(ARCHIVE_ACL_DARWIN)
   LIST(APPEND libarchive_SOURCES archive_disk_acl_darwin.c)
 ELSEIF(ARCHIVE_ACL_FREEBSD)
index d891ff94c9a99819dbaa497749c81ac63eee0424..9f121a1bed84d6201f6b7ec2d5ea679e8dd17ff3 100644 (file)
 #include "archive_entry_locale.h"
 #include "archive_ppmd7_private.h"
 #include "archive_entry_private.h"
+
+#ifdef HAVE_BLAKE2_H
+#include <blake2.h>
+#else
 #include "archive_blake2.h"
+#endif
 
 /*#define CHECK_CRC_ON_SOLID_SKIP*/
 /*#define DONT_FAIL_ON_CRC_ERROR*/