summaryrefslogtreecommitdiff
path: root/docs/install.html
blob: 3570eaf735b3d005bd3acaea88eb9b24f10f9c10 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
<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.
<br>
</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>
<B>Also Note</B>: if you've obtained Mesa directly from CVS you'll have
to copy the top-level Makefile.X11 to Makefile.
</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>