]> www.ginac.de Git - cln.git/commitdiff
Detect s390x and sparc64 as 32-bit architectures.
authorRichard Kreckel <kreckel@ginac.de>
Sun, 1 Apr 2012 20:38:54 +0000 (22:38 +0200)
committerRichard Kreckel <kreckel@ginac.de>
Sun, 1 Apr 2012 20:38:54 +0000 (22:38 +0200)
CLN fails to build on s390x and sparc64 as it detects them as 32-bit
architectures, due to __s390__ and __sparc__ matching respectively both
s390 and s390x, and both sparc and sparc64. The patch below fixes the
issue. (Reported as Debian bug#639494.)

Thanks to Aurelien Jarno <aurel32@debian.org>.

include/cln/host_cpu.h.in
include/cln/object.h
include/cln/types.h

index b18e05fa397c185ec6aa2583a43082168bd79806..67ae5bff58a647d727c049031d4b1163207e6c82 100644 (file)
@@ -75,5 +75,9 @@
 #undef __s390__
 #endif
 
+#ifndef __s390x__
+#undef __s390x__
+#endif
+
 #endif /* _CL_HOST_CPU_CONFIG_H */
 
index bbb4aad9078bfce2fdec739d5031e06acf5d1104..ad0f2f890be735cceab808aa88ea711746b76857 100644 (file)
@@ -22,10 +22,10 @@ namespace cln {
 #if defined(__m68k__)
   #define cl_word_alignment  2
 #endif
-#if defined(__i386__) || defined(__mips__) || defined(__mipsel__) || (defined(__sparc__) && !defined(__sparc64__)) || defined(__hppa__) || defined(__arm__) || defined(__rs6000__) || defined(__m88k__) || defined(__convex__) || defined(__s390__) || defined(__sh__)
+#if defined(__i386__) || defined(__mips__) || defined(__mipsel__) || (defined(__sparc__) && !defined(__arch64__)) || defined(__hppa__) || defined(__arm__) || defined(__rs6000__) || defined(__m88k__) || defined(__convex__) || (defined(__s390__) && !defined(__s390x__)) || defined(__sh__)
   #define cl_word_alignment  4
 #endif
-#if defined(__alpha__) || defined(__ia64__) || defined(__mips64__) || defined(__powerpc64__) || defined(__sparc64__) || defined(__x86_64__)
+#if defined(__alpha__) || defined(__ia64__) || defined(__mips64__) || defined(__powerpc64__) || (defined(__sparc__) && defined(__arch64__)) || defined(__x86_64__) || defined(__s390x__)
   #define cl_word_alignment  8
 #endif
 #if !defined(cl_word_alignment)
index 8bb8f92fde5ab418a793834031d0156a3c169701..ce8d7a6d657ef001af7a83289d02e3d8f0adffa1 100644 (file)
@@ -48,7 +48,7 @@
     #undef HAVE_LONGLONG
    #endif
   #endif
-  #if defined(HAVE_LONGLONG) && (defined(__alpha__) || defined(__ia64__) || defined(__mips64__) || defined(__powerpc64__) || defined(__sparc64__) || defined(__x86_64__))
+  #if defined(HAVE_LONGLONG) && (defined(__alpha__) || defined(__ia64__) || defined(__mips64__) || defined(__powerpc64__) || defined(__s390x__) || (defined(__sparc__) && defined(__arch64__)) || defined(__x86_64__))
     // 64 bit registers in hardware
     #define HAVE_FAST_LONGLONG
   #endif
@@ -76,7 +76,7 @@
 
 // Integer type used for counters.
 // Constraint: sizeof(uintC) >= sizeof(uintL)
-  #if (defined(HAVE_FAST_LONGLONG) && (defined(__alpha__) || defined(__ia64__) || defined(__powerpc64__) || defined(__x86_64__)))
+  #if (defined(HAVE_FAST_LONGLONG) && (defined(__alpha__) || defined(__ia64__) || defined(__powerpc64__) || defined(__s390x__) || (defined(__sparc__) && defined(__arch64__)) || defined(__x86_64__)))
     #define intCsize long_bitsize
     typedef long           sintC;
     typedef unsigned long  uintC;
@@ -88,7 +88,7 @@
 
 // Integer type used for lfloat exponents.
 // Constraint: sizeof(uintE) >= sizeof(uintC)
-#if (defined(HAVE_LONGLONG) && (defined(__alpha__) || defined(__ia64__) || defined(__powerpc64__) || defined(__x86_64__) || defined(__i386__) || defined(__mips__) || defined(__rs6000__)))
+#if (defined(HAVE_LONGLONG) && (defined(__alpha__) || defined(__ia64__) || defined(__powerpc64__) || defined(__s390x__) || (defined(__sparc__) && defined(__arch64__)) || defined(__x86_64__) || defined(__i386__) || defined(__mips__) || defined(__rs6000__)))
     #define intEsize 64
     typedef sint64  sintE;
     typedef uint64  uintE;
     typedef int sintD;
     typedef unsigned int uintD;
   #else  // we are not using GMP, so just guess something reasonable
-    #if (defined(HAVE_FAST_LONGLONG) && (defined(__alpha__) || defined(__ia64__) || defined(__powerpc64__) || defined(__x86_64__)))
+    #if (defined(HAVE_FAST_LONGLONG) && (defined(__alpha__) || defined(__ia64__) || defined(__powerpc64__) || (defined(__sparc__) && defined(__arch64__)) || defined(__s390x__) || defined(__x86_64__)))
       #define intDsize 64
       typedef sint64  sintD;
       typedef uint64  uintD;