In your message of 23 March 2000 you write:

> > 4) Require oglbase apps to #include only gl.h
> >    gl.h must include glext.h
> >    libGL.so must contain 'enough' dummy functions
> >    for extensions that it does not support to enable
> >    legacy and newly ported applications to link.
> > 
> >       * This won't work for either Mesa/XFree86 OR XiG
> >         right now since neither includes glext.h from gl.h.
> >       * There are 'issues' about keeping
> >         libGL.so up to date and consistant.
> >       * There is still a possiblity of a newly ported
> >         program failing to link - but most legacy apps
> >         should be OK if we are careful with libGL.so.
> 
> I believe that is actually the option that best supports
> legacy apps.
> 
> The great thing is that if <GL/gl.h> includes <GL/glext.h>, the
> need for GL_HAS_GLEXT goes away.
> 
> This option *will* work with today and yesterday's Mesa/XFree86 OR
> XiG because they will be using an old <GL/gl.h> that has all the
> extension prototypes and defines.  With a new <GL/gl.h>, the
> extension declarations will likewise be found because of the
> automatic inclusion of <GL/glext.h> from <GL/gl.h>.
> 
> I agree that there are issues for legacy maintence, but these
> are issues (that in the case of Mesa) Brian is clearly aware of
> and sounds quite willing to shoulder.
> 
> I'm not sure I understand the "failing to link" issue.

Let's explain this quickly. Assuming you reference a symbol called
glFunctionXYZ() from your main binary, which is not directly in the
symbol table of your shared libGL.so, then you'll see this error:

---
egcs -o projtex -O3 -mpentium -mieee-fp -fbuiltin -pipe
-L/usr/X11R6/lib -L/usr/dt/lib projtex.o texture.o -lglut -lGLU -lGL
-lXmu -lXt -lSM -lICE -lXext -lX11 -lXi -lXext -lX11 -lm -L/usr/dt/lib
    -Wl,-rpath,/usr/dt/lib:/usr/X11R6/lib
projtex.o: In function `main':
projtex.o(.text+0x2005): undefined reference to `glFunctionXYZ'
projtex.o: In function `usage':
projtex.o(.text+0x27c1): undefined reference to `glFunctionXYZ'
collect2: ld returned 1 exit status
make: *** [projtex] Error 1
gnom:/net/xeno/export/src/X11/WAFFLE/OGL/tmp/glut-3.7/progs/advanced# 
---


This means that if gl.h includes glext.h, then all the extension
present defines are defined (like GL_ARB_multitexture). If you then
use a direct reference to a function from this extension without your
application then it will not link. This is iregardless of whether the
libGL.so could synthesize the neccessary api entries at runtime.

- Thomas
-- 
             Thomas Roell   /\         An imperfect plan executed violently
             Xi Graphics   /  \/\ _     is far superior to a perfect plan. 
         [EMAIL PROTECTED]   /   /  \ \     
                         / Oelch! \ \             George Patton

Reply via email to