|
|
@@ -10,30 +10,24 @@ |
|
|
|
<H1>Compiling and Installing</H1> |
|
|
|
|
|
|
|
<ol> |
|
|
|
<li><a href="#unix-x11">Unix / X11</a> |
|
|
|
<li><a href="#prereq-general">Prerequisites for building</a> |
|
|
|
<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> |
|
|
|
<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)</a> |
|
|
|
<li><a href="#legacy">Building with legacy Makefiles (deprecated)</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 |
|
|
|
</ol> |
|
|
|
<br> |
|
|
|
|
|
|
|
|
|
|
|
<a name="unix-x11"> |
|
|
|
<H2>1. Unix/X11 Compilation and Installation</H1> |
|
|
|
|
|
|
|
|
|
|
|
<a name="prereq-general"> |
|
|
|
<h3>1.1 General prerequisites for building</h3> |
|
|
|
<h1>1. Prerequisites for building</h1> |
|
|
|
|
|
|
|
<h2>1.1 General</h2> |
|
|
|
<ul> |
|
|
|
<li>lex / yacc - for building the GLSL compiler. |
|
|
|
On Linux systems, flex and bison are used. |
|
|
@@ -54,18 +48,19 @@ To build OpenGL ES 1.1 and 2.0 you'll also need |
|
|
|
|
|
|
|
|
|
|
|
<a name="prereq-dri"> |
|
|
|
<h3>1.2 Prerequisites for DRI and hardware acceleration</h3> |
|
|
|
<h3>1.2 For DRI and hardware acceleration</h3> |
|
|
|
|
|
|
|
<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://xorg.freedesktop.org/releases/individual/proto/" |
|
|
|
target="_parent">dri2proto</a> version 2.6 or later |
|
|
|
<li><a href="http://dri.freedesktop.org/libdrm/" target="_parent">libDRM</a> |
|
|
|
version 2.4.15 or later |
|
|
|
version 2.4.33 or later |
|
|
|
<li>Xorg server version 1.5 or later |
|
|
|
<li>Linux 2.6.28 or later |
|
|
|
</ul> |
|
|
|
</p> |
|
|
|
<p> |
|
|
@@ -78,22 +73,69 @@ the needed dependencies: |
|
|
|
</pre> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a name="autoconf"> |
|
|
|
<h3>1.3 Building with Autoconf</h3> |
|
|
|
<H1>2. Building with autoconf (Linux/Unix/X11)</H1> |
|
|
|
|
|
|
|
<p> |
|
|
|
The primary method to build Mesa on Unix systems is with autoconf. |
|
|
|
</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. |
|
|
|
The general approach is the standard: |
|
|
|
<pre> |
|
|
|
./configure |
|
|
|
make |
|
|
|
sudo make install |
|
|
|
</pre> |
|
|
|
But please read the <a href="autoconf.html">detailed autoconf instructions</a> |
|
|
|
for more details. |
|
|
|
</p> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a name="traditional"> |
|
|
|
<h3>1.4 Building with traditional Makefiles</h3> |
|
|
|
<a name="scons"> |
|
|
|
<H1>3. Building with SCons (Windows)</H1> |
|
|
|
|
|
|
|
<p> |
|
|
|
The traditional Mesa build system is based on a collection of pre-defined |
|
|
|
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 mesagdi libgl-gdi |
|
|
|
</pre> |
|
|
|
<p> |
|
|
|
This will create: |
|
|
|
</p> |
|
|
|
<ul> |
|
|
|
<li>build/windows-x86-debug/mesa/drivers/windows/gdi/opengl32.dll — Mesa + swrast, binary compatible with Windows's opengl32.dll |
|
|
|
<li>build/windows-x86-debug/gallium/targets/libgl-gdi/opengl32.dll — Mesa + Gallium + softpipe, binary compatible with Windows's opengl32.dll |
|
|
|
</ul> |
|
|
|
<p> |
|
|
|
Put them all in the same directory to test them. |
|
|
|
</p> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a name="legacy"> |
|
|
|
<h1>4. Building with legacy Makefiles (deprecated)</h1> |
|
|
|
|
|
|
|
<p> |
|
|
|
The legacy Mesa build system is based on a collection of pre-defined |
|
|
|
system configurations. |
|
|
|
Some of these might work for older systems not supported by autoconf. |
|
|
|
</p> |
|
|
|
<p> |
|
|
|
To see the list of configurations, just type <code>make</code>. |
|
|
@@ -144,8 +186,6 @@ Make sure you have the prerequisite versions of DRM and Xserver mentioned |
|
|
|
above. |
|
|
|
</p> |
|
|
|
|
|
|
|
</li> |
|
|
|
|
|
|
|
</ul> |
|
|
|
|
|
|
|
|
|
|
@@ -155,58 +195,9 @@ Later, if you want to rebuild for a different configuration run |
|
|
|
</p> |
|
|
|
|
|
|
|
|
|
|
|
<a name="libs"> |
|
|
|
<h3>1.5 The libraries</h3> |
|
|
|
|
|
|
|
<p> |
|
|
|
When compilation has finished, look in the top-level <code>lib/</code> |
|
|
|
(or <code>lib64/</code>) directory. |
|
|
|
You'll see a set of library files similar to this: |
|
|
|
</p> |
|
|
|
<pre> |
|
|
|
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* |
|
|
|
</pre> |
|
|
|
|
|
|
|
<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> |
|
|
|
|
|
|
|
<p> |
|
|
|
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 |
|
|
|
-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> |
|
|
|
|
|
|
|
<p> |
|
|
|
If you built with Gallium support, look in lib/gallium/ for Gallium-based |
|
|
|
versions of libGL and device drivers. |
|
|
|
</p> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a name="install"> |
|
|
|
<H3>1.6 Installing the header and library files</H3> |
|
|
|
<H2>Installing the header and library files</H2> |
|
|
|
|
|
|
|
<p> |
|
|
|
The standard location for the OpenGL header files on Unix-type systems is |
|
|
@@ -246,85 +237,89 @@ 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> |
|
|
|
|
|
|
|
<p> |
|
|
|
Running <code>make install</code> will install package configuration files |
|
|
|
for the pkg-config utility. |
|
|
|
</p> |
|
|
|
|
|
|
|
<p> |
|
|
|
When compiling your OpenGL application you can use pkg-config to determine |
|
|
|
the proper compiler and linker flags. |
|
|
|
</p> |
|
|
|
<a name="other"> |
|
|
|
<H1>5. Building for other systems</H1> |
|
|
|
|
|
|
|
<p> |
|
|
|
For example, compiling and linking a GLUT application can be done with: |
|
|
|
Documentation for other environments (some may be very out of date): |
|
|
|
</p> |
|
|
|
<pre> |
|
|
|
gcc `pkg-config --cflags --libs glut` mydemo.c -o mydemo |
|
|
|
</pre> |
|
|
|
|
|
|
|
<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> |
|
|
|
<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="scons"> |
|
|
|
<H2>3. Building with SCons</H1> |
|
|
|
<a name="libs"> |
|
|
|
<H1>6. Library Information</H1> |
|
|
|
|
|
|
|
<p> |
|
|
|
To build Mesa with SCons on Linux or Windows do |
|
|
|
When compilation has finished, look in the top-level <code>lib/</code> |
|
|
|
(or <code>lib64/</code>) directory. |
|
|
|
You'll see a set of library files similar to this: |
|
|
|
</p> |
|
|
|
<pre> |
|
|
|
scons |
|
|
|
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 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* |
|
|
|
</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. |
|
|
|
<b>libGL</b> is the main OpenGL library (i.e. Mesa). |
|
|
|
<br> |
|
|
|
<b>libGLU</b> is the OpenGL Utility library. |
|
|
|
<br> |
|
|
|
<b>libOSMesa</b> is the OSMesa (Off-Screen) interface library. |
|
|
|
</p> |
|
|
|
|
|
|
|
<p> |
|
|
|
To build Mesa with SCons for Windows on Linux using the MinGW crosscompiler toolchain do |
|
|
|
If you built the DRI hardware drivers, you'll also see the DRI drivers: |
|
|
|
</p> |
|
|
|
<pre> |
|
|
|
scons platform=windows toolchain=crossmingw machine=x86 mesagdi libgl-gdi |
|
|
|
-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 16050488 Jul 21 12:11 r300_dri.so |
|
|
|
-rwxr-xr-x 1 brian users 11757388 Jul 21 12:12 radeon_dri.so |
|
|
|
</pre> |
|
|
|
|
|
|
|
<p> |
|
|
|
This will create: |
|
|
|
</p> |
|
|
|
<ul> |
|
|
|
<li>build/windows-x86-debug/mesa/drivers/windows/gdi/opengl32.dll — Mesa + swrast, binary compatible with Windows's opengl32.dll |
|
|
|
<li>build/windows-x86-debug/gallium/targets/libgl-gdi/opengl32.dll — Mesa + Gallium + softpipe, binary compatible with Windows's opengl32.dll |
|
|
|
</ul> |
|
|
|
<p> |
|
|
|
Put them all in the same directory to test them. |
|
|
|
If you built with Gallium support, look in lib/gallium/ for Gallium-based |
|
|
|
versions of libGL and device drivers. |
|
|
|
</p> |
|
|
|
|
|
|
|
|
|
|
|
<a name="other"> |
|
|
|
<H2>4. Other systems</H1> |
|
|
|
<a name="pkg-config"> |
|
|
|
<H1>7. Building OpenGL programs with pkg-config</H1> |
|
|
|
|
|
|
|
<p> |
|
|
|
Documentation for other environments (some may be very out of date): |
|
|
|
Running <code>make install</code> will install package configuration files |
|
|
|
for the pkg-config utility. |
|
|
|
</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> |
|
|
|
<p> |
|
|
|
When compiling your OpenGL application you can use pkg-config to determine |
|
|
|
the proper compiler and linker flags. |
|
|
|
</p> |
|
|
|
|
|
|
|
<p> |
|
|
|
For example, compiling and linking a GLUT application can be done with: |
|
|
|
</p> |
|
|
|
<pre> |
|
|
|
gcc `pkg-config --cflags --libs glut` mydemo.c -o mydemo |
|
|
|
</pre> |
|
|
|
|
|
|
|
<br> |
|
|
|
|
|
|
|
|
|
|
|
</body> |