Building Blender 2.93.3 with system GLEW fails

In openSUSE, we used to built Blender with -DWITH_SYSTEM_GLEW:BOOL=ON, and even removed extern/glew beforehand.

Now this fails with:

[  357s] /home/abuild/rpmbuild/BUILD/blender-2.93.3/intern/ghost/intern/GHOST_ContextGLX.cpp:338: error: undefined reference to '__GLXEW_EXT_swap_control'
[  357s] /home/abuild/rpmbuild/BUILD/blender-2.93.3/intern/ghost/intern/GHOST_ContextGLX.cpp:339: error: undefined reference to '__glewXSwapIntervalEXT'
[  357s] /home/abuild/rpmbuild/BUILD/blender-2.93.3/intern/ghost/intern/GHOST_ContextGLX.cpp:350: error: undefined reference to '__GLXEW_EXT_swap_control'
[  357s] /home/abuild/rpmbuild/BUILD/blender-2.93.3/intern/ghost/intern/GHOST_ContextGLX.cpp:353: error: undefined reference to '__glewXQueryDrawable'
[  357s] /home/abuild/rpmbuild/BUILD/blender-2.93.3/intern/ghost/intern/GHOST_ContextGLX.cpp:249: error: undefined reference to '__glewXCreateContextAttribsARB'
[  357s] /home/abuild/rpmbuild/BUILD/blender-2.93.3/intern/ghost/intern/GHOST_ContextGLX.cpp:253: error: undefined reference to '__glewXCreatePbuffer'
[  357s] /home/abuild/rpmbuild/BUILD/blender-2.93.3/intern/ghost/intern/GHOST_ContextGLX.cpp:135: error: undefined reference to '__glewXChooseFBConfig'
[  357s] /home/abuild/rpmbuild/BUILD/blender-2.93.3/intern/ghost/intern/GHOST_ContextGLX.cpp:137: error: undefined reference to '__glewXCreateContextAttribsARB'
[  357s] /home/abuild/rpmbuild/BUILD/blender-2.93.3/intern/ghost/intern/GHOST_ContextGLX.cpp:139: error: undefined reference to '__glewXCreatePbuffer'
[  357s] /home/abuild/rpmbuild/BUILD/blender-2.93.3/intern/ghost/intern/GHOST_ContextGLX.cpp:264: error: undefined reference to '__glewXChooseFBConfig'
[  357s] /home/abuild/rpmbuild/BUILD/blender-2.93.3/intern/ghost/intern/GHOST_ContextGLX.cpp:269: error: undefined reference to '__glewXCreateContextAttribsARB'
[  357s] /home/abuild/rpmbuild/BUILD/blender-2.93.3/intern/ghost/intern/GHOST_ContextGLX.cpp:273: error: undefined reference to '__glewXCreatePbuffer'
[  357s] /home/abuild/rpmbuild/BUILD/blender-2.93.3/intern/ghost/intern/GHOST_WindowX11.cpp:147: error: undefined reference to '__glewXChooseFBConfig'
[  357s] /home/abuild/rpmbuild/BUILD/blender-2.93.3/intern/ghost/intern/GHOST_WindowX11.cpp:148: error: undefined reference to '__glewXGetVisualFromFBConfig'
[  357s] /home/abuild/rpmbuild/BUILD/blender-2.93.3/intern/ghost/intern/GHOST_WindowX11.cpp:164: error: undefined reference to '__glewXGetVisualFromFBConfig'
[  357s] /home/abuild/rpmbuild/BUILD/blender-2.93.3/intern/ghost/intern/GHOST_WindowX11.cpp:150: error: undefined reference to '__glewXGetVisualFromFBConfig'
[  362s] collect2: error: ld returned 1 exit status
[  362s] make[2]: *** [source/creator/CMakeFiles/blender.dir/build.make:393: bin/blender] Error 1
[  362s] make[2]: Leaving directory '/home/abuild/rpmbuild/BUILD/blender-2.93.3/build'
[  362s] make[1]: *** [CMakeFiles/Makefile2:6627: source/creator/CMakeFiles/blender.dir/all] Error 2
[  362s] make[1]: Leaving directory '/home/abuild/rpmbuild/BUILD/blender-2.93.3/build'
[  362s] make: *** [Makefile:169: all] Error 2

and yes, I noticed, that the final link misses the libGLEW lib.

In an desperate attempt, I tried to fix the build with:

sed -i 's|NOT WITH_SYSTEM_GLEW|WITH_SYSTEM_GLEW|' source/blender/gpu/CMakeLists.txt

and this resulted in the GLEW library being used in the final link step:

../../lib/libbf_gpu.a /usr/lib64/libGL.so /usr/lib64/libGLEW.so

But it failed in the same way.

Any idea on this one?

With binutils-gold of the latest gcc, it fails with an almost indecipherable error:

[  346s] /usr/bin/ld.gold: internal error in format_file_lineno, at ../../gold/dwarf_reader.cc:2278
[  346s] collect2: error: ld returned 1 exit status
[  346s] make[2]: *** [source/creator/CMakeFiles/blender.dir/build.make:393: bin/blender] Error 1
[  346s] make[2]: Leaving directory '/home/abuild/rpmbuild/BUILD/blender-2.93.3/build'
[  346s] make[1]: *** [CMakeFiles/Makefile2:6627: source/creator/CMakeFiles/blender.dir/all] Error 2
[  346s] make[1]: Leaving directory '/home/abuild/rpmbuild/BUILD/blender-2.93.3/build'
[  346s] make: *** [Makefile:169: all] Error 2

According to the following link, GLEW doesn’t support GLX and EGL at the same time.

https://developer.blender.org/D12034

OpenSUSE uses EGL by default if I am reading this GLEW bug report correctly.

Thanks for the hint, @EAW. Much appreciated.

Using the Blender supplied GLEW seems to be working fine again. Yay.

1 Like