If you're not using a variant of Unix with X11, see the Supported Systems and Drivers section for instructions.
There are two methods for building Mesa on Unix/X11 systems:
make
and you'll see a list of supported
system configurations. Pick one and type make
config.
More details below.
NOTE: The GLUT library and demonstrations programs are in the MesaDemos-x.y.z.tar.gz file. If you don't have GLUT or you want to run some demos, download the MesaDemos package too.
In either case, building Mesa entails the following:
demos, xdemos, samples
and book
(if you downloaded the Mesa demos package.)
0. If you've downloaded Mesa via CVS there will not be a "configure" script. You'll have to run the "bootstrap" script first. This script may not work on any OS other than Linux. You'll need these programs to run the bootstrap script:
autoconf 2.50 automake 1.4-p2 libtool 1.4
1. Run the configure script
./configure [options]
For Linux, it is recommended that you use:
./configure --prefix=/usrSo that the headers and libs are located according to the Linux/OpenGL standard spec at http://oss.sgi.com/projects/ogl-sample/ABI/
For Red Hat 8.0, Mandrake 9.1 and other Linux distros, you may have to use the following:
export LDFLAGS="-lstdc++" ; ./configure --prefix=/usr or setenv LDFLAGS -lstdc++ ; ./configure --prefix=/usr
This works around a problem when building the GLU library. It needs to be linked with the C++ runtime library, but libtool (for some reason) doesn't do this.
Possible options are: --prefix=DIR The toplevel directory of the hierachy in which Mesa will be installed (DIR/include,DIR/lib etc.). The default is "/usr/local". --sysconfdir=DIR The directory where Mesa configuration files will be stored. The default is "$prefix/etc". You may want to overwrite the default with --sysconfdir=/etc. --enable-static Enable building of static libraries. Static libraries are NOT built by default. --disable-shared Disable building of shared libraries. Shared libraries are built by default. --with-pic --without-pic In normal operation, libtool will build shared libraries from PIC objects and static archives from non-PIC objects, except where one or the other is not provided by the target host. By specifying --with-pic you are asking libtool to build static archives from PIC objects, and similarly by specifying --without-pic you are asking libtool to build shared libraries from non-PIC objects. libtool will only honour this flag where it will produce a working library, otherwise it reverts to the default. --enable-debug Enable debugging messages (disabled by default). --enable-profile Enable profiling (disabled by default). --disable-optimize Disable extra optimizations (enabled by default, i.e., optimize for maximum performance). --enable-warn Enable extended compiler warnings (disabled by default). --enable-x86[=ARG] --disable-x86 Enable/disable x86 assembler support to speed up Mesa (autodetected by default). You may set `on' or `off'. --enable-3dnow[=ARG] --disable-3dnow Enable/disable 3Dnow support to speed up Mesa (autodetected by default). You may set `on' or `off'. --enable-mmx[=ARG] --disable-mmx Enable/disable MMX support to speed up Mesa (autodetected by default). You may set `on' or `off'. --enable-sse[=ARG] --disable-sse Enable/disable SSE support to speed up Mesa (autodetected by default). You may set `on' or `off'. If you have a PentiumIII and want to use SSE make sure you have the PIII Linux kernel-patch installed or things will fail! You can get the patch from http://www.redhat.com/~dledford/linux_kernel.html --with-glide[=DIR] --without-glide Enable/disable support for Glide (disabled by default). DIR is the installation directory of Glide. If Glide cannot be found, the driver won't be built. --with-glut[=DIR] --without-glut Don't/use already-installed GLUT (autodetected by default). DIR is the installation directory of Glut. If GLUT cannot be found, the version shipped with Mesa will be built. --with-ggi[=DIR] --without-ggi Enable/disable support for GGI (autodetected by default). DIR is the installation directory of GGI. If GGI cannot be found, the driver won't be built. --disable-ggi-fbdev Don't build the GGI fbdev target (autodetected by default). --disable-ggi-genkgi Don't build the GGI generic KGI driver (autodetected by default). --disable-ggi-savage4 Don't build the GGI Savage4 KGI driver (autodetected by default). --disable-osmesa Disable OSmesa (offscreen rendering) support (enabled by default). --with-svga[=DIR] --without-svga Enable/disable support for SVGALib (autodetected by default). DIR is the installation directory of SVGALib. If SVGALib cannot be found, the driver won't be built. --x-includes=DIR Search for the X include files in DIR. --x-libraries=DIR Search for the X library files in DIR.
User specific compiler options can be set using the shell variable CFLAGS. For instance,
CFLAGS="-g -O2" ./configure
(on some systems: env CFLAGS="-g -O2" ./configure) sets the compiler flags to "-g -O2".
For more options run "./configure --help" and read INSTALL.GNU.
2. To build the Mesa libraries run:
make
(on some systems you may need to run gmake
or
gnumake
instead)
When finished, libGL.so will be in src/.libs/ and libGLU.so will be in si-glu/.libs/, etc.
Optionally, you can strip the libraries using
make strip
Now make sure that you have the permissions to install Mesa in the specified directories, for example, by becoming super user ("su") Then run:
make install
Mesa is now installed. Please don't move the installed files but rerun all installation steps if you want to use other directories.
3.To test whether Mesa works properly you might want to run the Mesa demos:
make check
Builds all demos.
make exec
Builds and executes all demos.
This procedure usually works when ./configure ; make
fails.
Note: If you tried ./configure ; make
but it failed,
first copy the top-level Makefile.X11
file over
Makefile
.
Also Note: if you've obtained Mesa directly from CVS you'll have to copy the top-level Makefile.X11 to Makefile.
Just type make
alone.
You'll see a list of supported system configurations.
Choose one and type make
config
(for example make linux-x86
).
The Mesa libraries and demo programs will be compiled.
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)
On Linux and similar operating systems the LD_LIBRARY_PATH
environment variable can be used to indicate a list of directories to
search for shared libraries.
If you don't install Mesa in /usr/lib/
you may have to
set the LD_LIBRARY_PATH
variable in order to use the Mesa
libraries.