waffle-gl / waffle

A C library for selecting an OpenGL API and window system at runtime
https://waffle.freedesktop.org
BSD 2-Clause "Simplified" License
35 stars 16 forks source link

Failed to build with NVIDIA's OpenGL headers and library #31

Closed Zenitur closed 9 years ago

Zenitur commented 9 years ago

OS: Linux x86_64, NVIDIA proprietary driver installed using official RUN-file:

sh NVIDIA-Linux-x86_64-346.47.run --opengl-headers

Mesa and her headers was replaced.

Error when build Waffle 1.4.0 and latest GIT:

[ 68%] Building C object src/waffle/CMakeFiles/waffle-1.dir/glx/glx_context.c.o cd /var/tmp/portage/media-libs/waffle-1.4.0/work/waffle-1.4.0-abi_x86_64.amd64/src/waffle && /usr/bin/x86_64-pc-linux-gnu-gcc -DWAFFLE_API_EXPERIMENTAL -DWAFFLE_API_VERSION=260 -DWAFFLE_HAS_GLX -DWAFFLE_HAS_TLS -DWAFFLE_HAS_TLS_MODEL_INITIAL_EXEC -DWAFFLE_HAS_X11_EGL -Dwaffle_1_EXPORTS -DNDEBUG -march=core-avx-i -Os -pipe --std=c99 -Wall -Werror=implicit-function-declaration -Werror=missing-prototypes -fPIC -I/var/tmp/portage/media-libs/waffle-1.4.0/work/waffle-1.4.0/include -I/var/tmp/portage/media-libs/waffle-1.4.0/work/waffle-1.4.0/include/waffle -I/var/tmp/portage/media-libs/waffle-1.4.0/work/waffle-1.4.0/src -I/var/tmp/portage/media-libs/waffle-1.4.0/work/waffle-1.4.0/src/waffle/android -I/var/tmp/portage/media-libs/waffle-1.4.0/work/waffle-1.4.0/src/waffle/api -I/var/tmp/portage/media-libs/waffle-1.4.0/work/waffle-1.4.0/src/waffle/cgl -I/var/tmp/portage/media-libs/waffle-1.4.0/work/waffle-1.4.0/src/waffle/core -I/var/tmp/portage/media-libs/waffle-1.4.0/work/waffle-1.4.0/src/waffle/egl -I/var/tmp/portage/media-libs/waffle-1.4.0/work/waffle-1.4.0/src/waffle/glx -I/var/tmp/portage/media-libs/waffle-1.4.0/work/waffle-1.4.0/src/waffle/linux -I/var/tmp/portage/media-libs/waffle-1.4.0/work/waffle-1.4.0/src/waffle/wayland -I/var/tmp/portage/media-libs/waffle-1.4.0/work/waffle-1.4.0/src/waffle/x11 -I/var/tmp/portage/media-libs/waffle-1.4.0/work/waffle-1.4.0/src/waffle/xegl -I/usr/include/libdrm -fvisibility=hidden -o CMakeFiles/waffle-1.dir/glx/glx_context.c.o -c /var/tmp/portage/media-libs/waffle-1.4.0/work/waffle-1.4.0/src/waffle/glx/glx_context.c /var/tmp/portage/media-libs/waffle-1.4.0/work/waffle-1.4.0/src/waffle/glx/glx_context.c: In function ‘glx_context_fill_attrib_list’: /var/tmp/portage/media-libs/waffle-1.4.0/work/waffle-1.4.0/src/waffle/glx/glx_context.c:114:44: error: ‘GLX_CONTEXT_PROFILE_MASK_ARB’ undeclared (first use in this function) /var/tmp/portage/media-libs/waffle-1.4.0/work/waffle-1.4.0/src/waffle/glx/glx_context.c:114:44: note: each undeclared identifier is reported only once for each function it appears in /var/tmp/portage/media-libs/waffle-1.4.0/work/waffle-1.4.0/src/waffle/glx/glx_context.c:115:44: error: ‘GLX_CONTEXT_CORE_PROFILE_BIT_ARB’ undeclared (first use in this function) /var/tmp/portage/media-libs/waffle-1.4.0/work/waffle-1.4.0/src/waffle/glx/glx_context.c:119:44: error: ‘GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB’ undeclared (first use in this function) make[2]: * [src/waffle/CMakeFiles/waffle-1.dir/glx/glx_context.c.o] Error 1 make[2]: Leaving directory `/var/tmp/portage/media-libs/waffle-1.4.0/work/waffle-1.4.0-abi_x86_64.amd64' make[1]: * [src/waffle/CMakeFiles/waffle-1.dir/all] Error 2 make[1]: Leaving directory`/var/tmp/portage/media-libs/waffle-1.4.0/work/waffle-1.4.0-abi_x86_64.amd64' make: *\ [all] Error 2

evelikov commented 9 years ago

Overwriting the system headers is a very bad thing. Regardless we shouldn't fail at build time. The following patch (send to the ML) fixes the issue here. Feel free to give it a try.

https://github.com/evelikov/waffle/commit/23015447d0693317d20f911842bab1610f33e3fb

Zenitur commented 9 years ago

Thank you. I tried your patch. But something goes wrong... http://pastebin.com/u5CYudzP "Нет такого файла или каталога" = "No such file or directory"

Zenitur commented 9 years ago

My EGL is proprietary, and EGL headers are from Khronos Group website.

Without EGL, Waffle was successfully compiled! Thank you! http://pastebin.com/L8r02Z2y

evelikov commented 9 years ago

Zenitur, for future reference, please don't close issues until a fix is committed.

Wrt the second issue, it seems that you've kept the mesa EGL.h whist you removed the other mesa provided header - eglmesaext.h. Please don't mix'n'match headers - it's a bad idea can cannot be fixed in waffle.

Thanks

Zenitur commented 9 years ago

evelikov, you're right. Gentoo has removed myself installed EGL and GLES/2/3 headers, and switch it with ../../lib32/opengl/xorg-x11/include/EGL/egl.h