dri: make unresolved symbol test link work even without a libGL.so
authorLuca Barbieri <luca@luca-barbieri.com>
Tue, 23 Mar 2010 20:10:07 +0000 (21:10 +0100)
committerLuca Barbieri <luca@luca-barbieri.com>
Tue, 23 Mar 2010 20:32:09 +0000 (21:32 +0100)
Currently the test link uses -lGL to define the glapi symbols.

This makes it impossible to build DRI drivers on systems without
Mesa installed and without building the libGL from the Mesa tree
first.

Some automated build systems trigger this problem.

This commit removes -lGL and instead adds a dummy implementation of
glapi to dri_test.c

This, along with Kristian's commit, should fix all known regressions
due to the addition of unresolved symbol checking.

src/gallium/winsys/drm/Makefile.template
src/mesa/drivers/dri/Makefile.template
src/mesa/drivers/dri/common/dri_test.c

index 8c16094688c08cc15d2ede25b33eec065969a385..6d9b81aa249fb9b0cf086da511603ac6dce23f94 100644 (file)
@@ -69,7 +69,7 @@ $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(PIPE_DRIVERS) Makefile \
                $(OBJECTS) $(PIPE_DRIVERS) \
                 -Wl,--start-group $(MESA_MODULES) -Wl,--end-group \
                  $(DRI_LIB_DEPS) $(DRIVER_EXTRAS)
-       $(CC) -o $@.test $(TOP)/src/mesa/drivers/dri/common/dri_test.o $@.tmp $(DRI_LIB_DEPS) -L$(TOP)/lib -lGL
+       $(CC) -o $@.test $(TOP)/src/mesa/drivers/dri/common/dri_test.o $@.tmp $(DRI_LIB_DEPS)
        @rm -f $@.test
        mv -f $@.tmp $@
 
index cd800e5e0176d449bdf1fb8d2a2aedb63b359d65..f19cc039b22578acc7b6ba9ddb31b1cdce32e448 100644 (file)
@@ -54,7 +54,7 @@ $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(EXTRA_MODULES) Makefile \
                $(TOP)/src/mesa/drivers/dri/Makefile.template $(TOP)/src/mesa/drivers/dri/common/dri_test.o
        $(MKLIB) -o $@.tmp -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \
                $(OBJECTS) $(MESA_MODULES) $(EXTRA_MODULES) $(DRI_LIB_DEPS)
-       $(CC) -o $@.test $(TOP)/src/mesa/drivers/dri/common/dri_test.o $@.tmp $(DRI_LIB_DEPS) -L$(TOP)/lib -lGL
+       $(CC) -o $@.test $(TOP)/src/mesa/drivers/dri/common/dri_test.o $@.tmp $(DRI_LIB_DEPS)
        @rm -f $@.test
        mv -f $@.tmp $@
 
index cf59b2b73789d051a67fe4334a4b1bddf5258961..f55ec6d52beec078e93c0f5fc7ae384955c0f6b7 100644 (file)
@@ -1,8 +1,76 @@
+#include "main/glheader.h"
+#include "main/compiler.h"
+#include "glapi/glapi.h"
+
 /* This is just supposed to make sure we get a reference to
    the driver entry symbol that the compiler doesn't optimize away */
 
 extern char __driDriverExtensions[];
 
+/* provide glapi symbols */
+
+#if defined(GLX_USE_TLS)
+
+PUBLIC __thread struct _glapi_table * _glapi_tls_Dispatch
+    __attribute__((tls_model("initial-exec")));
+
+PUBLIC __thread void * _glapi_tls_Context
+    __attribute__((tls_model("initial-exec")));
+
+#endif
+
+PUBLIC const struct _glapi_table *_glapi_Dispatch;
+PUBLIC const void *_glapi_Context;
+
+PUBLIC void
+_glapi_check_multithread(void)
+{}
+
+PUBLIC void
+_glapi_set_context(void *context)
+{}
+
+PUBLIC void *
+_glapi_get_context(void)
+{
+       return 0;
+}
+
+PUBLIC void
+_glapi_set_dispatch(struct _glapi_table *dispatch)
+{}
+
+PUBLIC struct _glapi_table *
+_glapi_get_dispatch(void)
+{
+       return 0;
+}
+
+PUBLIC int
+_glapi_add_dispatch( const char * const * function_names,
+                    const char * parameter_signature )
+{
+       return 0;
+}
+
+PUBLIC GLint
+_glapi_get_proc_offset(const char *funcName)
+{
+       return 0;
+}
+
+PUBLIC _glapi_proc
+_glapi_get_proc_address(const char *funcName)
+{
+       return 0;
+}
+
+PUBLIC GLuint
+_glapi_get_dispatch_table_size(void)
+{
+       return 0;
+}
+
 int main(int argc, char** argv)
 {
    void* p = __driDriverExtensions;