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