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 | <div class="header">
|
---|
11 | <h1>The Mesa 3D Graphics Library</h1>
|
---|
12 | </div>
|
---|
13 |
|
---|
14 | <iframe src="contents.html"></iframe>
|
---|
15 | <div class="content">
|
---|
16 |
|
---|
17 | <h1>Compiling and Installing</h1>
|
---|
18 |
|
---|
19 | <ol>
|
---|
20 | <li><a href="#prereq-general">Prerequisites for building</a>
|
---|
21 | <ul>
|
---|
22 | <li><a href="#prereq-general">General prerequisites</a>
|
---|
23 | <li><a href="#prereq-dri">For DRI and hardware acceleration</a>
|
---|
24 | </ul>
|
---|
25 | <li><a href="#autoconf">Building with autoconf (Linux/Unix/X11)</a>
|
---|
26 | <li><a href="#scons">Building with SCons (Windows/Linux)</a>
|
---|
27 | <li><a href="#android">Building with AOSP (Android)</a>
|
---|
28 | <li><a href="#libs">Library Information</a>
|
---|
29 | <li><a href="#pkg-config">Building OpenGL programs with pkg-config</a>
|
---|
30 | </ol>
|
---|
31 |
|
---|
32 |
|
---|
33 | <h1 id="prereq-general">1. Prerequisites for building</h1>
|
---|
34 |
|
---|
35 | <h2>1.1 General</h2>
|
---|
36 |
|
---|
37 | <p>
|
---|
38 | Build system.
|
---|
39 | </p>
|
---|
40 |
|
---|
41 | <ul>
|
---|
42 | <li>Autoconf is required when building on *nix platforms.
|
---|
43 | <li><a href="http://www.scons.org/">SCons</a> is required for building on
|
---|
44 | Windows and optional for Linux (it's an alternative to autoconf/automake.)
|
---|
45 | </li>
|
---|
46 | <li>Android Build system when building as native Android component. Autoconf
|
---|
47 | is used when when building ARC.
|
---|
48 | </li>
|
---|
49 | </ul>
|
---|
50 |
|
---|
51 |
|
---|
52 | <p>
|
---|
53 | The following compilers are known to work, if you know of others or you're
|
---|
54 | willing to maintain support for other compiler get in touch.
|
---|
55 | </p>
|
---|
56 |
|
---|
57 | <ul>
|
---|
58 | <li>GCC 4.2.0 or later (some parts of Mesa may require later versions)
|
---|
59 | <li>clang - exact minimum requirement is currently unknown.
|
---|
60 | <li>Microsoft Visual Studio 2013 Update 4 or later is required, for building on Windows.
|
---|
61 | </ul>
|
---|
62 |
|
---|
63 |
|
---|
64 | <p>
|
---|
65 | Third party/extra tools.
|
---|
66 | <br>
|
---|
67 | <strong>Note</strong>: These should not be required, when building from a release tarball. If
|
---|
68 | you think you've spotted a bug let developers know by filing a
|
---|
69 | <a href="bugs.html">bug report</a>.
|
---|
70 | </p>
|
---|
71 |
|
---|
72 |
|
---|
73 | <ul>
|
---|
74 | <li><a href="https://www.python.org/">Python</a> - Python is required.
|
---|
75 | Version 2.6.4 or later should work.
|
---|
76 | </li>
|
---|
77 | <li><a href="http://www.makotemplates.org/">Python Mako module</a> -
|
---|
78 | Python Mako module is required. Version 0.3.4 or later should work.
|
---|
79 | </li>
|
---|
80 | <li>lex / yacc - for building the Mesa IR and GLSL compiler.
|
---|
81 | <div>
|
---|
82 | On Linux systems, flex and bison versions 2.5.35 and 2.4.1, respectively,
|
---|
83 | (or later) should work.
|
---|
84 | On Windows with MinGW, install flex and bison with:
|
---|
85 | <pre>mingw-get install msys-flex msys-bison</pre>
|
---|
86 | For MSVC on Windows, install
|
---|
87 | <a href="http://winflexbison.sourceforge.net/">Win flex-bison</a>.
|
---|
88 | </div>
|
---|
89 | </ul>
|
---|
90 | <p><strong>Note</strong>: Some versions can be buggy (eg. flex 2.6.2) so do try others if things fail.</p>
|
---|
91 |
|
---|
92 |
|
---|
93 | <h3 id="prereq-dri">1.2 Requirements</h3>
|
---|
94 |
|
---|
95 | <p>
|
---|
96 | The requirements depends on the features selected at configure stage.
|
---|
97 | Check/install the respective -devel package as prompted by the configure error
|
---|
98 | message.
|
---|
99 | </p>
|
---|
100 |
|
---|
101 | <p>
|
---|
102 | Here are some common ways to retrieve most/all of the dependencies based on
|
---|
103 | the packaging tool used by your distro.
|
---|
104 | </p>
|
---|
105 |
|
---|
106 | <pre>
|
---|
107 | zypper source-install --build-deps-only Mesa # openSUSE/SLED/SLES
|
---|
108 | yum-builddep mesa # yum Fedora, OpenSuse(?)
|
---|
109 | dnf builddep mesa # dnf Fedora
|
---|
110 | apt-get build-dep mesa # Debian and derivatives
|
---|
111 | ... # others
|
---|
112 | </pre>
|
---|
113 |
|
---|
114 |
|
---|
115 | <h1 id="autoconf">2. Building with autoconf (Linux/Unix/X11)</h1>
|
---|
116 |
|
---|
117 | <p>
|
---|
118 | The primary method to build Mesa on Unix systems is with autoconf.
|
---|
119 | </p>
|
---|
120 |
|
---|
121 | <p>
|
---|
122 | The general approach is the standard:
|
---|
123 | </p>
|
---|
124 | <pre>
|
---|
125 | ./configure
|
---|
126 | make
|
---|
127 | sudo make install
|
---|
128 | </pre>
|
---|
129 | <p>
|
---|
130 | But please read the <a href="autoconf.html">detailed autoconf instructions</a>
|
---|
131 | for more details.
|
---|
132 | </p>
|
---|
133 |
|
---|
134 |
|
---|
135 |
|
---|
136 | <h1 id="scons">3. Building with SCons (Windows/Linux)</h1>
|
---|
137 |
|
---|
138 | <p>
|
---|
139 | To build Mesa with SCons on Linux or Windows do
|
---|
140 | </p>
|
---|
141 | <pre>
|
---|
142 | scons
|
---|
143 | </pre>
|
---|
144 | <p>
|
---|
145 | The build output will be placed in
|
---|
146 | build/<i>platform</i>-<i>machine</i>-<i>debug</i>/..., where <i>platform</i> is for
|
---|
147 | example linux or windows, <i>machine</i> is x86 or x86_64, optionally followed
|
---|
148 | by -debug for debug builds.
|
---|
149 | </p>
|
---|
150 |
|
---|
151 | <p>
|
---|
152 | To build Mesa with SCons for Windows on Linux using the MinGW crosscompiler toolchain do
|
---|
153 | </p>
|
---|
154 | <pre>
|
---|
155 | scons platform=windows toolchain=crossmingw machine=x86 libgl-gdi
|
---|
156 | </pre>
|
---|
157 | <p>
|
---|
158 | This will create:
|
---|
159 | </p>
|
---|
160 | <ul>
|
---|
161 | <li>build/windows-x86-debug/gallium/targets/libgl-gdi/opengl32.dll — Mesa + Gallium + softpipe (or llvmpipe), binary compatible with Windows's opengl32.dll
|
---|
162 | </ul>
|
---|
163 | <p>
|
---|
164 | Put them all in the same directory to test them.
|
---|
165 |
|
---|
166 | Additional information is available in <a href="README.WIN32">README.WIN32</a>.
|
---|
167 |
|
---|
168 | </p>
|
---|
169 |
|
---|
170 |
|
---|
171 |
|
---|
172 | <h1 id="android">4. Building with AOSP (Android)</h1>
|
---|
173 |
|
---|
174 | <p>
|
---|
175 | Currently one can build Mesa for Android as part of the AOSP project, yet
|
---|
176 | your experience might vary.
|
---|
177 | </p>
|
---|
178 |
|
---|
179 | <p>
|
---|
180 | In order to achieve that one should update their local manifest to point to the
|
---|
181 | upstream repo, set the appropriate BOARD_GPU_DRIVERS and build the
|
---|
182 | libGLES_mesa library.
|
---|
183 | </p>
|
---|
184 |
|
---|
185 | <p>
|
---|
186 | FINISHME: Improve on the instructions add references to Rob H repos/Jenkins,
|
---|
187 | Android-x86 and/or other resources.
|
---|
188 | </p>
|
---|
189 |
|
---|
190 |
|
---|
191 | <h1 id="libs">5. Library Information</h1>
|
---|
192 |
|
---|
193 | <p>
|
---|
194 | When compilation has finished, look in the top-level <code>lib/</code>
|
---|
195 | (or <code>lib64/</code>) directory.
|
---|
196 | You'll see a set of library files similar to this:
|
---|
197 | </p>
|
---|
198 | <pre>
|
---|
199 | lrwxrwxrwx 1 brian users 10 Mar 26 07:53 libGL.so -> libGL.so.1*
|
---|
200 | lrwxrwxrwx 1 brian users 19 Mar 26 07:53 libGL.so.1 -> libGL.so.1.5.060100*
|
---|
201 | -rwxr-xr-x 1 brian users 3375861 Mar 26 07:53 libGL.so.1.5.060100*
|
---|
202 | lrwxrwxrwx 1 brian users 14 Mar 26 07:53 libOSMesa.so -> libOSMesa.so.6*
|
---|
203 | lrwxrwxrwx 1 brian users 23 Mar 26 07:53 libOSMesa.so.6 -> libOSMesa.so.6.1.060100*
|
---|
204 | -rwxr-xr-x 1 brian users 23871 Mar 26 07:53 libOSMesa.so.6.1.060100*
|
---|
205 | </pre>
|
---|
206 |
|
---|
207 | <p>
|
---|
208 | <b>libGL</b> is the main OpenGL library (i.e. Mesa).
|
---|
209 | <br>
|
---|
210 | <b>libOSMesa</b> is the OSMesa (Off-Screen) interface library.
|
---|
211 | </p>
|
---|
212 |
|
---|
213 | <p>
|
---|
214 | If you built the DRI hardware drivers, you'll also see the DRI drivers:
|
---|
215 | </p>
|
---|
216 | <pre>
|
---|
217 | -rwxr-xr-x 1 brian users 16895413 Jul 21 12:11 i915_dri.so
|
---|
218 | -rwxr-xr-x 1 brian users 16895413 Jul 21 12:11 i965_dri.so
|
---|
219 | -rwxr-xr-x 1 brian users 11849858 Jul 21 12:12 r200_dri.so
|
---|
220 | -rwxr-xr-x 1 brian users 11757388 Jul 21 12:12 radeon_dri.so
|
---|
221 | </pre>
|
---|
222 |
|
---|
223 | <p>
|
---|
224 | If you built with Gallium support, look in lib/gallium/ for Gallium-based
|
---|
225 | versions of libGL and device drivers.
|
---|
226 | </p>
|
---|
227 |
|
---|
228 |
|
---|
229 | <h1 id="pkg-config">6. Building OpenGL programs with pkg-config</h1>
|
---|
230 |
|
---|
231 | <p>
|
---|
232 | Running <code>make install</code> will install package configuration files
|
---|
233 | for the pkg-config utility.
|
---|
234 | </p>
|
---|
235 |
|
---|
236 | <p>
|
---|
237 | When compiling your OpenGL application you can use pkg-config to determine
|
---|
238 | the proper compiler and linker flags.
|
---|
239 | </p>
|
---|
240 |
|
---|
241 | <p>
|
---|
242 | For example, compiling and linking a GLUT application can be done with:
|
---|
243 | </p>
|
---|
244 | <pre>
|
---|
245 | gcc `pkg-config --cflags --libs glut` mydemo.c -o mydemo
|
---|
246 | </pre>
|
---|
247 |
|
---|
248 | <br>
|
---|
249 |
|
---|
250 | </div>
|
---|
251 | </body>
|
---|
252 | </html>
|
---|