Source: lz4
Version: 0.0~r117-1
Severity: normal
Tags: patch
User: debian-powe...@lists.debian.org
Usertags: ppc64el

Dear Maintainer,

Currently lz4 package does not built on ppc64el due to that ppc64el is
identified as a big endian and 32 bit architecture, thus the tests fail.

I am providing a patch that fixes the problem. It is based on the William
Grant's patches entitled  'Fix __GLIBC__ endianness check to include
stdlib.h' plus changes to add the platform as 64 bits.

With the following patch, the tests run fine with the following result:

        compression ratio: 48.824%
        HC compression ratio: 38.515%

This patch was also sent upstream at
https://code.google.com/p/lz4/issues/detail?id=131&q=label%3APriority-minor

Thanks
Breno

-- System Information:
Debian Release: jessie/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: ppc64el (ppc64le)

Kernel: Linux 3.13-1-powerpc64le (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Index: lz4-0.0~r117/lz4.c
===================================================================
--- lz4-0.0~r117.orig/lz4.c	2014-06-11 12:46:02.000000000 +0000
+++ lz4-0.0~r117/lz4.c	2014-06-11 12:48:00.000000000 +0000
@@ -56,7 +56,9 @@
 **************************************/
 /* 32 or 64 bits ? */
 #if (defined(__x86_64__) || defined(_M_X64) || defined(_WIN64) \
-  || defined(__powerpc64__) || defined(__ppc64__) || defined(__PPC64__) \
+  || defined(__powerpc64__) || defined(__powerpc64le__) \
+  || defined(__ppc64__) || defined(__ppc64le__) \
+  || defined(__PPC64__) || defined(__PPC64LE__) \
   || defined(__64BIT__) || defined(_LP64) || defined(__LP64__) \
   || defined(__ia64) || defined(__itanium__) || defined(_M_IA64) )   /* Detects 64 bits mode */
 #  define LZ4_ARCH64 1
@@ -68,6 +70,7 @@
  * Little Endian or Big Endian ?
  * Overwrite the #define below if you know your architecture endianess
  */
+#include <stdlib.h>
 #if defined (__GLIBC__)
 #  include <endian.h>
 #  if (__BYTE_ORDER == __BIG_ENDIAN)
Index: lz4-0.0~r117/lz4hc.c
===================================================================
--- lz4-0.0~r117.orig/lz4hc.c	2014-06-11 12:46:02.000000000 +0000
+++ lz4-0.0~r117/lz4hc.c	2014-06-11 12:48:26.000000000 +0000
@@ -54,7 +54,9 @@
 **************************************/
 /* 32 or 64 bits ? */
 #if (defined(__x86_64__) || defined(_M_X64) || defined(_WIN64) \
-  || defined(__powerpc64__) || defined(__ppc64__) || defined(__PPC64__) \
+  || defined(__powerpc64__) || defined(__powerpc64le__) \
+  || defined(__ppc64__) || defined(__ppc64le__) \
+  || defined(__PPC64__) || defined(__PPC64LE__) \
   || defined(__64BIT__) || defined(_LP64) || defined(__LP64__) \
   || defined(__ia64) || defined(__itanium__) || defined(_M_IA64) )   /* Detects 64 bits mode */
 #  define LZ4_ARCH64 1
@@ -66,6 +68,7 @@
  * Little Endian or Big Endian ?
  * Overwrite the #define below if you know your architecture endianess
  */
+#include <stdlib.h>
 #if defined (__GLIBC__)
 #  include <endian.h>
 #  if (__BYTE_ORDER == __BIG_ENDIAN)

Reply via email to