mesa: Clean up header file inclusion in cpuinfo.c.
[mesa.git] / src / mesa / main / dlopen.c
index 414cfad8e269ee178493bf74367c860a14245fcd..57a33292ed169aba5105e83069a0f3ccf5b67ade 100644 (file)
@@ -31,7 +31,7 @@
 #include "compiler.h"
 #include "dlopen.h"
 
-#if defined(_GNU_SOURCE) && !defined(__MINGW32__)
+#if defined(_GNU_SOURCE) && !defined(__MINGW32__) && !defined(__blrts)
 #include <dlfcn.h>
 #endif
 #if defined(_WIN32)
@@ -46,7 +46,9 @@
 void *
 _mesa_dlopen(const char *libname, int flags)
 {
-#if defined(_GNU_SOURCE)
+#if defined(__blrts)
+   return NULL;
+#elif defined(_GNU_SOURCE)
    flags = RTLD_LAZY | RTLD_GLOBAL; /* Overriding flags at this time */
    return dlopen(libname, flags);
 #elif defined(__MINGW32__)
@@ -65,20 +67,27 @@ _mesa_dlopen(const char *libname, int flags)
 GenericFunc
 _mesa_dlsym(void *handle, const char *fname)
 {
-#if defined(__DJGPP__)
+   union {
+      void *v;
+      GenericFunc f;
+   } u;
+#if defined(__blrts)
+   u.v = NULL;
+#elif defined(__DJGPP__)
    /* need '_' prefix on symbol names */
    char fname2[1000];
    fname2[0] = '_';
-   _mesa_strncpy(fname2 + 1, fname, 998);
+   strncpy(fname2 + 1, fname, 998);
    fname2[999] = 0;
-   return (GenericFunc) dlsym(handle, fname2);
+   u.v = dlsym(handle, fname2);
 #elif defined(_GNU_SOURCE)
-   return (GenericFunc) dlsym(handle, fname);
+   u.v = dlsym(handle, fname);
 #elif defined(__MINGW32__)
-   return (GenericFunc) GetProcAddress(handle, fname);
+   u.v = (void *) GetProcAddress(handle, fname);
 #else
-   return (GenericFunc) NULL;
+   u.v = NULL;
 #endif
+   return u.f;
 }
 
 
@@ -88,7 +97,9 @@ _mesa_dlsym(void *handle, const char *fname)
 void
 _mesa_dlclose(void *handle)
 {
-#if defined(_GNU_SOURCE)
+#if defined(__blrts)
+   (void) handle;
+#elif defined(_GNU_SOURCE)
    dlclose(handle);
 #elif defined(__MINGW32__)
    FreeLibrary(handle);