When I build SL viewer on my Fedora box as:
python develop.py --standalone build
it fails with a message:
/home/alissa/1.21.4/linden/indra/llrender/llrender.cpp:115: error: 'glActiveTextureARB' was not declared in this scope
Non-standalone build is OK.
After examining, I found:
- My PC has an NVIDIA graphics card, so I downloaded and installed the NVIDIA graphics driver for X11. The installer replaced the original (Fedora-supplied) GL/gl.h and GL/glext.h with NVIDIA's (among other files.)
- Linden supplied GL/gl.h and GL/glext.h are slightly different from NVIDIA's. In particular, the symbol glActiveTextureARB appears both in gl.h and glext.h in Linden supplied set, but only in glext.h in NIVIDIA's.
- In the NVIDIA's glext.h, the declaration for glActiveTextureARB is in a block enclosed in "#ifdef GL_EXT_PROTOTYPES ... #endif". In llrender/llglheaders.h, the macro GL_EXT_PROTOTYPES is defined only if LL_MESA is defined, that is, it is not defined in my case.
So, I tried to define GL_EXT_PROTOTYPES... but it generates a lot of errors. That's because, if I define GL_EXT_PROTOTYPES, whole sets of function prototypes for GLEXT APIs are declared, but in llglheaders.h, many of those function names are declared as variables (to an entry points to the function), so the compiler complains about the name crushes... I can't define GL_EXT_PROTOTYPES.
As a workaround, I put "extern void glActiveTextureARB(GLenum);" in llglheaders.h... but I have a feeling this is not what we should do!