[Paraview] Undefined glXGetProcAddressARB

Moreland, Kenneth kmorel at sandia.gov
Mon Jan 8 10:44:39 EST 2007


Kent,

As you have probably already have guessed, the CMake files do their best
to test whether the prototype for glXGetProcAddressARB exists in the
OpenGL header files.  It does a TRY_COMPILE to see if
glXGetProcAddressARB can be used without declaring a prototype, and the
result is stored in VTK_GLX_GET_PROC_ADDRESS_ARB_PROTOTYPE_EXISTS.  The
quick and dirty solution is to simply set the value of that variable in
your CMakeCache.txt file to FALSE.

For the test to be wrong in the first place, there must be some
disconnect between the header files used during the test and the header
files used when compiling vtkOpenGLExtensionManager.  We have done a lot
of work to ensure that the two are the same, but it is impossible to
guarantee that and every once in a while a system comes along that
breaks.  Assuming that you have done the obvious "make sure you are
doing a clean build," there must be some difference in the include
directories, order of the include directories, or definitions used
between the test and actual compile that is making your build fail.

The CMake code that performs the test is in
ParaView/VTK/Rendering/CMakeLists.txt starting at about line 287.  If
you are feeling adventurous, you can look at the compile environment for
the test and compare them to the build of vtkOpenGLExtensionManager.

-Ken

> -----Original Message-----
> From: paraview-bounces+kmorel=sandia.gov at paraview.org
[mailto:paraview-
> bounces+kmorel=sandia.gov at paraview.org] On Behalf Of Kent Eschenberg
> Sent: Friday, January 05, 2007 9:50 AM
> To: ParaView
> Subject: [Paraview] Undefined glXGetProcAddressARB
> 
> The compile of file VTK/Rendering/vtkOpenGLExtensionManager.cxx fails
at
> line 195 because glXGetProcAddressARB is undefined. A search of
> CMakeCache.txt for "PROC_ADDRESS" finds
> 
> ======
> VTK_GLX_GET_PROC_ADDRESS_ARB_PROTOTYPE_EXISTS:INTERNAL=TRUE
> 
> //Already set VTK_GLX_GET_PROC_ADDRESS_ARB_PROTOTYPE_EXISTS
> 
> VTK_GLX_GET_PROC_ADDRESS_ARB_PROTOTYPE_EXISTS_TESTED:INTERNAL=1
> 
> VTK_USE_GLX_GET_PROC_ADDRESS_ARB:INTERNAL=1
> ======
> 
> The top of the cxx file mentioned above includes
> 
> ======
> #ifdef VTK_DEFINE_GLX_GET_PROC_ADDRESS_PROTOTYPE
> extern "C" vtkglX::__GLXextFuncPtr glXGetProcAddressARB(const GLubyte
*);
> #endif //VTK_DEFINE_GLX_GET_PROC_ADDRESS_PROTOTYPE
> ======
> 
> and, later, line 195 is inside another ifdef:
> 
> ======
> #ifdef VTK_USE_GLX_GET_PROC_ADDRESS_ARB
>   return glXGetProcAddressARB((const GLubyte *)fname);
> #endif //VTK_USE_GLX_GET_PROC_ADDRESS_ARB
> ======
> 
> Therefore it looks like cmake set VTK_USE_GLX_GET_PROC_ADDRESS_ARB but
not
> VTK_DEFINE_GLX_GET_PROC_ADDRESS_PROTOTYPE. A few details:
> 
> ParaView 2.4.4
> Mesa 6.5.2
> Pentium 4
> gcc 4.1.1
> Linux Fedora Core 5
> 
> The Mesa includes and libraries include glXGetProcAddressARB.
> 
> I could of course change the VTK source code to always define that
routine
> but would like to instead coax cmake to do the right thing. TIA!
> 
> Kent
> Pittsburgh Supercomputing Center
> 
> _______________________________________________
> ParaView mailing list
> ParaView at paraview.org
> http://www.paraview.org/mailman/listinfo/paraview




More information about the ParaView mailing list