<HTML> <TITLE>Compilation and Installation</TITLE> <BODY text="#000000" bgcolor="#55bbff" link="#111188"> <H1>Compilation and Installation for Unix/X11</H1> <p> If you're not using a variant of Unix with X11, see the <a href="systems.html">Supported Systems and Drivers</a> section for instructions. </p> <p> There are two methods for building Mesa on Unix/X11 systems: </p> <dl> <dt><a href="#new">NEW-STYLE</a><dt> <dd> Basically, type "./configure" followed by "make" This <em>should</em> work on most Unix-like operating systems. Unfortunately, autoconf/automake seems to seldom work reliably on non-Linux systems. For that reason, the old-style make system is still supported (and is the preferred method of the Mesa developers). </dd> <br> <dt><a href="#old">OLD-STYLE</a><dt> <dd> Simply type <code>make</code> and you'll see a list of supported system configurations. Pick one and type <code>make</code> <em>config</em>. More details below. </dd> </dl> <p> <B>NOTE</b>: 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. </p> <p> In either case, building Mesa entails the following: <p> <ul> <li>Compiling libGL, the OpenGL-replacement library. <li>Compiling libGLU, the OpenGL Utility library. <li>Compiling libglut, the GLUT library (if you downloaded the Mesa demos package) <li>Compiling the demonstration programs in the directories: <code>demos, xdemos, samples</code> and <code>book</code> (if you downloaded the Mesa demos package.) </ul> <a name="new"> <H2>NEW-STYLE compilation and installation</H2> <p> <b> 0.</b> 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: </p> <pre> autoconf 2.50 automake 1.4-p2 libtool 1.4 </pre> <p> <b>1.</b> Run the configure script </p> <pre> ./configure [options] </pre> <p> For Linux, it is recommended that you use: </p> <pre> ./configure --prefix=/usr </pre> So that the headers and libs are located according to the Linux/OpenGL standard spec at http://oss.sgi.com/projects/ogl-sample/ABI/ </p> <p> For Red Hat 8.0, Mandrake 9.1 and other Linux distros, you may have to use the following: </p> <pre> export LDFLAGS="-lstdc++" ; ./configure --prefix=/usr or setenv LDFLAGS -lstdc++ ; ./configure --prefix=/usr </pre> <p> 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. </p> <pre> 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. </pre> <p> User specific compiler options can be set using the shell variable CFLAGS. For instance, </p> <pre> CFLAGS="-g -O2" ./configure </pre> <p> (on some systems: env CFLAGS="-g -O2" ./configure) sets the compiler flags to "-g -O2". </p> <p> For more options run "./configure --help" and read INSTALL.GNU. </p> <p> <b>2.</b> To build the Mesa libraries run: </p> <pre> make </pre> <p>(on some systems you may need to run <code>gmake</code> or <code>gnumake</code> instead) </p> <p> When finished, libGL.so will be in src/.libs/ and libGLU.so will be in si-glu/.libs/, etc. </p> <p> Optionally, you can strip the libraries using </p> <pre> make strip </pre> <p> Now make sure that you have the permissions to install Mesa in the specified directories, for example, by becoming super user ("su") Then run: </p> <pre> make install </pre> <p> Mesa is now installed. Please don't move the installed files but rerun all installation steps if you want to use other directories. </p> <p> <b>3.</b>To test whether Mesa works properly you might want to run the Mesa demos: </p> <pre> make check </pre> <p> Builds all demos. </p> <pre> make exec </pre> <p> Builds and executes all demos. </p> <a name="old"> <H2>OLD-STYLE compilation and installation</H2> <p> This procedure usually works when <code>./configure ; make</code> fails. </p> <p> <b>Note</b>: If you tried <code>./configure ; make</code> but it failed, first copy the top-level <code>Makefile.X11</code> file over <code>Makefile</code>. </p> <p> Just type <code>make</code> alone. You'll see a list of supported system configurations. Choose one and type <code>make</code> <em>config</em> (for example <code>make linux-x86</code>). The Mesa libraries and demo programs will be compiled. </p> <H3>Header and library files</H3> <p> The standard location for the OpenGL header files on Unix-type systems is in <code>/usr/include/GL/</code>. The standard location for the libraries is <code>/usr/lib/</code>. For more information see, the <a href="http://oss.sgi.com/projects/ogl-sample/ABI/" target="_parent"> Linux/OpenGL ABI specification</a>. </p> <p> 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 <code>/usr/local/include/GL/</code> and <code>/usr/local/lib/</code>. </p> <p> To install the Mesa headers, do this: <pre> cp -r include/GL /usr/include </pre> <p> To install the Mesa libraries, do this: </p> <pre> cp -pd lib/* /usr/lib (The -pd options preserve symbolic links) </pre> <H3>LD_LIBRARY_PATH</H3> <p> On Linux and similar operating systems the <code>LD_LIBRARY_PATH</code> environment variable can be used to indicate a list of directories to search for shared libraries. If you don't install Mesa in <code>/usr/lib/</code> you may have to set the <code>LD_LIBRARY_PATH</code> variable in order to use the Mesa libraries. </p> </body> </html>