From: Martin Matuska Date: Sat, 6 Oct 2018 19:43:30 +0000 (+0200) Subject: archive_read_support_format_rar5: enable blake2 support via libb2 X-Git-Tag: v3.4.0~174 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c5013112229053d438cfd722497220742a146db6;p=thirdparty%2Flibarchive.git archive_read_support_format_rar5: enable blake2 support via libb2 --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 3141dff77..a5641ade2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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) diff --git a/Makefile.am b/Makefile.am index 146e16e38..80a4e17d1 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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 diff --git a/configure.ac b/configure.ac index 17d664188..64f77a673 100644 --- a/configure.ac +++ b/configure.ac @@ -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])) diff --git a/libarchive/CMakeLists.txt b/libarchive/CMakeLists.txt index 972403b45..79719773c 100644 --- a/libarchive/CMakeLists.txt +++ b/libarchive/CMakeLists.txt @@ -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) diff --git a/libarchive/archive_read_support_format_rar5.c b/libarchive/archive_read_support_format_rar5.c index d891ff94c..9f121a1be 100644 --- a/libarchive/archive_read_support_format_rar5.c +++ b/libarchive/archive_read_support_format_rar5.c @@ -42,7 +42,12 @@ #include "archive_entry_locale.h" #include "archive_ppmd7_private.h" #include "archive_entry_private.h" + +#ifdef HAVE_BLAKE2_H +#include +#else #include "archive_blake2.h" +#endif /*#define CHECK_CRC_ON_SOLID_SKIP*/ /*#define DONT_FAIL_ON_CRC_ERROR*/