I fixed Mesa for the new LibGGI dlopen scheme. Note, that there seems to be
a problem with the libtools used by Mesa and by LibGGI. If you get strange
error messages about unknown formats and files with ".la" extensions, look
for the file that contains the reference to that file and change the
option line containing the .la file to use -llibname instead.

If someone with write access to the Mesa repo could commit that, that would
be great.

CU, Andy

-- 
= Andreas Beck                    |  Email :  <[EMAIL PROTECTED]> =
Index: configure.in
===================================================================
RCS file: /cvs/mesa3d/Mesa/configure.in,v
retrieving revision 1.23
diff -u -r1.23 configure.in
--- configure.in        2000/04/06 14:04:23     1.23
+++ configure.in        2000/06/04 10:36:14
@@ -94,7 +94,7 @@
 AC_CHECK_LIB(pthread, pthread_create,
   AC_CHECK_HEADERS(pthread.h, [
     CFLAGS="$CFLAGS -D_REENTRANT"
-    THREAD_LIBS="$THREAD_LIBS -lpthread") 
+    THREAD_LIBS="$THREAD_LIBS -lpthread" 
   ])
 )
 AC_SUBST(THREAD_LIBS)
Index: src/GGI/ggimesa.c
===================================================================
RCS file: /cvs/mesa3d/Mesa/src/GGI/ggimesa.c,v
retrieving revision 1.7
diff -u -r1.7 ggimesa.c
--- src/GGI/ggimesa.c   2000/03/31 01:07:13     1.7
+++ src/GGI/ggimesa.c   2000/06/04 10:36:30
@@ -552,7 +552,7 @@
                                        /* No special implementation for this sublib */
                                        continue;
                                }
-                               lib = ggiExtensionLoadDL(vis, fname, args, NULL);
+                               lib = ggiExtensionLoadDL(vis, fname, args, NULL, 
+GGI_SYMNAME_PREFIX);
                        }
                } 
                break;
Index: src/GGI/default/genkgi_visual.c
===================================================================
RCS file: /cvs/mesa3d/Mesa/src/GGI/default/genkgi_visual.c,v
retrieving revision 1.6
diff -u -r1.6 genkgi_visual.c
--- src/GGI/default/genkgi_visual.c     2000/01/07 08:34:44     1.6
+++ src/GGI/default/genkgi_visual.c     2000/06/04 10:36:31
@@ -106,7 +106,8 @@
        return 0;
 }
 
-int GGIdlinit(ggi_visual *vis, const char *args, void *argptr)
+static int GGIdlinit(ggi_visual *vis, struct ggi_dlhandle *dlh,
+                       const char *args, void *argptr, uint32 *dlret)
 {
        struct genkgi_priv_mesa *priv;
        char libname[256], libargs[256];
@@ -166,12 +167,24 @@
 #endif 
        GGIMESADPRINT_CORE("display-fbdev-kgicon-mesa: GGIdlinit finished\n");
 
+       *dlret = GGI_DL_OPDRAW;
        return 0;
 }
 
-int GGIdlcleanup(ggi_visual *vis)
+int MesaGGIdl_fbdev(int func, void **funcptr)
 {
-       return 0;
+       switch (func) {
+               case GGIFUNC_open:
+                       *funcptr = GGIopen;
+                       return 0;
+               case GGIFUNC_exit:
+               case GGIFUNC_close:
+                       *funcptr = NULL;
+                       return 0;
+               default:
+                       *funcptr = NULL;
+       }
+       return GGI_ENOTFOUND;
 }
 
 #include <ggi/internal/ggidlinit.h>
Index: src/GGI/default/linear.c
===================================================================
RCS file: /cvs/mesa3d/Mesa/src/GGI/default/linear.c,v
retrieving revision 1.1
diff -u -r1.1 linear.c
--- src/GGI/default/linear.c    1999/08/21 05:59:29     1.1
+++ src/GGI/default/linear.c    2000/06/04 10:36:31
@@ -320,14 +320,28 @@
        return 0;
 }
 
-int GGIdlinit(ggi_visual_t vis,const char *version,void *argptr)
+static int GGIopen(ggi_visual_t vis,struct ggi_dlhandle *dlh,
+                       const char *args,void *argptr, uint32 *dlret)
 {      
        LIBGGI_MESAEXT(vis)->setup_driver=GGIsetup_driver;
 
+       *dlret = GGI_DL_OPDRAW;
        return 0;
 }
 
-int GGIdlcleanup(ggi_visual_t vis)
+int DLOPENFUNC(int func, void **funcptr)
 {
-       return 0;
+       switch (func) {
+               case GGIFUNC_open:
+                       *funcptr = GGIopen;
+                       return 0;
+               case GGIFUNC_exit:
+               case GGIFUNC_close:
+                       *funcptr = NULL;
+                       return 0;
+               default:
+                       *funcptr = NULL;
+       }
+       return GGI_ENOTFOUND;
 }
+
Index: src/GGI/default/linear_15.c
===================================================================
RCS file: /cvs/mesa3d/Mesa/src/GGI/default/linear_15.c,v
retrieving revision 1.2
diff -u -r1.2 linear_15.c
--- src/GGI/default/linear_15.c 1999/08/21 08:53:27     1.2
+++ src/GGI/default/linear_15.c 2000/06/04 10:36:33
@@ -30,6 +30,7 @@
 
 #define FB_TYPE uint16
 #define FB_BITS 15
+#define DLOPENFUNC MesaGGIdl_linear_15
 
 #include "linear.c"
 
Index: src/GGI/default/linear_16.c
===================================================================
RCS file: /cvs/mesa3d/Mesa/src/GGI/default/linear_16.c,v
retrieving revision 1.2
diff -u -r1.2 linear_16.c
--- src/GGI/default/linear_16.c 1999/08/21 08:53:27     1.2
+++ src/GGI/default/linear_16.c 2000/06/04 10:36:33
@@ -30,6 +30,7 @@
 
 #define FB_TYPE uint16
 #define FB_BITS 16
+#define DLOPENFUNC MesaGGIdl_linear_16
 
 #include "linear.c"
 
Index: src/GGI/default/linear_24.c
===================================================================
RCS file: /cvs/mesa3d/Mesa/src/GGI/default/linear_24.c,v
retrieving revision 1.2
diff -u -r1.2 linear_24.c
--- src/GGI/default/linear_24.c 1999/08/21 08:53:27     1.2
+++ src/GGI/default/linear_24.c 2000/06/04 10:36:33
@@ -30,6 +30,7 @@
 
 #define FB_TYPE uint32
 #define FB_BITS 24
+#define DLOPENFUNC MesaGGIdl_linear_24
 
 #include "linear.c"
 
Index: src/GGI/default/linear_32.c
===================================================================
RCS file: /cvs/mesa3d/Mesa/src/GGI/default/linear_32.c,v
retrieving revision 1.2
diff -u -r1.2 linear_32.c
--- src/GGI/default/linear_32.c 1999/08/21 08:53:27     1.2
+++ src/GGI/default/linear_32.c 2000/06/04 10:36:33
@@ -30,6 +30,7 @@
 
 #define FB_TYPE uint32
 #define FB_BITS 32
+#define DLOPENFUNC MesaGGIdl_linear_32
 
 #include "linear.c"
 
Index: src/GGI/default/linear_8.c
===================================================================
RCS file: /cvs/mesa3d/Mesa/src/GGI/default/linear_8.c,v
retrieving revision 1.2
diff -u -r1.2 linear_8.c
--- src/GGI/default/linear_8.c  1999/08/21 08:53:27     1.2
+++ src/GGI/default/linear_8.c  2000/06/04 10:36:33
@@ -30,6 +30,7 @@
 
 #define FB_TYPE uint8
 #define FB_BITS 8
+#define DLOPENFUNC MesaGGIdl_linear_8
 
 #include "linear.c"
 
Index: src/GGI/default/stubs.c
===================================================================
RCS file: /cvs/mesa3d/Mesa/src/GGI/default/stubs.c,v
retrieving revision 1.4
diff -u -r1.4 stubs.c
--- src/GGI/default/stubs.c     2000/03/27 04:31:16     1.4
+++ src/GGI/default/stubs.c     2000/06/04 10:36:38
@@ -399,15 +399,28 @@
        return GGItriangle_flat;        
 }
 
-int GGIdlinit(ggi_visual_t vis, const char *version, void *argptr)
+static int GGIopen(ggi_visual_t vis, struct ggi_dlhandle *dlh,
+                       const char *args, void *argptr, uint32 *dlret)
 { 
                LIBGGI_MESAEXT(vis)->update_state = GGIupdate_state;
        LIBGGI_MESAEXT(vis)->setup_driver = GGIsetup_driver;
 
+       *dlret = GGI_DL_OPDRAW;
        return 0;
 }
 
-int GGIdlcleanup(ggi_visual_t vis)
+int MesaGGIdl_stubs(int func, void **funcptr)
 {
-       return 0;
+       switch (func) {
+               case GGIFUNC_open:
+                       *funcptr = GGIopen;
+                       return 0;
+               case GGIFUNC_exit:
+               case GGIFUNC_close:
+                       *funcptr = NULL;
+                       return 0;
+               default:
+                       *funcptr = NULL;
+       }
+       return GGI_ENOTFOUND;
 }
Index: src/GGI/display/fbdev_visual.c
===================================================================
RCS file: /cvs/mesa3d/Mesa/src/GGI/display/fbdev_visual.c,v
retrieving revision 1.5
diff -u -r1.5 fbdev_visual.c
--- src/GGI/display/fbdev_visual.c      2000/01/07 08:34:44     1.5
+++ src/GGI/display/fbdev_visual.c      2000/06/04 10:36:38
@@ -39,6 +39,8 @@
 #include <fcntl.h>
 #include <sys/stat.h>
 
+#define GGI_SYMNAME_PREFIX  "MesaGGIdl_"
+
 #ifdef HAVE_SYS_VT_H
 #include <sys/vt.h>
 #else
@@ -95,7 +97,7 @@
                                        continue;
                                }
                                
-                               lib = ggiExtensionLoadDL(vis, fname, args, NULL);
+                               lib = ggiExtensionLoadDL(vis, fname, args, NULL, 
+GGI_SYMNAME_PREFIX);
                        }
                }
                break;
Index: src/GGI/include/ggi/mesa/ggimesa_int.h
===================================================================
RCS file: /cvs/mesa3d/Mesa/src/GGI/include/ggi/mesa/ggimesa_int.h,v
retrieving revision 1.1
diff -u -r1.1 ggimesa_int.h
--- src/GGI/include/ggi/mesa/ggimesa_int.h      1999/08/21 05:57:17     1.1
+++ src/GGI/include/ggi/mesa/ggimesa_int.h      2000/06/04 10:36:38
@@ -4,6 +4,8 @@
 #include <ggi/internal/internal.h>
 #include "ggimesa.h"
 
+#define GGI_SYMNAME_PREFIX  "MesaGGIdl_"
+
 extern ggi_extid ggiMesaID;
 
 ggifunc_setmode GGIMesa_setmode;

Reply via email to