install.html revision 5f37abfc436f6ee6aaf2a34d8798faea799c70c4
1<HTML>
2
3<TITLE>Compilation and Installation</TITLE>
4
5<BODY text="#000000" bgcolor="#55bbff" link="#111188">
6
7
8<H1>Compilation and Installation</H1>
9
10<ol>
11<li><a href="#unix-x11">Unix / X11</a>
12<li><a href="#windows">Windows</a>
13<li><a href="#vms">VMS</a>
14<li><a href="#other">Other</a>
15</ol>
16
17
18
19<a name="unix-x11">
20<H2>1. Unix/X11 Compilation and Installation</H1>
21
22<p>
23Mesa uses a rather conventional Makefile system.
24A GNU autoconf/automake system used to be included, but was discarded
25in Mesa 5.1 because:
26</p>
27<ul>
28<li>It seldom worked on IRIX, Solaris, AIX, etc.
29<li>It was very compilicated
30<li>Nobody maintained it
31<li>libtool was just too weird
32</ul>
33<p>
34If someone strongly feels that Mesa should have a autoconf/automake
35system and wants to contribute one and maintain it, we'll consider
36adding it again.
37</p>
38
39
40<h3>1.1 Compilation</h3>
41
42<p>
43If you've obtained Mesa through CVS, do this to first:
44</p>
45<pre>
46    cd Mesa-newtree
47    cp Makefile.X11 Makefile
48</pre>
49
50<p>
51Now, just type <b>make</b>.
52You'll see a list of supported system configurations.
53Choose one from the list (such as linux-x86), and type:
54</p>
55<pre>
56    make linux-x86
57</pre>
58<p>
59That's it.
60</p>
61
62<h3>1.2 The libraries</h3>
63
64<p>
65When compilation has finished, look in the top-level <b>lib/</b> directory.
66You'll see a set of library files similar to this:
67</p>
68<pre>
69lrwxrwxrwx    1 brian    users          10 Sep  4 17:55 libGL.so -> libGL.so.1*
70lrwxrwxrwx    1 brian    users          19 Sep  4 17:55 libGL.so.1 -> libGL.so.1.4.050100*
71-rwxr-xr-x    1 brian    users    13940317 Sep  4 17:55 libGL.so.1.4.050100*
72lrwxrwxrwx    1 brian    users          11 Sep  4 17:54 libGLU.so -> libGLU.so.1*
73lrwxrwxrwx    1 brian    users          20 Sep  4 17:54 libGLU.so.1 -> libGLU.so.1.3.050100*
74-rwxr-xr-x    1 brian    users      324746 Sep  3 13:54 libGLU.so.1.1*
75-rwxr-xr-x    1 brian    users     2830539 Sep  4 17:54 libGLU.so.1.3.050100*
76lrwxrwxrwx    1 brian    users          12 Sep  4 17:53 libglut.so -> libglut.so.3*
77lrwxrwxrwx    1 brian    users          16 Sep  4 17:53 libglut.so.3 -> libglut.so.3.7.1*
78-rwxr-xr-x    1 brian    users     2426683 Sep  4 17:53 libglut.so.3.7.1*
79</pre>
80
81<p>
82<b>libGL</b> is the main OpenGL library (i.e. Mesa).
83<br>
84<b>libGLU</b> is the OpenGL Utility library.
85<br>
86<b>libglut</b> is the GLUT library.
87</p>
88
89
90<h3>1.3 Running the demos</h3>
91
92<p>
93If you downloaded/unpacked the MesaDemos-x.y.z.tar.gz archive or
94obtained Mesa from CVS, the <b>progs/</b> directory will contain a
95bunch of demonstration programs.
96</p>
97
98<p>
99Before running a demo, you may have to set an environment variable
100(such as <b>LD_LIBRARY_PATH</b> on Linux) to indicate where the
101libraries are located.  For example:
102<p>
103<blockquote>
104<b>cd</b> into the Mesa <b>lib/</b> directory.
105<br>
106<b>setenv LD_LIBRARY_PATH ${cwd}</b>   (if using csh or tcsh shell)
107<br>
108or,
109<br>
110<b>export LD_LIBRARY_PATH=${PWD}</b>   (if using bash or sh shell)
111</blockquote>
112
113<p>
114Next, change to the Mesa/demos/ directory:
115</p>
116<blockquote>
117<b>cd /progs/demos</b>
118</blockquote>
119
120<p>
121Run a demo such as gears:
122</p>
123<blockquote>
124<b>/gears</b>
125</blockquote>
126
127<p>
128If this doesn't work, try the <b>Mesa/progs/xdemos/glxinfo</b> program
129and see that it prints the expected Mesa version number.
130</p>
131
132<p>
133If you're using Linux or a similar OS, verify that the demo program is
134being linked with the proper library files:
135</p>
136<blockquote>
137<b>ldd gears</b>
138</blockquote>
139
140<p>
141You should see something like this:
142</p>
143<pre>
144        libglut.so.3 => /home/brian/Mesa/lib/libglut.so.3 (0x40013000)
145        libGLU.so.1 => /home/brian/Mesa/lib/libGLU.so.1 (0x40051000)
146        libGL.so.1 => /home/brian/Mesa/lib/libGL.so.1 (0x400e0000)
147        libc.so.6 => /lib/i686/libc.so.6 (0x42000000)
148        libm.so.6 => /lib/i686/libm.so.6 (0x403da000)
149        libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x403fc000)
150        libXmu.so.6 => /usr/X11R6/lib/libXmu.so.6 (0x404da000)
151        libXt.so.6 => /usr/X11R6/lib/libXt.so.6 (0x404f1000)
152        libXi.so.6 => /usr/X11R6/lib/libXi.so.6 (0x40543000)
153        libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x4054b000)
154        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x405fd000)
155        libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x40605000)
156        libpthread.so.0 => /lib/i686/libpthread.so.0 (0x40613000)
157        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
158        libdl.so.2 => /lib/libdl.so.2 (0x40644000)
159        libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x40647000)
160        libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x40650000)
161</pre>
162
163<p>
164Retrace your steps if this doesn't look right.
165</p>
166
167
168<H3>1.4 Installing the header and library files</H3>
169
170<p>
171The standard location for the OpenGL header files on Unix-type systems is
172in <code>/usr/include/GL/</code>.
173The standard location for the libraries is <code>/usr/lib/</code>.
174For more information see, the
175<a href="http://oss.sgi.com/projects/ogl-sample/ABI/" target="_parent">
176Linux/OpenGL ABI specification</a>.
177</p>
178
179<p>
180If you'd like Mesa to co-exist with another implementation of OpenGL that's
181already installed, you'll have to choose different directories, like
182<code>/usr/local/include/GL/</code> and <code>/usr/local/lib/</code>.
183</p>
184
185<p>
186To install the Mesa headers, do this:
187<blockquote>
188<b>cp -r include/GL /usr/include</b>
189</blockquote>
190
191<p>
192To install the Mesa libraries, do this:
193</p>
194<blockquote>
195<b>cp -pd lib/* /usr/lib</b>
196<br>
197(The -pd options preserve symbolic links)
198</blockquote>
199
200<p>
201If you install the libraries in a non-standard location you can use
202LD_LIBRARY_PATH (on Linux) to switch between the Mesa libs and another
203vendor libs whenever you want.
204This is a handy way to compare multiple OpenGL implementations.
205</p>
206
207
208
209<a name="windows">
210<H2>2. Windows Compilation and Installation</H1>
211
212<p>
213Please see the <a href="README.WIN32">README.WIN32</a> file.
214</p>
215
216
217
218
219<a name="vms">
220<H2>3. VMS Compilation and Installation</H1>
221
222<p>
223Please see the <a href="README.VMS">README.VMS</a> file.
224</p>
225
226
227
228
229<a name="other">
230<H2>4. Other systems</H1>
231
232<p>
233Documentation for other environments (some may be very out of date):
234</p>
235
236<UL>
237<LI><A HREF="README.GGI">README.GGI</A> - GGI
238<LI><A HREF="README.3DFX">README.3DFX</A> - 3Dfx/Glide driver
239<LI><A HREF="README.AMIWIN">README.AMIWIN</A> - Amiga Amiwin
240<LI><A HREF="README.BEOS">README.BEOS</A> - BeOS
241<LI><A HREF="README.D3D">README.D3D</A> - Direct3D driver
242<LI><A HREF="README.DJ">README.DJ</A> - DJGPP
243<LI><A HREF="README.LYNXOS">README.LYNXOS</A> - LynxOS
244<LI><A HREF="README.MINGW32">README.MINGW32</A> - Mingw32
245<LI><A HREF="README.NeXT">README.NeXT</A> - NeXT
246<LI><A HREF="README.OpenStep">README.OpenStep</A> - OpenStep
247<LI><A HREF="README.OS2">README.OS2</A> - OS/2
248<LI><A HREF="README.WINDML">README.WINDML</A> - WindML
249</UL>
250
251
252
253
254</body>
255</html>
256