Fix libGL not being found on NetBSD

Fixes #646.
This commit is contained in:
Camilla Berglund 2015-11-17 23:29:08 +01:00
parent 9ac9c61433
commit 486354d63f
2 changed files with 18 additions and 4 deletions

View File

@ -82,6 +82,7 @@ used by the tests and examples and are not required to build the library.
- [WGL] Removed dependency on external WGL headers - [WGL] Removed dependency on external WGL headers
- [GLX] Replaced legacy renderable with `GLXWindow` - [GLX] Replaced legacy renderable with `GLXWindow`
- [GLX] Removed dependency on external GLX headers - [GLX] Removed dependency on external GLX headers
- [GLX] Bugfix: NetBSD does not provide `libGL.so.1`
- [EGL] Removed dependency on external EGL headers - [EGL] Removed dependency on external EGL headers

View File

@ -152,19 +152,32 @@ static GLXContext createLegacyContext(_GLFWwindow* window,
// //
int _glfwInitContextAPI(void) int _glfwInitContextAPI(void)
{ {
int i;
const char* sonames[] =
{
#if defined(__CYGWIN__) #if defined(__CYGWIN__)
const char* soname = "libGL-1.so"; "libGL-1.so",
#else #else
const char* soname = "libGL.so.1"; "libGL.so.1",
"libGL.so",
#endif #endif
NULL
};
if (!_glfwCreateContextTLS()) if (!_glfwCreateContextTLS())
return GLFW_FALSE; return GLFW_FALSE;
_glfw.glx.handle = dlopen(soname, RTLD_LAZY | RTLD_GLOBAL); for (i = 0; sonames[i]; i++)
{
_glfw.glx.handle = dlopen(sonames[i], RTLD_LAZY | RTLD_GLOBAL);
if (_glfw.glx.handle)
break;
}
if (!_glfw.glx.handle) if (!_glfw.glx.handle)
{ {
_glfwInputError(GLFW_API_UNAVAILABLE, "GLX: %s", dlerror()); _glfwInputError(GLFW_API_UNAVAILABLE, "GLX: Failed to load GLX");
return GLFW_FALSE; return GLFW_FALSE;
} }