Mesa uses a rather conventional Makefile system. A GNU autoconf/automake system used to be included, but was discarded in Mesa 5.1 because:
If someone strongly feels that Mesa should have a autoconf/automake system and wants to contribute one and maintain it, we'll consider adding it again.
Note: if you've obtained Mesa through CVS, do this first:
cd Mesa-newtree cp Makefile.X11 Makefile
Now, just type make. You'll see a list of supported system configurations. Choose one from the list (such as linux-x86), and type:
make linux-x86
That's it.
When compilation has finished, look in the top-level lib/ directory. You'll see a set of library files similar to this:
lrwxrwxrwx 1 brian users 10 Sep 4 17:55 libGL.so -> libGL.so.1* lrwxrwxrwx 1 brian users 19 Sep 4 17:55 libGL.so.1 -> libGL.so.1.4.050100* -rwxr-xr-x 1 brian users 13940317 Sep 4 17:55 libGL.so.1.4.050100* lrwxrwxrwx 1 brian users 11 Sep 4 17:54 libGLU.so -> libGLU.so.1* lrwxrwxrwx 1 brian users 20 Sep 4 17:54 libGLU.so.1 -> libGLU.so.1.3.050100* -rwxr-xr-x 1 brian users 324746 Sep 3 13:54 libGLU.so.1.1* -rwxr-xr-x 1 brian users 2830539 Sep 4 17:54 libGLU.so.1.3.050100* lrwxrwxrwx 1 brian users 12 Sep 4 17:53 libglut.so -> libglut.so.3* lrwxrwxrwx 1 brian users 16 Sep 4 17:53 libglut.so.3 -> libglut.so.3.7.1* -rwxr-xr-x 1 brian users 2426683 Sep 4 17:53 libglut.so.3.7.1*
libGL is the main OpenGL library (i.e. Mesa).
libGLU is the OpenGL Utility library.
libglut is the GLUT library.
If you downloaded/unpacked the MesaDemos-x.y.z.tar.gz archive or obtained Mesa from CVS, the progs/ directory will contain a bunch of demonstration programs.
Before running a demo, you may have to set an environment variable (such as LD_LIBRARY_PATH on Linux) to indicate where the libraries are located. For example:
cd into the Mesa lib/ directory.
setenv LD_LIBRARY_PATH ${cwd} (if using csh or tcsh shell)
or,
export LD_LIBRARY_PATH=${PWD} (if using bash or sh shell)
Next, change to the Mesa/demos/ directory:
cd ../progs/demos
Run a demo such as gears:
./gears
If this doesn't work, try the Mesa/progs/xdemos/glxinfo program and see that it prints the expected Mesa version number.
If you're using Linux or a similar OS, verify that the demo program is being linked with the proper library files:
ldd gears
You should see something like this:
libglut.so.3 => /home/brian/Mesa/lib/libglut.so.3 (0x40013000) libGLU.so.1 => /home/brian/Mesa/lib/libGLU.so.1 (0x40051000) libGL.so.1 => /home/brian/Mesa/lib/libGL.so.1 (0x400e0000) libc.so.6 => /lib/i686/libc.so.6 (0x42000000) libm.so.6 => /lib/i686/libm.so.6 (0x403da000) libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x403fc000) libXmu.so.6 => /usr/X11R6/lib/libXmu.so.6 (0x404da000) libXt.so.6 => /usr/X11R6/lib/libXt.so.6 (0x404f1000) libXi.so.6 => /usr/X11R6/lib/libXi.so.6 (0x40543000) libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x4054b000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x405fd000) libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x40605000) libpthread.so.0 => /lib/i686/libpthread.so.0 (0x40613000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) libdl.so.2 => /lib/libdl.so.2 (0x40644000) libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x40647000) libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x40650000)
Retrace your steps if this doesn't look right.
The standard location for the OpenGL header files on Unix-type systems is
in /usr/include/GL/
.
The standard location for the libraries is /usr/lib/
.
For more information see, the
Linux/OpenGL ABI specification.
If you'd like Mesa to co-exist with another implementation of OpenGL that's
already installed, you'll have to choose different directories, like
/usr/local/include/GL/
and /usr/local/lib/
.
To install the Mesa headers, do this:
cp -r include/GL /usr/include
To install the Mesa libraries, do this:
cp -pd lib/* /usr/lib
(The -pd options preserve symbolic links)
If you install the libraries in a non-standard location you can use LD_LIBRARY_PATH (on Linux) to switch between the Mesa libs and another vendor libs whenever you want. This is a handy way to compare multiple OpenGL implementations.
Please see the README.WIN32 file.
Please see the README.VMS file.
Documentation for other environments (some may be very out of date):