On Wed, 15 Oct 2003 16:26:33 -0700
Eric Anholt <[EMAIL PROTECTED]> wrote:

> On Wed, 2003-10-15 at 16:15, Felix Kühling wrote:
> > On Wed, 15 Oct 2003 21:53:17 +0200
> > Michel Dänzer <[EMAIL PROTECTED]> wrote:
> > 
> > > On Wed, 2003-10-15 at 18:50, Felix Kühling wrote:
> > > > 
> > > > Oops, xmlconfig.o gets linked into all drivers, even those that don't
> > > > use it. BTW, the same is true for all object files in
> > > > xc/lib/GL/mesa/src/drv/common. How should files in the common directory
> > > > be handled that are not used by all drivers?
> > > 
> > > Change the drivers which don't use everything to explicitly link only
> > > what they need? Or change common/Imakefile.inc to allow customization
> > > via #defines or whatever?
> > 
> > I looked through the Imakefiles in order to resolve this. I found that
> > hwlog.o is not needed at all any more. vblank.o and xmlconfig.o are only
> > needed by mga, r128, r200 and radeon so far. The other objects (mm.o,
> > texmem.o and utils.o) seem to be used by all drivers. I'm not 100% sure
> > about texmem though.
> > 
> > The attached patch splits COMMONOBJS into COMMONOBJS, VBLANKOBJS and
> > XMLCONFIGOBJS so that the individual driver Imakefiles can select those
> > objects from the common subdir that they really need. It also removes
> > hwlog.o from COMMONOBJS completely. If noone objects I'm going to commit
> > this.
> 
> The SiS driver doesn't do texmem.  I don't think it needs the texmem
> objects, and I don't forsee it using the current incarnation of texmem.
> (not an objection, since the patch is an improvement anyway, but if
> you're already in the area...)

Ok. The 2nd version of the patch (attached) goes all the way now. It
defines all common object separately in common/Imakefile.inc. Each
driver defines its own COMMONOBJS selecting those object files that are
really needed.

In the end I tested this with a small program that loads all drivers
with dlopen in order to detect unresolved symbols. It failed on the ffb
driver:

/usr/X11R6-DRI/lib/modules/dri/ffb_dri.so: undefined symbol: ffbInitTnlModule

But I don't think this is related to my changes. Is this a known
problem? Is anybody actually using that driver?

I'm going to commit the patch real soon (tomorrow). Currently i8x0, sis,
gamma and ffb are linked with xmlconfig.o but without -lexpat. So they
are all broken since the config merge.

Regards,
  Felix

> 
> -- 
> Eric Anholt                                [EMAIL PROTECTED]          
> http://people.freebsd.org/~anholt/         [EMAIL PROTECTED]
> 

------------    __\|/__    ___     ___       -------------------------
 Felix       ___\_e -_/___/ __\___/ __\_____   You can do anything,
   Kühling  (_____\Ä/____/ /_____/ /________)  just not everything
 [EMAIL PROTECTED]       \___/   \___/   U        at the same time.
Index: common/Imakefile
===================================================================
RCS file: /cvs/dri/xc/xc/lib/GL/mesa/src/drv/common/Imakefile,v
retrieving revision 1.9
diff -u -r1.9 Imakefile
--- common/Imakefile    9 Oct 2003 09:55:58 -0000       1.9
+++ common/Imakefile    16 Oct 2003 10:55:38 -0000
@@ -29,8 +29,8 @@
       DEFINES = $(ALLOC_DEFINES) $(DRI_DEFINES) $(MESA_ASM_DEFINES)
      INCLUDES = $(X_INCLUDES) $(MESA_INCLUDES) $(DRI_INCLUDES) $(EXPATINCLUDES)
 
-         SRCS = $(COMMONSRCS) 
-         OBJS = $(COMMONOBJS) 
+         SRCS = $(MMSRC) $(UTILSSRC) $(TEXMEMSRC) $(VBLANKSRC) $(XMLCONFIGSRC)
+         OBJS = $(MMOBJ) $(UTILSOBJ) $(TEXMEMOBJ) $(VBLANKOBJ) $(XMLCONFIGOBJ)
 
 #include <Library.tmpl>
 
Index: common/Imakefile.inc
===================================================================
RCS file: /cvs/dri/xc/xc/lib/GL/mesa/src/drv/common/Imakefile.inc,v
retrieving revision 1.6
diff -u -r1.6 Imakefile.inc
--- common/Imakefile.inc        9 Oct 2003 09:55:58 -0000       1.6
+++ common/Imakefile.inc        16 Oct 2003 10:55:38 -0000
@@ -32,40 +32,35 @@
                -I$(MESADRVSRCDIR)/common
    X_INCLUDES = -I$(XINCLUDESRC) -I$(EXTINCSRC)
 
-   COMMONSRCS = $(MESADRVCOMMONBUILDDIR)hwlog.c \
-               $(MESADRVCOMMONBUILDDIR)mm.c \
-               $(MESADRVCOMMONBUILDDIR)utils.c \
-               $(MESADRVCOMMONBUILDDIR)vblank.c \
-               $(MESADRVCOMMONBUILDDIR)texmem.c \
-               $(MESADRVCOMMONBUILDDIR)xmlconfig.c
+       MMSRC = $(MESADRVCOMMONBUILDDIR)mm.c
+     UTILSSRC = $(MESADRVCOMMONBUILDDIR)utils.c
+    TEXMEMSRC = $(MESADRVCOMMONBUILDDIR)texmem.c
+    VBLANKSRC = $(MESADRVCOMMONBUILDDIR)vblank.c
+ XMLCONFIGSRC = $(MESADRVCOMMONBUILDDIR)xmlconfig.c
 
-   COMMONOBJS = $(MESADRVCOMMONBUILDDIR)hwlog.o \
-               $(MESADRVCOMMONBUILDDIR)mm.o \
-               $(MESADRVCOMMONBUILDDIR)utils.o \
-               $(MESADRVCOMMONBUILDDIR)vblank.o \
-               $(MESADRVCOMMONBUILDDIR)texmem.o \
-               $(MESADRVCOMMONBUILDDIR)xmlconfig.o
+       MMOBJ = $(MESADRVCOMMONBUILDDIR)mm.o
+     UTILSOBJ = $(MESADRVCOMMONBUILDDIR)utils.o
+    TEXMEMOBJ = $(MESADRVCOMMONBUILDDIR)texmem.o
+    VBLANKOBJ = $(MESADRVCOMMONBUILDDIR)vblank.o
+ XMLCONFIGOBJ = $(MESADRVCOMMONBUILDDIR)xmlconfig.o
 
-   COMMONUOBJS = $(MESADRVCOMMONBUILDDIR)unshared/hwlog.o \
-               $(MESADRVCOMMONBUILDDIR)unshared/mm.o \
-               $(MESADRVCOMMONBUILDDIR)unshared/utils.o \
-               $(MESADRVCOMMONBUILDDIR)unshared/vblank.o \
-               $(MESADRVCOMMONBUILDDIR)unshared/texmem.o \
-               $(MESADRVCOMMONBUILDDIR)unshared/xmlconfig.o
+       MMUOBJ = $(MESADRVCOMMONBUILDDIR)unshared/mm.o
+    UTILSUOBJ = $(MESADRVCOMMONBUILDDIR)unshared/utils.o
+   TEXMEMUOBJ = $(MESADRVCOMMONBUILDDIR)unshared/texmem.o
+   VBLANKUOBJ = $(MESADRVCOMMONBUILDDIR)unshared/vblank.o
+XMLCONFIGUOBJ = $(MESADRVCOMMONBUILDDIR)unshared/xmlconfig.o
 
-   COMMONDOBJS = $(MESADRVCOMMONBUILDDIR)debugger/hwlog.o \
-               $(MESADRVCOMMONBUILDDIR)debugger/mm.o \
-               $(MESADRVCOMMONBUILDDIR)debugger/utils.o \
-               $(MESADRVCOMMONBUILDDIR)debugger/vblank.o \
-               $(MESADRVCOMMONBUILDDIR)debugger/texmem.o \
-               $(MESADRVCOMMONBUILDDIR)debugger/xmlconfig.o
+       MMDOBJ = $(MESADRVCOMMONBUILDDIR)debugger/mm.o
+    UTILSDOBJ = $(MESADRVCOMMONBUILDDIR)debugger/utils.o
+   TEXMEMDOBJ = $(MESADRVCOMMONBUILDDIR)debugger/texmem.o
+   VBLANKDOBJ = $(MESADRVCOMMONBUILDDIR)debugger/vblank.o
+XMLCONFIGDOBJ = $(MESADRVCOMMONBUILDDIR)debugger/xmlconfig.o
 
-   COMMONPOBJS = $(MESADRVCOMMONBUILDDIR)profiled/hwlog.o \
-               $(MESADRVCOMMONBUILDDIR)profiled/mm.o \
-               $(MESADRVCOMMONBUILDDIR)profiled/utils.o \
-               $(MESADRVCOMMONBUILDDIR)profiled/vblank.o \
-               $(MESADRVCOMMONBUILDDIR)profiled/texmem.o \
-               $(MESADRVCOMMONBUILDDIR)profiled/xmlconfig.o
+       MMPOBJ = $(MESADRVCOMMONBUILDDIR)profiled/mm.o
+    UTILSPOBJ = $(MESADRVCOMMONBUILDDIR)profiled/utils.o
+   TEXMEMPOBJ = $(MESADRVCOMMONBUILDDIR)profiled/texmem.o
+   VBLANKPOBJ = $(MESADRVCOMMONBUILDDIR)profiled/vblank.o
+XMLCONFIGPOBJ = $(MESADRVCOMMONBUILDDIR)profiled/xmlconfig.o
 
 #ifdef NeedToLinkMesaSrc
 LinkSourceFile(hwlog.c, $(MESADRVSRCDIR)/common)
Index: common/mm.c
===================================================================
RCS file: /cvs/dri/xc/xc/lib/GL/mesa/src/drv/common/mm.c,v
retrieving revision 1.9
diff -u -r1.9 mm.c
--- common/mm.c 26 Sep 2003 13:52:43 -0000      1.9
+++ common/mm.c 16 Oct 2003 10:55:38 -0000
@@ -27,7 +27,6 @@
 #include <stdio.h>
 
 #include "mm.h"
-#include "hwlog.h"
 
 
 void mmDumpMemInfo( memHeap_t *heap )
Index: ffb/Imakefile
===================================================================
RCS file: /cvs/dri/xc/xc/lib/GL/mesa/src/drv/ffb/Imakefile,v
retrieving revision 1.14
diff -u -r1.14 Imakefile
--- ffb/Imakefile       25 Mar 2003 12:14:21 -0000      1.14
+++ ffb/Imakefile       16 Oct 2003 10:55:38 -0000
@@ -43,6 +43,8 @@
                $(GLXLIBSRC)/dri/drm/xf86drmRandom.o \
                $(GLXLIBSRC)/dri/drm/xf86drmSL.o
 
+   COMMONOBJS = $(MMOBJ)
+
 #ifdef GlxSoProf
        LOSRCS = ../../../../lowpc.c
        HISRCS = ../../../../highpc.c
Index: gamma/Imakefile
===================================================================
RCS file: /cvs/dri/xc/xc/lib/GL/mesa/src/drv/gamma/Imakefile,v
retrieving revision 1.33
diff -u -r1.33 Imakefile
--- gamma/Imakefile     25 Mar 2003 12:16:44 -0000      1.33
+++ gamma/Imakefile     16 Oct 2003 10:55:38 -0000
@@ -43,6 +43,8 @@
                $(GLXLIBSRC)/dri/drm/xf86drmRandom.o \
                $(GLXLIBSRC)/dri/drm/xf86drmSL.o
 
+   COMMONOBJS = $(MMOBJ)
+
 #ifdef GlxSoProf
        LOSRCS = ../../../../lowpc.c
        HISRCS = ../../../../highpc.c
Index: i810/Imakefile
===================================================================
RCS file: /cvs/dri/xc/xc/lib/GL/mesa/src/drv/i810/Imakefile,v
retrieving revision 1.32
diff -u -r1.32 Imakefile
--- i810/Imakefile      25 Mar 2003 12:47:14 -0000      1.32
+++ i810/Imakefile      16 Oct 2003 10:55:39 -0000
@@ -43,6 +43,8 @@
                $(GLXLIBSRC)/dri/drm/xf86drmRandom.o \
                $(GLXLIBSRC)/dri/drm/xf86drmSL.o
 
+   COMMONOBJS = $(MMOBJ) $(UTILSOBJ) $(TEXMEMOBJ)
+
 #ifdef GlxSoProf
        LOSRCS = ../../../../lowpc.c
        HISRCS = ../../../../highpc.c
Index: i830/Imakefile
===================================================================
RCS file: /cvs/dri/xc/xc/lib/GL/mesa/src/drv/i830/Imakefile,v
retrieving revision 1.9
diff -u -r1.9 Imakefile
--- i830/Imakefile      25 Mar 2003 13:20:26 -0000      1.9
+++ i830/Imakefile      16 Oct 2003 10:55:39 -0000
@@ -40,6 +40,8 @@
                $(GLXLIBSRC)/dri/drm/xf86drmRandom.o \
                $(GLXLIBSRC)/dri/drm/xf86drmSL.o
 
+   COMMONOBJS = $(MMOBJ) $(UTILSOBJ) $(TEXMEMOBJ)
+
 #ifdef GlxSoProf
        LOSRCS = ../../../../lowpc.c
        HISRCS = ../../../../highpc.c
Index: mga/Imakefile
===================================================================
RCS file: /cvs/dri/xc/xc/lib/GL/mesa/src/drv/mga/Imakefile,v
retrieving revision 1.34
diff -u -r1.34 Imakefile
--- mga/Imakefile       9 Oct 2003 09:55:58 -0000       1.34
+++ mga/Imakefile       16 Oct 2003 10:55:39 -0000
@@ -44,6 +44,8 @@
                $(GLXLIBSRC)/dri/drm/xf86drmRandom.o \
                $(GLXLIBSRC)/dri/drm/xf86drmSL.o
 
+   COMMONOBJS = $(MMOBJ) $(UTILSOBJ) $(TEXMEMOBJ) $(VBLANKOBJ) $(XMLCONFIGOBJ)
+
 #ifdef GlxSoProf
        LOSRCS = ../../../../lowpc.c
        HISRCS = ../../../../highpc.c
Index: r128/Imakefile
===================================================================
RCS file: /cvs/dri/xc/xc/lib/GL/mesa/src/drv/r128/Imakefile,v
retrieving revision 1.29
diff -u -r1.29 Imakefile
--- r128/Imakefile      9 Oct 2003 09:55:58 -0000       1.29
+++ r128/Imakefile      16 Oct 2003 10:55:39 -0000
@@ -43,6 +43,8 @@
                $(GLXLIBSRC)/dri/drm/xf86drmRandom.o \
                $(GLXLIBSRC)/dri/drm/xf86drmSL.o
 
+   COMMONOBJS = $(MMOBJ) $(UTILSOBJ) $(TEXMEMOBJ) $(VBLANKOBJ) $(XMLCONFIGOBJ)
+
 #ifdef GlxSoProf
        LOSRCS = ../../../../lowpc.c
        HISRCS = ../../../../highpc.c
Index: r200/Imakefile
===================================================================
RCS file: /cvs/dri/xc/xc/lib/GL/mesa/src/drv/r200/Imakefile,v
retrieving revision 1.4
diff -u -r1.4 Imakefile
--- r200/Imakefile      9 Oct 2003 09:55:58 -0000       1.4
+++ r200/Imakefile      16 Oct 2003 10:55:39 -0000
@@ -42,6 +42,8 @@
                $(GLXLIBSRC)/dri/drm/xf86drmRandom.o \
                $(GLXLIBSRC)/dri/drm/xf86drmSL.o
 
+   COMMONOBJS = $(MMOBJ) $(UTILSOBJ) $(TEXMEMOBJ) $(VBLANKOBJ) $(XMLCONFIGOBJ)
+
 #ifdef GlxSoProf
        LOSRCS = ../../../../lowpc.c
        HISRCS = ../../../../highpc.c
Index: radeon/Imakefile
===================================================================
RCS file: /cvs/dri/xc/xc/lib/GL/mesa/src/drv/radeon/Imakefile,v
retrieving revision 1.17
diff -u -r1.17 Imakefile
--- radeon/Imakefile    9 Oct 2003 09:55:58 -0000       1.17
+++ radeon/Imakefile    16 Oct 2003 10:55:39 -0000
@@ -42,6 +42,8 @@
                $(GLXLIBSRC)/dri/drm/xf86drmRandom.o \
                $(GLXLIBSRC)/dri/drm/xf86drmSL.o
 
+   COMMONOBJS = $(MMOBJ) $(UTILSOBJ) $(TEXMEMOBJ) $(VBLANKOBJ) $(XMLCONFIGOBJ)
+
 #ifdef GlxSoProf
        LOSRCS = ../../../../lowpc.c
        HISRCS = ../../../../highpc.c
Index: sis/Imakefile
===================================================================
RCS file: /cvs/dri/xc/xc/lib/GL/mesa/src/drv/sis/Imakefile,v
retrieving revision 1.18
diff -u -r1.18 Imakefile
--- sis/Imakefile       6 Sep 2003 00:02:07 -0000       1.18
+++ sis/Imakefile       16 Oct 2003 10:55:41 -0000
@@ -46,6 +46,8 @@
                $(GLXLIBSRC)/dri/drm/xf86drmRandom.o \
                $(GLXLIBSRC)/dri/drm/xf86drmSL.o
 
+   COMMONOBJS = $(UTILSOBJ)
+
 #ifdef GlxSoProf
        LOSRCS = ../../../../lowpc.c
        HISRCS = ../../../../highpc.c

Reply via email to