glut: Do not rely on GLAPIENTRY symbol.
authorJosé Fonseca <jfonseca@vmware.com>
Fri, 23 Jan 2009 12:27:10 +0000 (12:27 +0000)
committerJosé Fonseca <jfonseca@vmware.com>
Fri, 23 Jan 2009 12:27:10 +0000 (12:27 +0000)
GLEW does some defining/undefining of GLAPIENTRY making it unreliable. GLEW
should also be fixed, but removing the dependency on this symbol.

This also restores the ability for GLUT to be used with -fvisibility=hidden.
The downside of this is that ld warns of:

  Warning: size of symbol `glutBitmapXXXXX' changed from 4 in glut_xxx.o to 16 in glut_xxxx.o

Due to the fonts being declared void * (*4 bytes), but defined as 16byte static
structure. I'll fix that in a later commit.

See also commits:
 - f321f16e83cae427d6496c11955fd1c898d0395c
 - d084982240bafba0169c4a6cacf02d45d6cfd8c1

include/GL/glut.h

index 45fed43549283d4641314f68b8fb45553d7b6047..a3add59a4f1950a99eb0ea76a6ebef933e158d06 100644 (file)
@@ -200,10 +200,17 @@ WGLAPI int   GLAPIENTRY SetPixelFormat(HDC,int,const PIXELFORMATDESCRIPTOR *);
 #  pragma warning( pop )
 #endif
 
-#else /* _WIN32 not defined */
+#elif defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 303
 
-/* Define GLUTAPIENTRY and GLUTCALLBACK to nothing if we aren't on Win32. */
-#  define GLUTAPIENTRY GLAPIENTRY
+#  define GLUTAPIENTRY
+#  define GLUTAPIENTRYV
+#  define GLUTCALLBACK
+#  define GLUTAPI __attribute__((visibility("default")))
+
+#else
+
+/* Define GLUTAPIENTRY and GLUTCALLBACK to nothing */
+#  define GLUTAPIENTRY
 #  define GLUTAPIENTRYV
 #  define GLUTCALLBACK
 #  define GLUTAPI extern