r600g/compute: Quick exit if there's nothing to add to the pool
[mesa.git] / docs / install.html
index 228100ec731c8bc043bd3826bf9aea27ab43fb6f..f12425fcb683c426e9881655215cecd4d478359c 100644 (file)
-<HTML>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+  <meta http-equiv="content-type" content="text/html; charset=utf-8">
+  <title>Compiling and Installing</title>
+  <link rel="stylesheet" type="text/css" href="mesa.css">
+</head>
+<body>
 
 
-<TITLE>Compiling and Installing</TITLE>
+<div class="header">
+  <h1>The Mesa 3D Graphics Library</h1>
+</div>
 
 
-<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+<iframe src="contents.html"></iframe>
+<div class="content">
 
 
-<BODY>
-
-
-<H1>Compiling and Installing</H1>
+<h1>Compiling and Installing</h1>
 
 <ol>
 
 <ol>
-<li><a href="#unix-x11">Unix / X11</a>
+<li><a href="#prereq-general">Prerequisites for building</a>
   <ul>
   <ul>
-  <li><a href="#prereq-general">General prerequisites for building</a>
-  <li><a href="#prereq-dri">Prerequisites for DRI and hardware acceleration</a>
-  <li><a href="#autoconf">Building with autoconf</a>
-  <li><a href="#traditional">Building with traditional Makefiles</a>
-  <li><a href="#libs">The Libraries</a>
-  <li><a href="#install">Installing the header and library files
-  <li><a href="#pkg-config">Building OpenGL programs with pkg-config
+  <li><a href="#prereq-general">General prerequisites</a>
+  <li><a href="#prereq-dri">For DRI and hardware acceleration</a>
   </ul>
   </ul>
-<li><a href="#windows">Windows</a>
-<li><a href="#scons">Building with SCons</a>
-<li><a href="#other">Other</a>
+<li><a href="#autoconf">Building with autoconf (Linux/Unix/X11)</a>
+<li><a href="#scons">Building with SCons (Windows/Linux)</a>
+<li><a href="#other">Building for other systems</a>
+<li><a href="#libs">Library Information</a>
+<li><a href="#pkg-config">Building OpenGL programs with pkg-config</a>
 </ol>
 </ol>
-<br>
-
 
 
-<a name="unix-x11">
-<H2>1. Unix/X11 Compilation and Installation</H1>
 
 
+<h1 id="prereq-general">1. Prerequisites for building</h1>
 
 
-<a name="prereq-general">
-<h3>1.1 General prerequisites for building</h3>
-
+<h2>1.1 General</h2>
 <ul>
 <ul>
+<li><a href="http://www.python.org/">Python</a> - Python is required.
+Version 2.6.4 or later should work.
+</li>
+<br>
+<li><a href="http://www.scons.org/">SCons</a> is required for building on
+Windows and optional for Linux (it's an alternative to autoconf/automake.)
+</li>
+<br>
 <li>lex / yacc - for building the GLSL compiler.
 <li>lex / yacc - for building the GLSL compiler.
+<br>
+<br>
 On Linux systems, flex and bison are used.
 Versions 2.5.35 and 2.4.1, respectively, (or later) should work.
 On Linux systems, flex and bison are used.
 Versions 2.5.35 and 2.4.1, respectively, (or later) should work.
-</li>
-<li>python - Python is needed for building the Gallium components.
-Version 2.6.4 or later should work.
+<br>
+<br>
+On Windows with MinGW, install flex and bison with:
+<pre>mingw-get install msys-flex msys-bison</pre>
+For MSVC on Windows, you can find flex/bison programs on the
+<a href="ftp://ftp.freedesktop.org/pub/mesa/windows-utils/">Mesa ftp site</a>.
 </li>
 </ul>
 
 
 </li>
 </ul>
 
 
-<a name="prereq-dri">
-<h3>1.2 Prerequisites for DRI and hardware acceleration</h3>
+<h3 id="prereq-dri">1.2 For DRI and hardware acceleration</h3>
 
 <p>
 The following are required for DRI-based hardware acceleration with Mesa:
 </p>
 
 <ul>
 
 <p>
 The following are required for DRI-based hardware acceleration with Mesa:
 </p>
 
 <ul>
-<li><a href="http://xorg.freedesktop.org/releases/individual/proto/">dri2proto</a> version 1.99.3 or later
-<li>Linux 2.6.28
-<li><a href="http://dri.freedesktop.org/libdrm/" target="_parent">libDRM</a>
-version 2.4.15 or later
+<li><a href="http://xorg.freedesktop.org/releases/individual/proto/">
+dri2proto</a> version 2.6 or later
+<li><a href="http://dri.freedesktop.org/libdrm/">libDRM</a>
+version 2.4.33 or later
 <li>Xorg server version 1.5 or later
 <li>Xorg server version 1.5 or later
+<li>Linux 2.6.28 or later
 </ul>
 </ul>
-</p>
-
-
-<a name="autoconf">
-<h3>1.3 Building with Autoconf</h3>
-
 <p>
 <p>
-Mesa may be <a href="autoconf.html">built using autoconf</a>.
-This should work well on most GNU-based systems.
-If that fails the traditional Mesa build system is available.
+If you're using a fedora distro the following command should install all
+the needed dependencies:
+</p>
+<pre>
+  sudo yum install flex bison imake libtool xorg-x11-proto-devel libdrm-devel \
+  gcc-c++ xorg-x11-server-devel libXi-devel libXmu-devel libXdamage-devel git \
+  expat-devel llvm-devel
+</pre>
 
 
 
 
 
 
-<a name="traditional">
-<h3>1.4 Building with traditional Makefiles</h3>
+<h1 id="autoconf">2. Building with autoconf (Linux/Unix/X11)</h1>
 
 <p>
 
 <p>
-The traditional Mesa build system is based on a collection of pre-defined
-system configurations.
+The primary method to build Mesa on Unix systems is with autoconf.
 </p>
 </p>
+
 <p>
 <p>
-To see the list of configurations, just type <code>make</code>.
-Then choose a configuration from the list and type <code>make</code>
-<em>configname</em>.
+The general approach is the standard:
 </p>
 </p>
-
+<pre>
+  ./configure
+  make
+  sudo make install
+</pre>
 <p>
 <p>
-Mesa may be built in several different ways using the predefined configurations:
+But please read the <a href="autoconf.html">detailed autoconf instructions</a>
+for more details.
 </p>
 </p>
-<ul>
-<li><b><em>Stand-alone/Xlib mode</em></b> - Mesa will be compiled as
-a software renderer using Xlib to do all rendering.
-The libGL.so library will be a self-contained rendering library that will
-allow you to run OpenGL/GLX applications on any X server (regardless of
-whether it supports the GLX X server extension).
-You will <em>not</em> be able to use hardware 3D acceleration.
+
+
+
+<h1 id="scons">3. Building with SCons (Windows/Linux)</h1>
+
 <p>
 <p>
-To compile stand-alone Mesa type <code>make</code> in the top-level directory.
-You'll see a list of supported system configurations.
-Choose one from the list (such as linux-x86), and type:
+To build Mesa with SCons on Linux or Windows do
 </p>
 <pre>
 </p>
 <pre>
-    make linux-x86
+    scons
 </pre>
 </pre>
-<p>This will produce libGL.so and several other libraries</p>
-</li>
-
-<li><b><em>DRI/accelerated</em></b> - The DRI hardware drivers for
-accelerated OpenGL rendering (for ATI, Intel, Matrox, etc) will be built.
-The libGL.so library will support the GLX extension and will load/use
-the DRI hardware drivers.
-
+<p>
+The build output will be placed in
+build/<i>platform</i>-<i>machine</i>-<i>debug</i>/..., where <i>platform</i> is for
+example linux or windows, <i>machine</i> is x86 or x86_64, optionally followed
+by -debug for debug builds.
+</p>
 
 <p>
 
 <p>
-Build Mesa and the DRI hardware drivers by running
+To build Mesa with SCons for Windows on Linux using the MinGW crosscompiler toolchain do
 </p>
 <pre>
 </p>
 <pre>
-   make linux-dri
+    scons platform=windows toolchain=crossmingw machine=x86 mesagdi libgl-gdi
 </pre>
 <p>
 </pre>
 <p>
-There are also <code>linux-dri-x86</code>, <code>linux-dri-x86-64</code>, 
-and <code>linux-ppc</code> configurations which are optimized for those
-architectures.
+This will create:
 </p>
 </p>
+<ul>
+<li>build/windows-x86-debug/mesa/drivers/windows/gdi/opengl32.dll &mdash; Mesa + swrast, binary compatible with Windows's opengl32.dll
+<li>build/windows-x86-debug/gallium/targets/libgl-gdi/opengl32.dll &mdash; Mesa + Gallium + softpipe, binary compatible with Windows's opengl32.dll
+</ul>
 <p>
 <p>
-Make sure you have the prerequisite versions of DRM and Xserver mentioned
-above.
+Put them all in the same directory to test them.
 </p>
 
 </p>
 
-</li>
 
 
-</ul>
 
 
+<h1 id="other">4. Building for other systems</h1>
 
 <p>
 
 <p>
-Later, if you want to rebuild for a different configuration run
-<code>make realclean</code> before rebuilding.
+Documentation for other environments (some may be very out of date):
 </p>
 
 </p>
 
+<ul>
+<li><a href="README.VMS">README.VMS</a> - VMS
+<li><a href="README.CYGWIN">README.CYGWIN</a> - Cygwin
+<li><a href="README.WIN32">README.WIN32</a> - Win32
+</ul>
 
 
-<a name="libs">
-<h3>1.5 The libraries</h3>
+
+
+<h1 id="libs">5. Library Information</h1>
 
 <p>
 When compilation has finished, look in the top-level <code>lib/</code>
 
 <p>
 When compilation has finished, look in the top-level <code>lib/</code>
@@ -151,12 +163,6 @@ You'll see a set of library files similar to this:
 lrwxrwxrwx    1 brian    users          10 Mar 26 07:53 libGL.so -> libGL.so.1*
 lrwxrwxrwx    1 brian    users          19 Mar 26 07:53 libGL.so.1 -> libGL.so.1.5.060100*
 -rwxr-xr-x    1 brian    users     3375861 Mar 26 07:53 libGL.so.1.5.060100*
 lrwxrwxrwx    1 brian    users          10 Mar 26 07:53 libGL.so -> libGL.so.1*
 lrwxrwxrwx    1 brian    users          19 Mar 26 07:53 libGL.so.1 -> libGL.so.1.5.060100*
 -rwxr-xr-x    1 brian    users     3375861 Mar 26 07:53 libGL.so.1.5.060100*
-lrwxrwxrwx    1 brian    users          11 Mar 26 07:53 libGLU.so -> libGLU.so.1*
-lrwxrwxrwx    1 brian    users          20 Mar 26 07:53 libGLU.so.1 -> libGLU.so.1.3.060100*
--rwxr-xr-x    1 brian    users      549269 Mar 26 07:53 libGLU.so.1.3.060100*
-lrwxrwxrwx    1 brian    users          12 Mar 26 07:53 libglut.so -> libglut.so.3*
-lrwxrwxrwx    1 brian    users          16 Mar 26 07:53 libglut.so.3 -> libglut.so.3.7.1*
--rwxr-xr-x    1 brian    users      597754 Mar 26 07:53 libglut.so.3.7.1*
 lrwxrwxrwx    1 brian    users          14 Mar 26 07:53 libOSMesa.so -> libOSMesa.so.6*
 lrwxrwxrwx    1 brian    users          23 Mar 26 07:53 libOSMesa.so.6 -> libOSMesa.so.6.1.060100*
 -rwxr-xr-x    1 brian    users       23871 Mar 26 07:53 libOSMesa.so.6.1.060100*
 lrwxrwxrwx    1 brian    users          14 Mar 26 07:53 libOSMesa.so -> libOSMesa.so.6*
 lrwxrwxrwx    1 brian    users          23 Mar 26 07:53 libOSMesa.so.6 -> libOSMesa.so.6.1.060100*
 -rwxr-xr-x    1 brian    users       23871 Mar 26 07:53 libOSMesa.so.6.1.060100*
@@ -165,10 +171,6 @@ lrwxrwxrwx    1 brian    users          23 Mar 26 07:53 libOSMesa.so.6 -> libOSM
 <p>
 <b>libGL</b> is the main OpenGL library (i.e. Mesa).
 <br>
 <p>
 <b>libGL</b> is the main OpenGL library (i.e. Mesa).
 <br>
-<b>libGLU</b> is the OpenGL Utility library.
-<br>
-<b>libglut</b> is the GLUT library.
-<br>
 <b>libOSMesa</b> is the OSMesa (Off-Screen) interface library.
 </p>
 
 <b>libOSMesa</b> is the OSMesa (Off-Screen) interface library.
 </p>
 
@@ -177,8 +179,8 @@ If you built the DRI hardware drivers, you'll also see the DRI drivers:
 </p>
 <pre>
 -rwxr-xr-x   1 brian users 16895413 Jul 21 12:11 i915_dri.so
 </p>
 <pre>
 -rwxr-xr-x   1 brian users 16895413 Jul 21 12:11 i915_dri.so
+-rwxr-xr-x   1 brian users 16895413 Jul 21 12:11 i965_dri.so
 -rwxr-xr-x   1 brian users 11849858 Jul 21 12:12 r200_dri.so
 -rwxr-xr-x   1 brian users 11849858 Jul 21 12:12 r200_dri.so
--rwxr-xr-x   1 brian users 16050488 Jul 21 12:11 r300_dri.so
 -rwxr-xr-x   1 brian users 11757388 Jul 21 12:12 radeon_dri.so
 </pre>
 
 -rwxr-xr-x   1 brian users 11757388 Jul 21 12:12 radeon_dri.so
 </pre>
 
@@ -188,50 +190,7 @@ versions of libGL and device drivers.
 </p>
 
 
 </p>
 
 
-
-<a name="install">
-<H3>1.6 Installing the 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 Mesa's headers and libraries, run <code>make install</code>.
-But first, check the Mesa/configs/default file and examine the values
-of the <b>INSTALL_DIR</b> and <b>DRI_DRIVER_INSTALL_DIR</b> variables.
-Change them if needed, then run <code>make install</code>.
-</p>
-
-<p>
-The variable
-<b>DESTDIR</b> may also be used to install the contents to a temporary
-staging directory.
-This can be useful for package management.
-For example: <code>make install DESTDIR=/somepath/</code>
-</p>
-
-<p>
-Note: at runtime you can use the LD_LIBRARY_PATH environment variable
-(on Linux at least) to switch
-between the Mesa libraries and other vendor's libraries whenever you want.
-This is a handy way to compare multiple OpenGL implementations.
-</p>
-
-
-<a name="pkg-config">
-<H3>1.7 Building OpenGL programs with pkg-config</H3>
+<h1 id="pkg-config">6. Building OpenGL programs with pkg-config</h1>
 
 <p>
 Running <code>make install</code> will install package configuration files
 
 <p>
 Running <code>make install</code> will install package configuration files
@@ -252,76 +211,6 @@ For example, compiling and linking a GLUT application can be done with:
 
 <br>
 
 
 <br>
 
-<a name="windows">
-<H2>2. Windows Compilation and Installation</H1>
-
-<p>
-Please see the <a href="#scons">instructions on building with SCons</a>.
-</p>
-
-
-
-<a name="scons">
-<H2>3. Building with SCons</H1>
-
-<p>
-To build Mesa with SCons on Linux or Windows do
-</p>
-<pre>
-    scons
-</pre>
-<p>
-The build output will be placed in
-build/<i>platform</i>-<i>machine</i>-<i>debug</i>/..., where <i>platform</i> is for
-example linux or windows, <i>machine</i> is x86 or x86_64, optionally followed
-by -debug for debug builds.
-</p>
-
-<p>
-To build Mesa with SCons for Windows on Linux using the MinGW crosscompiler toolchain do
-</p>
-<pre>
-    scons platform=windows toolchain=crossmingw machine=x86 statetrackers=mesa drivers=softpipe,trace winsys=gdi
-</pre>
-<p>
-This will create:
-</p>
-<ul>
-<li>build/windows-x86-debug/gallium/targets/libgl-gdi/opengl32.dll &mdash; Mesa + Gallium + softpipe, binary compatible with Windows's opengl32.dll 
-<li>build/windows-x86-debug/glut/glx/glut32.dll
-<li>progs/build/windows-x86-debug/wgl/wglinfo.exe
-<li>progs/build/windows-x86-debug/trivial/tri.exe
-<li>and many other samples in progs/build/windows-x86-debug/...
-</ul>
-<p>
-Put them all in the same directory to test them.
-</p>
-
-
-<a name="other">
-<H2>4. Other systems</H1>
-
-<p>
-Documentation for other environments (some may be very out of date):
-</p>
-
-<UL>
-<li><A HREF="README.VMS">README.VMS</A> - VMS
-<LI><A HREF="README.GGI">README.GGI</A> - GGI
-<LI><A HREF="README.3DFX">README.3DFX</A> - 3Dfx/Glide driver
-<LI><A HREF="README.AMIWIN">README.AMIWIN</A> - Amiga Amiwin
-<LI><A HREF="README.D3D">README.D3D</A> - Direct3D driver
-<LI><A HREF="README.DJ">README.DJ</A> - DJGPP
-<LI><A HREF="README.LYNXOS">README.LYNXOS</A> - LynxOS
-<LI><A HREF="README.MINGW32">README.MINGW32</A> - Mingw32
-<LI><A HREF="README.NeXT">README.NeXT</A> - NeXT
-<LI><A HREF="README.OpenStep">README.OpenStep</A> - OpenStep
-<LI><A HREF="README.OS2">README.OS2</A> - OS/2
-<LI><A HREF="README.WINDML">README.WINDML</A> - WindML
-</UL>
-
-
-
-
+</div>
 </body>
 </html>
 </body>
 </html>