docs: consolidate html header and footer
[mesa.git] / docs / install.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2 <html lang="en">
3 <head>
4 <meta http-equiv="content-type" content="text/html; charset=utf-8">
5 <title>Compiling and Installing</title>
6 <link rel="stylesheet" type="text/css" href="mesa.css">
7 </head>
8 <body>
9
10 <h1>Compiling and Installing</h1>
11
12 <ol>
13 <li><a href="#prereq-general">Prerequisites for building</a>
14 <ul>
15 <li><a href="#prereq-general">General prerequisites</a>
16 <li><a href="#prereq-dri">For DRI and hardware acceleration</a>
17 </ul>
18 <li><a href="#autoconf">Building with autoconf (Linux/Unix/X11)</a>
19 <li><a href="#scons">Building with SCons (Windows/Linux)</a>
20 <li><a href="#other">Building for other systems</a>
21 <li><a href="#libs">Library Information</a>
22 <li><a href="#pkg-config">Building OpenGL programs with pkg-config
23 </ol>
24
25
26 <a name="prereq-general">
27 <h1>1. Prerequisites for building</h1>
28
29 <h2>1.1 General</h2>
30 <ul>
31 <li>lex / yacc - for building the GLSL compiler.
32 On Linux systems, flex and bison are used.
33 Versions 2.5.35 and 2.4.1, respectively, (or later) should work.
34 <br>
35 <br>
36 On Windows with MinGW, install flex and bison with:
37 <pre>mingw-get install msys-flex msys-bison</pre>
38 </li>
39 <li>python - Python is needed for building the Gallium components.
40 Version 2.6.4 or later should work.
41 <br>
42 <br>
43 To build OpenGL ES 1.1 and 2.0 you'll also need
44 <a href="http://xmlsoft.org/sources/win32/python/libxml2-python-2.7.7.win32-py2.7.exe">libxml2-python</a>.
45 </li>
46 </ul>
47
48
49 <a name="prereq-dri">
50 <h3>1.2 For DRI and hardware acceleration</h3>
51
52 <p>
53 The following are required for DRI-based hardware acceleration with Mesa:
54 </p>
55
56 <ul>
57 <li><a href="http://xorg.freedesktop.org/releases/individual/proto/"
58 target="_parent">dri2proto</a> version 2.6 or later
59 <li><a href="http://dri.freedesktop.org/libdrm/" target="_parent">libDRM</a>
60 version 2.4.33 or later
61 <li>Xorg server version 1.5 or later
62 <li>Linux 2.6.28 or later
63 </ul>
64 </p>
65 <p>
66 If you're using a fedora distro the following command should install all
67 the needed dependencies:
68 <pre>
69 sudo yum install flex bison imake libtool xorg-x11-proto-devel libdrm-devel \
70 gcc-c++ xorg-x11-server-devel libXi-devel libXmu-devel libXdamage-devel git \
71 expat-devel llvm-devel
72 </pre>
73
74
75
76 <a name="autoconf">
77 <H1>2. Building with autoconf (Linux/Unix/X11)</H1>
78
79 <p>
80 The primary method to build Mesa on Unix systems is with autoconf.
81 </p>
82
83 <p>
84 The general approach is the standard:
85 <pre>
86 ./configure
87 make
88 sudo make install
89 </pre>
90 But please read the <a href="autoconf.html">detailed autoconf instructions</a>
91 for more details.
92 </p>
93
94
95
96 <a name="scons">
97 <H1>3. Building with SCons (Windows/Linux)</H1>
98
99 <p>
100 To build Mesa with SCons on Linux or Windows do
101 </p>
102 <pre>
103 scons
104 </pre>
105 <p>
106 The build output will be placed in
107 build/<i>platform</i>-<i>machine</i>-<i>debug</i>/..., where <i>platform</i> is for
108 example linux or windows, <i>machine</i> is x86 or x86_64, optionally followed
109 by -debug for debug builds.
110 </p>
111
112 <p>
113 To build Mesa with SCons for Windows on Linux using the MinGW crosscompiler toolchain do
114 </p>
115 <pre>
116 scons platform=windows toolchain=crossmingw machine=x86 mesagdi libgl-gdi
117 </pre>
118 <p>
119 This will create:
120 </p>
121 <ul>
122 <li>build/windows-x86-debug/mesa/drivers/windows/gdi/opengl32.dll &mdash; Mesa + swrast, binary compatible with Windows's opengl32.dll
123 <li>build/windows-x86-debug/gallium/targets/libgl-gdi/opengl32.dll &mdash; Mesa + Gallium + softpipe, binary compatible with Windows's opengl32.dll
124 </ul>
125 <p>
126 Put them all in the same directory to test them.
127 </p>
128
129
130
131 <a name="other">
132 <H1>4. Building for other systems</H1>
133
134 <p>
135 Documentation for other environments (some may be very out of date):
136 </p>
137
138 <UL>
139 <li><A HREF="README.VMS">README.VMS</A> - VMS
140 <LI><A HREF="README.CYGWIN">README.CYGWIN</A> - Cygwin
141 <LI><A HREF="README.WIN32">README.WIN32</A> - Win32
142 </UL>
143
144
145
146 <a name="libs">
147 <H1>5. Library Information</H1>
148
149 <p>
150 When compilation has finished, look in the top-level <code>lib/</code>
151 (or <code>lib64/</code>) directory.
152 You'll see a set of library files similar to this:
153 </p>
154 <pre>
155 lrwxrwxrwx 1 brian users 10 Mar 26 07:53 libGL.so -> libGL.so.1*
156 lrwxrwxrwx 1 brian users 19 Mar 26 07:53 libGL.so.1 -> libGL.so.1.5.060100*
157 -rwxr-xr-x 1 brian users 3375861 Mar 26 07:53 libGL.so.1.5.060100*
158 lrwxrwxrwx 1 brian users 11 Mar 26 07:53 libGLU.so -> libGLU.so.1*
159 lrwxrwxrwx 1 brian users 20 Mar 26 07:53 libGLU.so.1 -> libGLU.so.1.3.060100*
160 -rwxr-xr-x 1 brian users 549269 Mar 26 07:53 libGLU.so.1.3.060100*
161 lrwxrwxrwx 1 brian users 14 Mar 26 07:53 libOSMesa.so -> libOSMesa.so.6*
162 lrwxrwxrwx 1 brian users 23 Mar 26 07:53 libOSMesa.so.6 -> libOSMesa.so.6.1.060100*
163 -rwxr-xr-x 1 brian users 23871 Mar 26 07:53 libOSMesa.so.6.1.060100*
164 </pre>
165
166 <p>
167 <b>libGL</b> is the main OpenGL library (i.e. Mesa).
168 <br>
169 <b>libGLU</b> is the OpenGL Utility library.
170 <br>
171 <b>libOSMesa</b> is the OSMesa (Off-Screen) interface library.
172 </p>
173
174 <p>
175 If you built the DRI hardware drivers, you'll also see the DRI drivers:
176 </p>
177 <pre>
178 -rwxr-xr-x 1 brian users 16895413 Jul 21 12:11 i915_dri.so
179 -rwxr-xr-x 1 brian users 16895413 Jul 21 12:11 i965_dri.so
180 -rwxr-xr-x 1 brian users 11849858 Jul 21 12:12 r200_dri.so
181 -rwxr-xr-x 1 brian users 16050488 Jul 21 12:11 r300_dri.so
182 -rwxr-xr-x 1 brian users 11757388 Jul 21 12:12 radeon_dri.so
183 </pre>
184
185 <p>
186 If you built with Gallium support, look in lib/gallium/ for Gallium-based
187 versions of libGL and device drivers.
188 </p>
189
190
191 <a name="pkg-config">
192 <H1>6. Building OpenGL programs with pkg-config</H1>
193
194 <p>
195 Running <code>make install</code> will install package configuration files
196 for the pkg-config utility.
197 </p>
198
199 <p>
200 When compiling your OpenGL application you can use pkg-config to determine
201 the proper compiler and linker flags.
202 </p>
203
204 <p>
205 For example, compiling and linking a GLUT application can be done with:
206 </p>
207 <pre>
208 gcc `pkg-config --cflags --libs glut` mydemo.c -o mydemo
209 </pre>
210
211 <br>
212
213
214 </body>
215 </html>