install.html 7.46 KB
Newer Older
1 2 3 4 5 6 7 8 9
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <title>Compiling and Installing</title>
  <link rel="stylesheet" type="text/css" href="mesa.css">
</head>
<body>

10 11 12 13 14 15 16
<div class="header">
  <h1>The Mesa 3D Graphics Library</h1>
</div>

<iframe src="contents.html"></iframe>
<div class="content">

17
<h1>Compiling and Installing</h1>
18

Brian Paul's avatar
Brian Paul committed
19
<ol>
20
<li><a href="#prereq-general">Prerequisites for building</a>
21
  <ul>
22 23
  <li><a href="#prereq-general">General prerequisites</a>
  <li><a href="#prereq-dri">For DRI and hardware acceleration</a>
24
  </ul>
25
<li><a href="#meson">Building with meson</a>
26
<li><a href="#autoconf">Building with autoconf (Linux/Unix/X11)</a>
27
<li><a href="#scons">Building with SCons (Windows/Linux)</a>
28
<li><a href="#android">Building with AOSP (Android)</a>
29
<li><a href="#libs">Library Information</a>
30
<li><a href="#pkg-config">Building OpenGL programs with pkg-config</a>
Brian Paul's avatar
Brian Paul committed
31
</ol>
32

33

34
<h1 id="prereq-general">1. Prerequisites for building</h1>
35

36
<h2>1.1 General</h2>
37 38 39 40 41 42

<p>
Build system.
</p>

<ul>
43 44
<li><a href="https://mesonbuild.com">meson</a> is recommended when building on *nix platforms.
<li>Autoconf is another option when building on *nix platforms.
45
<li><a href="http://www.scons.org/">SCons</a> is required for building on
46
Windows and optional for Linux (it's an alternative to autoconf/automake or meson.)
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
</li>
<li>Android Build system when building as native Android component. Autoconf
is used when when building ARC.
</li>
</ul>


<p>
The following compilers are known to work, if you know of others or you're
willing to maintain support for other compiler get in touch.
</p>

<ul>
<li>GCC 4.2.0 or later (some parts of Mesa may require later versions)
<li>clang - exact minimum requirement is currently unknown.
62
<li>Microsoft Visual Studio 2015 or later is required, for building on Windows.
63 64 65 66 67 68 69 70 71 72 73 74
</ul>


<p>
Third party/extra tools.
<br>
<strong>Note</strong>: These should not be required, when building from a release tarball. If
you think you've spotted a bug let developers know by filing a
<a href="bugs.html">bug report</a>.
</p>


75
<ul>
76
<li><a href="https://www.python.org/">Python</a> - Python is required.
77 78 79
When building with scons 2.7 is required.
When building with meson 3.5 or newer is required.
When building with autotools 2.7, or 3.5 or later are required.
80
</li>
81
<li><a href="http://www.makotemplates.org/">Python Mako module</a> -
82
Python Mako module is required. Version 0.8.0 or later should work.
83
</li>
84 85 86 87
<li>lex / yacc - for building the Mesa IR and GLSL compiler.
<div>
On Linux systems, flex and bison versions 2.5.35 and 2.4.1, respectively,
(or later) should work.
88 89
On Windows with MinGW, install flex and bison with:
<pre>mingw-get install msys-flex msys-bison</pre>
90 91
For MSVC on Windows, install
<a href="http://winflexbison.sourceforge.net/">Win flex-bison</a>.
92
</div>
93
</ul>
94
<p><strong>Note</strong>: Some versions can be buggy (eg. flex 2.6.2) so do try others if things fail.</p>
95 96


97
<h3 id="prereq-dri">1.2 Requirements</h3>
98 99

<p>
100 101 102
The requirements depends on the features selected at configure stage.
Check/install the respective -devel package as prompted by the configure error
message.
103 104
</p>

105
<p>
106 107
Here are some common ways to retrieve most/all of the dependencies based on
the packaging tool used by your distro.
108
</p>
109

110
<pre>
111 112 113 114 115
  zypper source-install --build-deps-only Mesa # openSUSE/SLED/SLES
  yum-builddep mesa # yum Fedora, OpenSuse(?)
  dnf builddep mesa # dnf Fedora
  apt-get build-dep mesa # Debian and derivatives
  ... # others
116
</pre>
117

118
<h1 id="meson">2. Building with meson</h1>
119

120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
<p>
Meson is the latest build system in mesa, it is currently able to build for
*nix systems like Linux and BSD, and will be able to build for windows as well.
</p>

<p>
The general approach is:
</p>
<pre>
  meson builddir/
  ninja -C builddir/
  sudo ninja -C builddir/ install
</pre>
<p>
Please read the <a href="meson.html">detailed meson instructions</a>
for more information
</p>

<h1 id="autoconf">3. Building with autoconf (Linux/Unix/X11)</h1>
139 140

<p>
141 142
Although meson is recommended, another supported way to build on *nix systems
is with autoconf.
143
</p>
144 145

<p>
146
The general approach is the standard:
147
</p>
148 149 150 151 152
<pre>
  ./configure
  make
  sudo make install
</pre>
153
<p>
154 155 156
But please read the <a href="autoconf.html">detailed autoconf instructions</a>
for more details.
</p>
157 158 159



160
<h1 id="scons">4. Building with SCons (Windows/Linux)</h1>
161 162

<p>
163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178
To build Mesa with SCons on Linux or Windows do
</p>
<pre>
    scons
</pre>
<p>
The build output will be placed in
build/<i>platform</i>-<i>machine</i>-<i>debug</i>/..., where <i>platform</i> is for
example linux or windows, <i>machine</i> is x86 or x86_64, optionally followed
by -debug for debug builds.
</p>

<p>
To build Mesa with SCons for Windows on Linux using the MinGW crosscompiler toolchain do
</p>
<pre>
Jose Fonseca's avatar
Jose Fonseca committed
179
    scons platform=windows toolchain=crossmingw machine=x86 libgl-gdi
180 181 182 183 184
</pre>
<p>
This will create:
</p>
<ul>
Jose Fonseca's avatar
Jose Fonseca committed
185
<li>build/windows-x86-debug/gallium/targets/libgl-gdi/opengl32.dll &mdash; Mesa + Gallium + softpipe (or llvmpipe), binary compatible with Windows's opengl32.dll
186 187 188
</ul>
<p>
Put them all in the same directory to test them.
189 190 191

Additional information is available in <a href="README.WIN32">README.WIN32</a>.

192 193 194 195
</p>



196
<h1 id="android">5. Building with AOSP (Android)</h1>
Brian's avatar
Brian committed
197 198

<p>
199 200
Currently one can build Mesa for Android as part of the AOSP project, yet
your experience might vary.
Brian's avatar
Brian committed
201
</p>
Brian Paul's avatar
Brian Paul committed
202

203 204
<p>
In order to achieve that one should update their local manifest to point to the
Eric Engestrom's avatar
Eric Engestrom committed
205
upstream repo, set the appropriate BOARD_GPU_DRIVERS and build the
206 207
libGLES_mesa library.
</p>
Brian Paul's avatar
Brian Paul committed
208

209 210 211 212
<p>
FINISHME: Improve on the instructions add references to Rob H repos/Jenkins,
Android-x86 and/or other resources.
</p>
Brian Paul's avatar
Brian Paul committed
213

214

215
<h1 id="libs">6. Library Information</h1>
216 217

<p>
218 219 220
When compilation has finished, look in the top-level <code>lib/</code>
(or <code>lib64/</code>) directory.
You'll see a set of library files similar to this:
221 222
</p>
<pre>
223 224 225 226 227 228
lrwxrwxrwx    1 brian    users          10 Mar 26 07:53 libGL.so -> libGL.so.1*
lrwxrwxrwx    1 brian    users          19 Mar 26 07:53 libGL.so.1 -> libGL.so.1.5.060100*
-rwxr-xr-x    1 brian    users     3375861 Mar 26 07:53 libGL.so.1.5.060100*
lrwxrwxrwx    1 brian    users          14 Mar 26 07:53 libOSMesa.so -> libOSMesa.so.6*
lrwxrwxrwx    1 brian    users          23 Mar 26 07:53 libOSMesa.so.6 -> libOSMesa.so.6.1.060100*
-rwxr-xr-x    1 brian    users       23871 Mar 26 07:53 libOSMesa.so.6.1.060100*
229
</pre>
230

231
<p>
232 233 234
<b>libGL</b> is the main OpenGL library (i.e. Mesa).
<br>
<b>libOSMesa</b> is the OSMesa (Off-Screen) interface library.
235 236 237
</p>

<p>
238
If you built the DRI hardware drivers, you'll also see the DRI drivers:
239 240
</p>
<pre>
241 242 243 244
-rwxr-xr-x   1 brian users 16895413 Jul 21 12:11 i915_dri.so
-rwxr-xr-x   1 brian users 16895413 Jul 21 12:11 i965_dri.so
-rwxr-xr-x   1 brian users 11849858 Jul 21 12:12 r200_dri.so
-rwxr-xr-x   1 brian users 11757388 Jul 21 12:12 radeon_dri.so
245
</pre>
246

247
<p>
248 249
If you built with Gallium support, look in lib/gallium/ for Gallium-based
versions of libGL and device drivers.
250 251 252
</p>


253
<h1 id="pkg-config">7. Building OpenGL programs with pkg-config</h1>
Brian Paul's avatar
Brian Paul committed
254 255

<p>
256 257
Running <code>make install</code> will install package configuration files
for the pkg-config utility.
Brian Paul's avatar
Brian Paul committed
258 259
</p>

260 261 262 263
<p>
When compiling your OpenGL application you can use pkg-config to determine
the proper compiler and linker flags.
</p>
Brian Paul's avatar
Brian Paul committed
264

265 266 267 268 269 270
<p>
For example, compiling and linking a GLUT application can be done with:
</p>
<pre>
   gcc `pkg-config --cflags --libs glut` mydemo.c -o mydemo
</pre>
Brian Paul's avatar
Brian Paul committed
271

272
<br>
Brian Paul's avatar
Brian Paul committed
273

274
</div>
275 276
</body>
</html>