svn commit: r507823 - in head/devel/crc32c: . files
Piotr Kubaj
pkubaj at FreeBSD.org
Thu Aug 1 19:12:18 UTC 2019
Author: pkubaj
Date: Thu Aug 1 19:12:17 2019
New Revision: 507823
URL: https://svnweb.freebsd.org/changeset/ports/507823
Log:
devel/crc32c: fix build on big-endian architectures
C++11 compiler is needed:
Target "crc32c" requires the language dialect "CXX11" , but CMake does not
know the compile flags to use to enable it.
Additionally, big-endian code in src/crc32c_read_le.h needs fixing - the value is 64 bits wide, not 32 bits.
PR: 239420
Approved by: amzo1337 at gmail.com (maintainer), tcberner (mentor)
Differential Revision: https://reviews.freebsd.org/D21054
Added:
head/devel/crc32c/files/
head/devel/crc32c/files/patch-src_crc32c__read__le.h (contents, props changed)
Modified:
head/devel/crc32c/Makefile
Modified: head/devel/crc32c/Makefile
==============================================================================
--- head/devel/crc32c/Makefile Thu Aug 1 19:11:59 2019 (r507822)
+++ head/devel/crc32c/Makefile Thu Aug 1 19:12:17 2019 (r507823)
@@ -11,7 +11,7 @@ COMMENT= CRC32C implementation supporting CPU-specific
LICENSE= BSD3CLAUSE
LICENSE_FILE= ${WRKSRC}/LICENSE
-USES= cmake
+USES= cmake compiler:c++11-lang
USE_GITHUB= yes
GH_ACCOUNT= google
USE_LDCONFIG= yes
Added: head/devel/crc32c/files/patch-src_crc32c__read__le.h
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/crc32c/files/patch-src_crc32c__read__le.h Thu Aug 1 19:12:17 2019 (r507823)
@@ -0,0 +1,25 @@
+--- src/crc32c_read_le.h.orig 2019-07-24 07:21:23 UTC
++++ src/crc32c_read_le.h
+@@ -30,14 +30,14 @@ inline uint32_t ReadUint32LE(const uint8_t* buffer) {
+ // Reads a little-endian 64-bit integer from a 64-bit-aligned buffer.
+ inline uint64_t ReadUint64LE(const uint8_t* buffer) {
+ #if BYTE_ORDER_BIG_ENDIAN
+- return ((static_cast<uint32_t>(static_cast<uint8_t>(buffer[0]))) |
+- (static_cast<uint32_t>(static_cast<uint8_t>(buffer[1])) << 8) |
+- (static_cast<uint32_t>(static_cast<uint8_t>(buffer[2])) << 16) |
+- (static_cast<uint32_t>(static_cast<uint8_t>(buffer[3])) << 24) |
+- (static_cast<uint32_t>(static_cast<uint8_t>(buffer[4])) << 32) |
+- (static_cast<uint32_t>(static_cast<uint8_t>(buffer[5])) << 40) |
+- (static_cast<uint32_t>(static_cast<uint8_t>(buffer[6])) << 48) |
+- (static_cast<uint32_t>(static_cast<uint8_t>(buffer[7])) << 56));
++ return ((static_cast<uint64_t>(static_cast<uint8_t>(buffer[0]))) |
++ (static_cast<uint64_t>(static_cast<uint8_t>(buffer[1])) << 8) |
++ (static_cast<uint64_t>(static_cast<uint8_t>(buffer[2])) << 16) |
++ (static_cast<uint64_t>(static_cast<uint8_t>(buffer[3])) << 24) |
++ (static_cast<uint64_t>(static_cast<uint8_t>(buffer[4])) << 32) |
++ (static_cast<uint64_t>(static_cast<uint8_t>(buffer[5])) << 40) |
++ (static_cast<uint64_t>(static_cast<uint8_t>(buffer[6])) << 48) |
++ (static_cast<uint64_t>(static_cast<uint8_t>(buffer[7])) << 56));
+ #else // !BYTE_ORDER_BIG_ENDIAN
+ uint64_t result;
+ // This should be optimized to a single instruction.
More information about the svn-ports-all
mailing list