[Paraview] ParaView 2 compile problems on x86_64

Brad King brad.king at kitware.com
Mon, 05 Apr 2004 09:12:57 -0400


David Thompson wrote:
> Hi,
> 
> 	I've made a couple changes to get ParaView compiling and running on a
> Linux Athlon64 box with VTK_USE_64BIT_IDS turned on. I checked in one
> obvious CMake error, but there are a couple of issues I'm less certain
> about, so I'm attaching a patch in the hopes someone will tell me the
> correct way to go about fixing things:
> 
> 1. I had to add some member functions to vtkClientServerStream because
> it wasn't including a 64-bit type (long long int as opposed to long int
> on gcc 3.3.2). Should I be explicitly adding these
> 	VTK_CLIENT_SERVER_OPERATOR(long long)
> 	VTK_CLIENT_SERVER_OPERATOR(unsigned long long)
> 	VTK_TYPE_FROM_NATIVE(long long,vtkTypeInt64);
> 	VTK_TYPE_FROM_NATIVE(unsigned long long,vtkTypeUInt64)
> 	VTK_CSS_GET_ARGUMENT(long long)
> 	VTK_CSS_GET_ARGUMENT(unsigned long long)
> or is that what the VTK_TYPE_INT64_NOT_STANDARD ifdef is supposed to
> catch and it's just not being configured correctly? (I'm pretty sure
> that just checking in the patch below will break builds on other systems
> where sizeof(long) == sizeof(long long) or long long doesn't exist.

As you guessed, this change will break elsewhere, but a modified version 
may be needed.  Exactly one of the following should be true:

   - sizeof(long) == 8
   - VTK_TYPE_INT64_NOT_STANDARD is defined

I suspect that the problem is that the type "long" is really 64-bit, but 
vtkIdType is defined to "long long", which is also 64-bit.  Since "long" 
provides the 64-bit type for vtkClientServerStream, it doesn't bother 
adding the "long long" overloads.  Then code that uses vtkIdType breaks. 
  I'll work on fixing this case soon.

Someone else will have to comment on your other two questions.

-Brad