[CLN-list] problems building on powerpc64

Richard B. Kreckel kreckel at ginac.de
Wed Dec 5 22:05:45 CET 2007


Hi,

On 2006-03-30, Bruno Haible wrote:
> Dmitry Khutornoy wrote:
>> /* Integers of type long have 32 bits. */
>> #define long_bitsize 32
>> /* Pointers of type char * have 32 bits. */
>> #define pointer_bitsize 32
> 
> OK, you are compiling in PowerPC 32-bit mode, but CLN's configuration was
> confused because you have a 64-bit CPU.
> 
> The immediate workaround for you is to change include/cln/config.h so that it
> defines __rs6000__ and not __powerpc64__, do a "make clean" and "make".
> 
> The fix should be to add code to m4/general.m4 to distinguish 32-bit and
> 64-bit PowerPC, like it's already done for Sparc / Sparc64. Can someone
> please do that? I don't have the time.

According to the GCC sources, __powerpc64__ is a builtin define. So, I 
wonder if this patch is safe to apply without being able to do any 
testing whatsoever:

Index: general.m4
===================================================================
RCS file: /home/cvs/cln/m4/general.m4,v
retrieving revision 1.3
diff -u -r1.3 general.m4
--- general.m4  13 Jun 2006 18:31:18 -0000      1.3
+++ general.m4  5 Dec 2007 21:01:39 -0000
@@ -200,6 +200,21 @@
  else
    host_cpu=i386
  fi
+dnl PowerPC64 is another case where 'uname -m' and userland may disagree.
+  powerpc64 )
+    AC_CACHE_CHECK([for 64-bit userland on powerpc64], 
cl_cv_host_powerpc64, [
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+[[#if !defined __powerpc64__
+# error __powerpc64__ not defined
+#endif
+]])
+], [cl_cv_host_powerpc64=yes], [cl_cv_host_powerpc64=no])
+])
+if test $cl_cv_host_powerpc64 = yes; then
+  host_cpu=powerpc64
+else
+  host_cpu=powerpc
+fi
    ;;
  esac
  dnl was AC_DEFINE_UNQUOTED(__${host_cpu}__) but KAI C++ 3.2d doesn't 
like this

   -richy.
-- 
Richard B. Kreckel
<http://www.ginac.de/~kreckel/>


More information about the CLN-list mailing list