glapi/glx: Generate glapi_gentable.c so that the xserver can use it
authorIan Romanick <ian.d.romanick@intel.com>
Mon, 5 Dec 2011 23:24:49 +0000 (15:24 -0800)
committerIan Romanick <ian.d.romanick@intel.com>
Wed, 14 Dec 2011 00:07:17 +0000 (16:07 -0800)
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
src/mapi/glapi/gen/gl_gentable.py

index 814238a76e1bd06997e8a202b16b184e2f6f5885..5657e32774334c63b3d7c34db5311cf8b8ec78f4 100644 (file)
@@ -33,8 +33,20 @@ import license
 import gl_XML, glX_XML
 import sys, getopt
 
-header = """
-#if defined(DEBUG) && !defined(_WIN32_WCE)
+header = """/* GLXEXT is the define used in the xserver when the GLX extension is being
+ * built.  Hijack this to determine whether this file is being built for the
+ * server or the client.
+ */
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#if (defined(GLXEXT) && defined(HAVE_BACKTRACE)) \\
+       || (!defined(GLXEXT) && defined(DEBUG) && !defined(_WIN32_WCE))
+#define USE_BACKTRACE
+#endif
+
+#ifdef USE_BACKTRACE
 #include <execinfo.h>
 #endif
 
@@ -47,11 +59,22 @@ header = """
 #include "glapi.h"
 #include "glapitable.h"
 
+#ifdef GLXEXT
+#include "os.h"
+#endif
+
 static void
 __glapi_gentable_NoOp(void) {
-#if defined(DEBUG) && !defined(_WIN32_WCE)
-    if (getenv("MESA_DEBUG") || getenv("LIBGL_DEBUG")) {
-        const char *fstr = "Unknown";
+    const char *fstr = "Unknown";
+
+    /* Silence potential GCC warning for some #ifdef paths.
+     */
+    (void) fstr;
+#if defined(USE_BACKTRACE)
+#if !defined(GLXEXT)
+    if (getenv("MESA_DEBUG") || getenv("LIBGL_DEBUG"))
+#endif
+    {
         void *frames[2];
 
         if(backtrace(frames, 2) == 2) {
@@ -61,9 +84,14 @@ __glapi_gentable_NoOp(void) {
                 fstr = info.dli_sname;
         }
 
+#if !defined(GLXEXT)
         fprintf(stderr, "Call to unimplemented API: %s\\n", fstr);
+#endif
     }
 #endif
+#if defined(GLXEXT)
+    LogMessage(X_ERROR, "GLX: Call to unimplemented API: %s\\n", fstr);
+#endif
 }
 
 static void