install.html revision 8412c604518893d66b78bf78ffda2c02f861d5a9
1<HTML>
2
3<TITLE>Compilation and Installation</TITLE>
4
5<BODY text="#000000" bgcolor="#55bbff" link="#111188">
6
7<H1>Compilation and Installation for Unix/X11</H1>
8
9<p>
10If you're not using a variant of Unix with X11, see the
11<a href="systems.html">Supported Systems and Drivers</a> section
12for instructions.
13</p>
14
15<p>
16There are two methods for building Mesa on Unix/X11 systems:
17</p>
18
19<dl>
20<dt><a href="#new">NEW-STYLE</a><dt>
21<dd>
22Basically, type "/configure" followed by "make"
23This <em>should</em> work on most Unix-like operating systems.
24Unfortunately, autoconf/automake seems to seldom work reliably on non-Linux
25systems.  For that reason, the old-style make system is still supported
26(and is the preferred method of the Mesa developers).
27</dd>
28<br>
29<dt><a href="#old">OLD-STYLE</a><dt>
30<dd>
31Simply type <code>make</code> and you'll see a list of supported
32system configurations.  Pick one and type <code>make</code> <em>config</em>.
33More details below.
34</dd>
35</dl>
36
37<p>
38<B>NOTE</b>: The GLUT library and demonstrations programs are in the
39MesaDemos-x.y.z.tar.gz file.  If you don't have GLUT or you want to
40run some demos, download the MesaDemos package too.
41</p>
42
43<p>
44In either case, building Mesa entails the following:
45<p>
46<ul>
47<li>Compiling libGL, the OpenGL-replacement library.
48<li>Compiling libGLU, the OpenGL Utility library.
49<li>Compiling libglut, the GLUT library (if you downloaded the Mesa demos
50package)
51<li>Compiling the demonstration programs in the directories:
52<code>demos, xdemos, samples</code> and <code>book</code>
53(if you downloaded the Mesa demos package.)
54</ul>
55
56
57<a name="new">
58<H2>NEW-STYLE compilation and installation</H2>
59
60<p>
61<b> 0.</b> If you've downloaded Mesa via CVS there will not be a "configure"
62   script.  You'll have to run the "bootstrap" script first.  This script
63   may not work on any OS other than Linux.  You'll need these programs
64   to run the bootstrap script:
65</p>
66
67<pre>
68	autoconf 2.50
69	automake 1.4-p2
70	libtool 1.4
71</pre>
72
73<p>
74<b>1.</b> Run the configure script
75</p>
76
77<pre>
78	/configure [options]
79</pre>
80
81<p>
82For Linux, it is recommended that you use:
83</p>
84<pre>
85	/configure --prefix=/usr
86</pre>
87
88So that the headers and libs are located according to the Linux/OpenGL
89standard spec at http://oss.sgi.com/projects/ogl-sample/ABI/
90</p>
91<p>
92For Red Hat 8.0, Mandrake 9.1 and other Linux distros, you may have to use
93the following:
94</p>
95<pre>
96	export LDFLAGS="-lstdc++" ; /configure --prefix=/usr
97    or
98        setenv LDFLAGS -lstdc++ ; /configure --prefix=/usr
99</pre>
100<p>
101This works around a problem when building the GLU library.  It needs to
102be linked with the C++ runtime library, but libtool (for some reason)
103doesn't do this.
104</p>
105<pre>
106Possible options are:
107
108--prefix=DIR
109	The toplevel directory of the hierachy in which Mesa
110	will be installed (DIR/include,DIR/lib etc.).
111	The default is "/usr/local".
112
113--sysconfdir=DIR
114	The directory where Mesa configuration files
115	will be stored.	The default is "$prefix/etc".
116	You may want to overwrite the default with --sysconfdir=/etc.
117
118--enable-static
119	Enable building of static libraries.
120	Static libraries are NOT built by default.
121	
122--disable-shared
123	Disable building of shared libraries.
124	Shared libraries are built by default.
125
126--with-pic
127--without-pic
128	In normal operation, libtool will build shared libraries from
129	PIC objects and static archives from non-PIC objects, except where one
130	or the other is not provided by the target host.  By specifying
131	--with-pic you are asking libtool to build static archives from
132	PIC objects, and similarly by specifying --without-pic you are asking
133	libtool to build shared	libraries from non-PIC objects.
134	libtool will only honour this flag where it will produce a
135	working library, otherwise it reverts to the default.
136	
137--enable-debug
138	Enable debugging messages (disabled by default).
139	
140--enable-profile
141	Enable profiling (disabled by default).
142	
143--disable-optimize
144	Disable extra optimizations (enabled by default,
145	i.e., optimize for maximum performance).
146	
147--enable-warn
148	Enable extended compiler warnings (disabled by default).
149	
150--enable-x86[=ARG]
151--disable-x86
152	Enable/disable x86 assembler support to speed up Mesa
153	(autodetected by default). You may set `on' or `off'.
154	
155--enable-3dnow[=ARG]
156--disable-3dnow
157	Enable/disable 3Dnow support to speed up Mesa
158	(autodetected by default). You may set `on' or `off'.
159	
160--enable-mmx[=ARG]
161--disable-mmx
162	Enable/disable MMX support to speed up Mesa
163	(autodetected by default). You may set `on' or `off'.
164	
165--enable-sse[=ARG]
166--disable-sse
167	Enable/disable SSE support to speed up Mesa
168	(autodetected by default). You may set `on' or `off'.
169	If you have a PentiumIII and want to use SSE make sure you have the
170	PIII Linux kernel-patch installed or things will fail!
171	You can get the patch from http://www.redhat.com/~dledford/linux_kernel.html
172	
173--with-glide[=DIR]
174--without-glide
175	Enable/disable support for Glide (disabled by default).
176	DIR is the installation directory of Glide.
177	If Glide cannot be found, the driver won't be built.
178	
179--with-glut[=DIR]
180--without-glut
181	Don't/use already-installed GLUT (autodetected by default).
182	DIR is the installation directory of Glut.
183	If GLUT cannot be found, the version shipped with Mesa will be built.
184	
185--with-ggi[=DIR]
186--without-ggi
187	Enable/disable support for GGI (autodetected by default).
188	DIR is the installation directory of GGI.
189	If GGI cannot be found, the driver won't be built.
190
191--disable-ggi-fbdev
192	Don't build the GGI fbdev target (autodetected by default).
193	
194--disable-ggi-genkgi
195	Don't build the GGI generic KGI driver (autodetected by default).
196	
197--disable-ggi-savage4
198	Don't build the GGI Savage4 KGI driver (autodetected by default).
199	
200--disable-osmesa
201	Disable OSmesa (offscreen rendering) support (enabled by default).
202
203--with-svga[=DIR]
204--without-svga
205	Enable/disable support for SVGALib (autodetected by default).
206	DIR is the installation directory of SVGALib.
207	If SVGALib cannot be found, the driver won't be built.
208
209--x-includes=DIR
210	Search for the X include files in DIR.
211	
212--x-libraries=DIR
213	Search for the X library files in DIR.
214</pre>
215
216<p>
217User specific compiler options can be set using the shell variable
218CFLAGS. For instance,
219</p>
220<pre>
221	CFLAGS="-g -O2" /configure
222</pre>
223<p>
224(on some systems: env CFLAGS="-g -O2" /configure)
225sets the compiler flags to "-g -O2".
226</p>
227<p>
228For more options run "/configure --help" and read INSTALL.GNU.
229</p>
230
231<p>
232<b>2.</b> To build the Mesa libraries run:
233</p>
234<pre>
235	make
236</pre>
237<p>(on some systems you may need to run <code>gmake</code> or
238<code>gnumake</code> instead)
239</p>
240<p>
241When finished, libGL.so will be in src/.libs/ and libGLU.so will be in
242si-glu/.libs/, etc.
243</p>
244<p>
245Optionally, you can strip the libraries using
246</p>
247<pre>
248	make strip
249</pre>
250<p>
251Now make sure that you have the permissions to install Mesa in the 
252specified directories, for example, by becoming super user ("su")
253Then run:
254</p>
255<pre>
256	make install
257</pre>
258<p>
259Mesa is now installed.
260Please don't move the installed files but rerun all installation
261steps if you want to use other directories.
262</p>
263
264<p>
265<b>3.</b>To test whether Mesa works properly you might want to run the
266Mesa demos:
267</p>
268<pre>
269	make check
270</pre>
271<p>
272Builds all demos.
273</p>
274<pre>
275	make exec
276</pre>
277<p>
278Builds and executes all demos.	
279</p>
280
281
282<a name="old">
283<H2>OLD-STYLE compilation and installation</H2>
284
285<p>
286This procedure usually works when <code>/configure ; make</code> fails.
287</p>
288
289<p>
290<b>Note</b>: If you tried <code>/configure ; make</code> but it failed,
291first copy the top-level <code>Makefile.X11</code> file over
292<code>Makefile</code>.
293</p>
294
295<p>
296Just type <code>make</code> alone.
297You'll see a list of supported system configurations.
298Choose one and type <code>make</code> <em>config</em>
299(for example <code>make linux-x86</code>).
300The Mesa libraries and demo programs will be compiled.
301</p>
302
303<H3>Header and library files</H3>
304
305<p>
306The standard location for the OpenGL header files on Unix-type systems is
307in <code>/usr/include/GL/</code>.
308The standard location for the libraries is <code>/usr/lib/</code>.
309For more information see, the
310<a href="http://oss.sgi.com/projects/ogl-sample/ABI/" target="_parent">
311Linux/OpenGL ABI specification</a>.
312</p>
313
314<p>
315If you'd like Mesa to co-exist with another implementation of OpenGL that's
316already installed, you'll have to choose different directories, like
317<code>/usr/local/include/GL/</code> and <code>/usr/local/lib/</code>.
318</p>
319
320<p>
321To install the Mesa headers, do this:
322<pre>
323	cp -r include/GL /usr/include
324</pre>
325
326<p>
327To install the Mesa libraries, do this:
328</p>
329<pre>
330	cp -pd lib/* /usr/lib
331
332	(The -pd options preserve symbolic links)
333</pre>
334
335<H3>LD_LIBRARY_PATH</H3>
336
337<p>
338On Linux and similar operating systems the <code>LD_LIBRARY_PATH</code>
339environment variable can be used to indicate a list of directories to
340search for shared libraries.
341If you don't install Mesa in <code>/usr/lib/</code> you may have to
342set the <code>LD_LIBRARY_PATH</code> variable in order to use the Mesa
343libraries.
344</p>
345
346</body>
347</html>
348