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