Compiler error in glext.h/shader_program.cpp (OS X 10.9.2)
Closed this issue · 5 comments
With Mac OS X 10.9.2, boost 1.55.0, brew install'ed python 2.7.6, gfortran, wxpython, pip install'ed numpy, scipy, ttfquery, fonttools, and https://bitbucket.org/jraedler/polygon2/downloads/Polygon2-2.0.6.zip
Followed build instructions according to vpython-wx/MAC-OSX.txt using
./bootstrap.sh --with-toolset=gcc --with-python-version=2.7 --with-python-root=/usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/Current/
to build boost against homebrew's python. Upon
cd vpython-wx
python setup.py install
I received this compiler error:
In file included from /opt/src/vpython-wx/src/core/arrow.cpp:6:
In file included from /opt/src/vpython-wx/include/arrow.hpp:9:
In file included from /opt/src/vpython-wx/include/primitive.hpp:9:
In file included from /opt/src/vpython-wx/include/renderable.hpp:9:
In file included from /opt/src/vpython-wx/include/util/rgba.hpp:9:
In file included from /opt/src/vpython-wx/include/wrap_gl.hpp:21:
/opt/src/vpython-wx/include/GL/glext.h:3411:22: error: typedef redefinition with
different types ('unsigned int' vs 'void *')
typedef unsigned int GLhandleARB; /* shader object handle */
^
/System/Library/Frameworks/OpenGL.framework/Headers/gltypes.h:65:15: note:
previous definition is here
typedef void *GLhandleARB;
^
if I comment out the offending typedef in glext.h, I receive these errors instead:
/opt/src/vpython-wx/src/core/util/shader_program.cpp:22:48: error: cannot
initialize a parameter of type 'GLhandleARB' (aka 'void *') with an lvalue
of type 'int'
cache = 2 + v.glext.glGetUniformLocationARB( program, name );
^~~~~~~
/opt/src/vpython-wx/src/core/util/shader_program.cpp:42:10: error: assigning to
'int' from incompatible type 'GLhandleARB' (aka 'void *')
program = v.glext.glCreateProgramObjectARB();
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/src/vpython-wx/src/core/util/shader_program.cpp:48:28: error: cannot
initialize a parameter of type 'GLhandleARB' (aka 'void *') with an lvalue
of type 'int'
v.glext.glLinkProgramARB( program );
^~~~~~~
/opt/src/vpython-wx/src/core/util/shader_program.cpp:52:37: error: cannot
initialize a parameter of type 'GLhandleARB' (aka 'void *') with an lvalue
of type 'int'
v.glext.glGetObjectParameterivARB( program, GL_OBJECT_LINK_STATU...
^~~~~~~
/opt/src/vpython-wx/src/core/util/shader_program.cpp:62:38: error: cannot
initialize a parameter of type 'GLhandleARB' (aka 'void *') with an lvalue
of type 'int'
v.glext.glGetObjectParameterivARB( program, GL_OBJECT_IN...
^~~~~~~
/opt/src/vpython-wx/src/core/util/shader_program.cpp:64:28: error: cannot
initialize a parameter of type 'GLhandleARB' (aka 'void *') with an lvalue
of type 'int'
v.glext.glGetInfoLogARB( program, length+1, &length, &temp[0] );
^~~~~~~
/opt/src/vpython-wx/src/core/util/shader_program.cpp:73:30: error: cannot
initialize a parameter of type 'GLhandleARB' (aka 'void *') with an lvalue
of type 'int'
v.glext.glDeleteObjectARB( program );
^~~~~~~
/opt/src/vpython-wx/src/core/util/shader_program.cpp:80:33: error: cannot
initialize a parameter of type 'GLhandleARB' (aka 'void *') with an lvalue
of type 'int'
v.glext.glUseProgramObjectARB( program );
^~~~~~~
/opt/src/vpython-wx/src/core/util/shader_program.cpp:87:30: error: cannot
initialize a parameter of type 'GLhandleARB' (aka 'void *') with an lvalue
of type 'int'
v.glext.glDeleteObjectARB( program );
^~~~~~~
/opt/src/vpython-wx/src/core/util/shader_program.cpp:101:6: error: cannot
initialize a variable of type 'int' with an rvalue of type 'GLhandleARB'
(aka 'void *')
int shader = v.glext.glCreateShaderObjectARB( type );
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/src/vpython-wx/src/core/util/shader_program.cpp:139:20: error: cannot
initialize a parameter of type 'GLhandleARB' (aka 'void *') with an lvalue
of type 'int'
glDeleteObjectARB(program);
^~~~~~~
/opt/src/vpython-wx/src/core/util/shader_program.cpp:167:33: error: cannot
initialize a parameter of type 'GLhandleARB' (aka 'void *') with an lvalue
of type 'int'
v.glext.glUseProgramObjectARB( program->program );
^~~~~~~~~~~~~~~~
/opt/src/vpython-wx/src/core/util/shader_program.cpp:175:33: error: cannot
initialize a parameter of type 'GLhandleARB' (aka 'void *') with an lvalue
of type 'int'
v.glext.glUseProgramObjectARB( oldProgram );
^~~~~~~~~~
No clue why this problem arises, since this doesn't happen when building VPython for Python 2.7 from python.org.
What version of OS X are you building under? Apparently the typedef of GLhandleARB was changed from (unsigned int) to (void*) in 10.7. c.f. http://meandmark.com/blog/2011/11/sdl-opengl-typedef-redefinition-error-on-mac-os-x-10-7/
Who is the author of shader_program.cpp? Can we cc them?
Thanks much for the detailed information. I'm not sure what OSX version Steve Spicklemire used to build the VPython installers available at vpython.org, but those installers work with Python from python.org for all versions of OSX starting with 10.6.
shader_program.cpp was written by David Scherer, the originator of VPython. He is no longer involved.
Hi Bruce,
The version that on sourceforge was built on OSX 10.8. I've not tried building from source on 10.9, but I'll try soon.
-steve
On Apr 8, 2014, at 10:03 PM, BruceSherwood notifications@github.com wrote:
Thanks much for the detailed information. I'm not sure what OSX version Steve Spicklemire used to build the VPython installers available at vpython.org, but those installers work with Python from python.org for all versions of OSX starting with 10.6.
shader_program.cpp was written by David Scherer, the originator of VPython. He is no longer involved.
—
Reply to this email directly or view it on GitHub.
I've added an #ifdef for Mac OS >= 10.7 to glext.h, changed a couple (int)s to (GLhandleARB)s in shader_program.hpp and spammed shader_program.cpp with typecasts until it compiled. Try my pull request and let me know if anything's on fire!