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>Compilation and Installation using Autoconf</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>Compilation and Installation using Autoconf</h1>
|
---|
18 |
|
---|
19 | <ol>
|
---|
20 | <li><p><a href="#basic">Basic Usage</a></li>
|
---|
21 | <li><p><a href="#driver">Driver Options</a>
|
---|
22 | <ul>
|
---|
23 | <li><a href="#xlib">Xlib Driver Options</a></li>
|
---|
24 | <li><a href="#dri">DRI Driver Options</a></li>
|
---|
25 | <li><a href="#osmesa">OSMesa Driver Options</a></li>
|
---|
26 | </ul>
|
---|
27 | </ol>
|
---|
28 |
|
---|
29 |
|
---|
30 | <h2 id="basic">1. Basic Usage</h2>
|
---|
31 |
|
---|
32 | <p>
|
---|
33 | The autoconf generated configure script can be used to guess your
|
---|
34 | platform and change various options for building Mesa. To use the
|
---|
35 | configure script, type:
|
---|
36 | </p>
|
---|
37 |
|
---|
38 | <pre>
|
---|
39 | ./configure
|
---|
40 | </pre>
|
---|
41 |
|
---|
42 | <p>
|
---|
43 | To see a short description of all the options, type <code>./configure
|
---|
44 | --help</code>. If you are using a development snapshot and the configure
|
---|
45 | script does not exist, type <code>./autogen.sh</code> to generate it
|
---|
46 | first. If you know the options you want to pass to
|
---|
47 | <code>configure</code>, you can pass them to <code>autogen.sh</code>. It
|
---|
48 | will run <code>configure</code> with these options after it is
|
---|
49 | generated. Once you have run <code>configure</code> and set the options
|
---|
50 | to your preference, type:
|
---|
51 | </p>
|
---|
52 |
|
---|
53 | <pre>
|
---|
54 | make
|
---|
55 | </pre>
|
---|
56 |
|
---|
57 | <p>
|
---|
58 | This will produce libGL.so and/or several other libraries depending on the
|
---|
59 | options you have chosen. Later, if you want to rebuild for a different
|
---|
60 | configuration run <code>make realclean</code> before rebuilding.
|
---|
61 | </p>
|
---|
62 |
|
---|
63 | <p>
|
---|
64 | Some of the generic autoconf options are used with Mesa:
|
---|
65 | </p>
|
---|
66 | <dl>
|
---|
67 | <dt><code>--prefix=PREFIX</code></dt>
|
---|
68 | <dd><p>This is the root directory where
|
---|
69 | files will be installed by <code>make install</code>. The default is
|
---|
70 | <code>/usr/local</code>.</p>
|
---|
71 | </dd>
|
---|
72 |
|
---|
73 | <dt><code>--exec-prefix=EPREFIX</code></dt>
|
---|
74 | <dd><p>This is the root directory
|
---|
75 | where architecture-dependent files will be installed. In Mesa, this is
|
---|
76 | only used to derive the directory for the libraries. The default is
|
---|
77 | <code>${prefix}</code>.</p>
|
---|
78 | </dd>
|
---|
79 |
|
---|
80 | <dt><code>--libdir=LIBDIR</code></dt>
|
---|
81 | <dd><p>This option specifies the directory
|
---|
82 | where the GL libraries will be installed. The default is
|
---|
83 | <code>${exec_prefix}/lib</code>. It also serves as the name of the
|
---|
84 | library staging area in the source tree. For instance, if the option
|
---|
85 | <code>--libdir=/usr/local/lib64</code> is used, the libraries will be
|
---|
86 | created in a <code>lib64</code> directory at the top of the Mesa source
|
---|
87 | tree.</p>
|
---|
88 | </dd>
|
---|
89 |
|
---|
90 | <dt><code>--sysconfdir=DIR</code></dt>
|
---|
91 | <dd><p>This option specifies the directory where the configuration
|
---|
92 | files will be installed. The default is <code>${prefix}/etc</code>.
|
---|
93 | Currently there's only one config file provided when dri drivers are
|
---|
94 | enabled - it's <code>drirc</code>.</p>
|
---|
95 | </dd>
|
---|
96 |
|
---|
97 | <dt><code>--enable-static, --disable-shared</code></dt>
|
---|
98 | <dd><p>By default, Mesa
|
---|
99 | will build shared libraries. Either of these options will force static
|
---|
100 | libraries to be built. It is not currently possible to build static and
|
---|
101 | shared libraries in a single pass.</p>
|
---|
102 | </dd>
|
---|
103 |
|
---|
104 | <dt><code>CC, CFLAGS, CXX, CXXFLAGS</code></dt>
|
---|
105 | <dd><p>These environment variables
|
---|
106 | control the C and C++ compilers used during the build. By default,
|
---|
107 | <code>gcc</code> and <code>g++</code> are used and the debug/optimisation
|
---|
108 | level is left unchanged.</p>
|
---|
109 | </dd>
|
---|
110 |
|
---|
111 | <dt><code>LDFLAGS</code></dt>
|
---|
112 | <dd><p>An environment variable specifying flags to
|
---|
113 | pass when linking programs. These should be empty and
|
---|
114 | <code>PKG_CONFIG_PATH</code> is recommended to be used instead. If needed
|
---|
115 | it can be used to direct the linker to use libraries in nonstandard
|
---|
116 | directories. For example, <code>LDFLAGS="-L/usr/X11R6/lib"</code>.</p>
|
---|
117 | </dd>
|
---|
118 |
|
---|
119 | <dt><code>PKG_CONFIG_PATH</code></dt>
|
---|
120 | <dd><p>The
|
---|
121 | <code>pkg-config</code> utility is a hard requirement for configuring and
|
---|
122 | building mesa. It is used to search for external libraries
|
---|
123 | on the system. This environment variable is used to control the search
|
---|
124 | path for <code>pkg-config</code>. For instance, setting
|
---|
125 | <code>PKG_CONFIG_PATH=/usr/X11R6/lib/pkgconfig</code> will search for
|
---|
126 | package metadata in <code>/usr/X11R6</code> before the standard
|
---|
127 | directories.</p>
|
---|
128 | </dd>
|
---|
129 | </dl>
|
---|
130 |
|
---|
131 | <p>
|
---|
132 | There are also a few general options for altering the Mesa build:
|
---|
133 | </p>
|
---|
134 | <dl>
|
---|
135 | <dt><code>--enable-debug</code></dt>
|
---|
136 | <dd><p>This option will set the compiler debug/optimisation levels (if the user
|
---|
137 | hasn't already set them via the CFLAGS/CXXFLAGS) and macros to aid in
|
---|
138 | debugging the Mesa libraries.</p>
|
---|
139 |
|
---|
140 | <p>Note that enabling this option can lead to noticeable loss of performance.</p>
|
---|
141 |
|
---|
142 | <dt><code>--disable-asm</code></dt>
|
---|
143 | <dd><p>There are assembly routines
|
---|
144 | available for a few architectures. These will be used by default if
|
---|
145 | one of these architectures is detected. This option ensures that
|
---|
146 | assembly will not be used.</p>
|
---|
147 | </dd>
|
---|
148 |
|
---|
149 | <dt><code>--build=</code></dt>
|
---|
150 | <dt><code>--host=</code></dt>
|
---|
151 | <dd><p>By default, the build will compile code for the architecture that
|
---|
152 | it's running on. In order to build cross-compile Mesa on a x86-64 machine
|
---|
153 | that is to run on a i686, one would need to set the options to:</p>
|
---|
154 |
|
---|
155 | <p><code>--build=x86_64-pc-linux-gnu --host=i686-pc-linux-gnu</code></p>
|
---|
156 |
|
---|
157 | Note that these can vary from distribution to distribution. For more
|
---|
158 | information check with the
|
---|
159 | <a href="https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Specifying-Target-Triplets.html">
|
---|
160 | autoconf manual</a>.
|
---|
161 | Note that you will need to correctly set <code>PKG_CONFIG_PATH</code> as well.
|
---|
162 |
|
---|
163 |
|
---|
164 | <p>In some cases a single compiler is capable of handling both architectures
|
---|
165 | (multilib) in that case one would need to set the <code>CC,CXX</code> variables
|
---|
166 | appending the correct machine options. Seek your compiler documentation for
|
---|
167 | further information -
|
---|
168 | <a href="https://gcc.gnu.org/onlinedocs/gcc/Submodel-Options.html"> gcc
|
---|
169 | machine dependent options</a></p>
|
---|
170 |
|
---|
171 | <p>In addition to specifying correct <code>PKG_CONFIG_PATH</code> for the target
|
---|
172 | architecture, the following should be sufficient to configure multilib Mesa</p>
|
---|
173 |
|
---|
174 | <code>./configure CC="gcc -m32" CXX="g++ -m32" --build=x86_64-pc-linux-gnu --host=i686-pc-linux-gnu ...</code>
|
---|
175 | </dd>
|
---|
176 | </dl>
|
---|
177 |
|
---|
178 |
|
---|
179 | <h2 id="driver">2. GL Driver Options</h2>
|
---|
180 |
|
---|
181 | <p>
|
---|
182 | There are several different driver modes that Mesa can use. These are
|
---|
183 | described in more detail in the <a href="install.html">basic
|
---|
184 | installation instructions</a>. The Mesa driver is controlled through the
|
---|
185 | configure options <code>--enable-glx</code> and <code>--enable-osmesa</code>
|
---|
186 | </p>
|
---|
187 |
|
---|
188 | <h3 id="xlib">Xlib</h3><p>
|
---|
189 | It uses Xlib as a software renderer to do all rendering. It corresponds
|
---|
190 | to the option <code>--enable-glx=xlib</code> or <code>--enable-glx=gallium-xlib</code>.
|
---|
191 |
|
---|
192 | <h3 id="dri">DRI</h3><p>This mode uses the DRI hardware drivers for
|
---|
193 | accelerated OpenGL rendering. To enable use <code>--enable-glx=dri
|
---|
194 | --enable-dri</code>.
|
---|
195 |
|
---|
196 | <!-- DRI specific options -->
|
---|
197 | <dl>
|
---|
198 | <dt><code>--with-dri-driverdir=DIR</code>
|
---|
199 | <dd><p> This option specifies the
|
---|
200 | location the DRI drivers will be installed to and the location libGL
|
---|
201 | will search for DRI drivers. The default is <code>${libdir}/dri</code>.
|
---|
202 | <dt><code>--with-dri-drivers=DRIVER,DRIVER,...</code>
|
---|
203 | <dd><p> This option
|
---|
204 | allows a specific set of DRI drivers to be built. For example,
|
---|
205 | <code>--with-dri-drivers="swrast,i965,radeon,nouveau"</code>. By
|
---|
206 | default, the drivers will be chosen depending on the target platform.
|
---|
207 | See the directory <code>src/mesa/drivers/dri</code> in the source tree
|
---|
208 | for available drivers. Beware that the swrast DRI driver is used by both
|
---|
209 | libGL and the X.Org xserver GLX module to do software rendering, so you
|
---|
210 | may run into problems if it is not available.
|
---|
211 | <!-- This explanation might be totally bogus. Kristian? -->
|
---|
212 | <dt><code>--disable-driglx-direct</code>
|
---|
213 | <dd><p> Disable direct rendering in
|
---|
214 | GLX. Normally, direct hardware rendering through the DRI drivers and
|
---|
215 | indirect software rendering are enabled in GLX. This option disables
|
---|
216 | direct rendering entirely. It can be useful on architectures where
|
---|
217 | kernel DRM modules are not available.
|
---|
218 | <dt><code>--enable-glx-tls</code> <dd><p>
|
---|
219 | Enable Thread Local Storage (TLS) in
|
---|
220 | GLX.
|
---|
221 | <dt><code>--with-expat=DIR</code>
|
---|
222 | <dd><p><strong>DEPRECATED</strong>, use <code>PKG_CONFIG_PATH</code> instead.</p>
|
---|
223 | <p>The DRI-enabled libGL uses expat to
|
---|
224 | parse the DRI configuration files in <code>${sysconfdir}/drirc</code> and
|
---|
225 | <code>~/.drirc</code>. This option allows a specific expat installation
|
---|
226 | to be used. For example, <code>--with-expat=/usr/local</code> will
|
---|
227 | search for expat headers and libraries in <code>/usr/local/include</code>
|
---|
228 | and <code>/usr/local/lib</code>, respectively.
|
---|
229 | </dl>
|
---|
230 |
|
---|
231 | <h3 id="osmesa">OSMesa </h3><p> No libGL is built in this
|
---|
232 | mode. Instead, the driver code is built into the Off-Screen Mesa
|
---|
233 | (OSMesa) library. See the <a href="osmesa.html">Off-Screen Rendering</a>
|
---|
234 | page for more details. It corresponds to the option
|
---|
235 | <code>--enable-osmesa</code>.
|
---|
236 |
|
---|
237 | <!-- OSMesa specific options -->
|
---|
238 | <dl>
|
---|
239 | <dt><code>--with-osmesa-bits=BITS</code>
|
---|
240 | <dd><p> This option allows the size
|
---|
241 | of the color channel in bits to be specified. By default, an 8-bit
|
---|
242 | channel will be used, and the driver will be named libOSMesa. Other
|
---|
243 | options are 16- and 32-bit color channels, which will add the bit size
|
---|
244 | to the library name. For example, <code>--with-osmesa-bits=16</code>
|
---|
245 | will create the libOSMesa16 library with a 16-bit color channel.
|
---|
246 | </dl>
|
---|
247 |
|
---|
248 |
|
---|
249 | <h2 id="library">3. Library Options</h2>
|
---|
250 |
|
---|
251 | <p>
|
---|
252 | The configure script provides more fine grained control over the libraries
|
---|
253 | that will be built.
|
---|
254 |
|
---|
255 | </div>
|
---|
256 | </body>
|
---|
257 | </html>
|
---|