2015-11-21 19:36:47 -07:00
|
|
|
<!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>Compilation and Installation using Autoconf</title>
|
|
|
|
<link rel="stylesheet" type="text/css" href="mesa.css">
|
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
|
|
|
|
<div class="header">
|
|
|
|
<h1>The Mesa 3D Graphics Library</h1>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<iframe src="contents.html"></iframe>
|
|
|
|
<div class="content">
|
|
|
|
|
|
|
|
<h1>Compilation and Installation using Autoconf</h1>
|
|
|
|
|
|
|
|
<ol>
|
|
|
|
<li><p><a href="#basic">Basic Usage</a></li>
|
|
|
|
<li><p><a href="#driver">Driver Options</a>
|
|
|
|
<ul>
|
|
|
|
<li><a href="#xlib">Xlib Driver Options</a></li>
|
|
|
|
<li><a href="#dri">DRI Driver Options</a></li>
|
|
|
|
<li><a href="#osmesa">OSMesa Driver Options</a></li>
|
|
|
|
</ul>
|
|
|
|
</ol>
|
|
|
|
|
|
|
|
|
|
|
|
<h2 id="basic">1. Basic Usage</h2>
|
|
|
|
|
|
|
|
<p>
|
|
|
|
The autoconf generated configure script can be used to guess your
|
|
|
|
platform and change various options for building Mesa. To use the
|
|
|
|
configure script, type:
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
./configure
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
<p>
|
|
|
|
To see a short description of all the options, type <code>./configure
|
|
|
|
--help</code>. If you are using a development snapshot and the configure
|
|
|
|
script does not exist, type <code>./autogen.sh</code> to generate it
|
|
|
|
first. If you know the options you want to pass to
|
|
|
|
<code>configure</code>, you can pass them to <code>autogen.sh</code>. It
|
|
|
|
will run <code>configure</code> with these options after it is
|
|
|
|
generated. Once you have run <code>configure</code> and set the options
|
|
|
|
to your preference, type:
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
make
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
<p>
|
2018-10-23 00:35:32 -06:00
|
|
|
This will produce libGL.so and/or several other libraries depending on the
|
2015-11-21 19:36:47 -07:00
|
|
|
options you have chosen. Later, if you want to rebuild for a different
|
|
|
|
configuration run <code>make realclean</code> before rebuilding.
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<p>
|
|
|
|
Some of the generic autoconf options are used with Mesa:
|
|
|
|
</p>
|
|
|
|
<dl>
|
|
|
|
<dt><code>--prefix=PREFIX</code></dt>
|
|
|
|
<dd><p>This is the root directory where
|
|
|
|
files will be installed by <code>make install</code>. The default is
|
|
|
|
<code>/usr/local</code>.</p>
|
|
|
|
</dd>
|
|
|
|
|
|
|
|
<dt><code>--exec-prefix=EPREFIX</code></dt>
|
|
|
|
<dd><p>This is the root directory
|
|
|
|
where architecture-dependent files will be installed. In Mesa, this is
|
|
|
|
only used to derive the directory for the libraries. The default is
|
|
|
|
<code>${prefix}</code>.</p>
|
|
|
|
</dd>
|
|
|
|
|
|
|
|
<dt><code>--libdir=LIBDIR</code></dt>
|
|
|
|
<dd><p>This option specifies the directory
|
|
|
|
where the GL libraries will be installed. The default is
|
|
|
|
<code>${exec_prefix}/lib</code>. It also serves as the name of the
|
|
|
|
library staging area in the source tree. For instance, if the option
|
|
|
|
<code>--libdir=/usr/local/lib64</code> is used, the libraries will be
|
|
|
|
created in a <code>lib64</code> directory at the top of the Mesa source
|
|
|
|
tree.</p>
|
|
|
|
</dd>
|
|
|
|
|
2016-05-29 04:11:54 -06:00
|
|
|
<dt><code>--sysconfdir=DIR</code></dt>
|
|
|
|
<dd><p>This option specifies the directory where the configuration
|
|
|
|
files will be installed. The default is <code>${prefix}/etc</code>.
|
|
|
|
Currently there's only one config file provided when dri drivers are
|
|
|
|
enabled - it's <code>drirc</code>.</p>
|
|
|
|
</dd>
|
|
|
|
|
2015-11-21 19:36:47 -07:00
|
|
|
<dt><code>--enable-static, --disable-shared</code></dt>
|
|
|
|
<dd><p>By default, Mesa
|
|
|
|
will build shared libraries. Either of these options will force static
|
|
|
|
libraries to be built. It is not currently possible to build static and
|
|
|
|
shared libraries in a single pass.</p>
|
|
|
|
</dd>
|
|
|
|
|
|
|
|
<dt><code>CC, CFLAGS, CXX, CXXFLAGS</code></dt>
|
|
|
|
<dd><p>These environment variables
|
|
|
|
control the C and C++ compilers used during the build. By default,
|
|
|
|
<code>gcc</code> and <code>g++</code> are used and the debug/optimisation
|
|
|
|
level is left unchanged.</p>
|
|
|
|
</dd>
|
|
|
|
|
|
|
|
<dt><code>LDFLAGS</code></dt>
|
|
|
|
<dd><p>An environment variable specifying flags to
|
|
|
|
pass when linking programs. These should be empty and
|
|
|
|
<code>PKG_CONFIG_PATH</code> is recommended to be used instead. If needed
|
|
|
|
it can be used to direct the linker to use libraries in nonstandard
|
|
|
|
directories. For example, <code>LDFLAGS="-L/usr/X11R6/lib"</code>.</p>
|
|
|
|
</dd>
|
|
|
|
|
|
|
|
<dt><code>PKG_CONFIG_PATH</code></dt>
|
|
|
|
<dd><p>The
|
2018-10-23 00:35:32 -06:00
|
|
|
<code>pkg-config</code> utility is a hard requirement for configuring and
|
2015-11-21 19:36:47 -07:00
|
|
|
building mesa. It is used to search for external libraries
|
|
|
|
on the system. This environment variable is used to control the search
|
|
|
|
path for <code>pkg-config</code>. For instance, setting
|
|
|
|
<code>PKG_CONFIG_PATH=/usr/X11R6/lib/pkgconfig</code> will search for
|
|
|
|
package metadata in <code>/usr/X11R6</code> before the standard
|
|
|
|
directories.</p>
|
|
|
|
</dd>
|
|
|
|
</dl>
|
|
|
|
|
|
|
|
<p>
|
|
|
|
There are also a few general options for altering the Mesa build:
|
|
|
|
</p>
|
|
|
|
<dl>
|
|
|
|
<dt><code>--enable-debug</code></dt>
|
2018-10-23 00:35:32 -06:00
|
|
|
<dd><p>This option will set the compiler debug/optimisation levels (if the user
|
|
|
|
hasn't already set them via the CFLAGS/CXXFLAGS) and macros to aid in
|
|
|
|
debugging the Mesa libraries.</p>
|
|
|
|
|
|
|
|
<p>Note that enabling this option can lead to noticeable loss of performance.</p>
|
2015-11-21 19:36:47 -07:00
|
|
|
|
|
|
|
<dt><code>--disable-asm</code></dt>
|
|
|
|
<dd><p>There are assembly routines
|
|
|
|
available for a few architectures. These will be used by default if
|
|
|
|
one of these architectures is detected. This option ensures that
|
|
|
|
assembly will not be used.</p>
|
|
|
|
</dd>
|
|
|
|
|
|
|
|
<dt><code>--build=</code></dt>
|
|
|
|
<dt><code>--host=</code></dt>
|
|
|
|
<dd><p>By default, the build will compile code for the architecture that
|
|
|
|
it's running on. In order to build cross-compile Mesa on a x86-64 machine
|
|
|
|
that is to run on a i686, one would need to set the options to:</p>
|
|
|
|
|
|
|
|
<p><code>--build=x86_64-pc-linux-gnu --host=i686-pc-linux-gnu</code></p>
|
|
|
|
|
|
|
|
Note that these can vary from distribution to distribution. For more
|
|
|
|
information check with the
|
|
|
|
<a href="https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Specifying-Target-Triplets.html">
|
|
|
|
autoconf manual</a>.
|
|
|
|
Note that you will need to correctly set <code>PKG_CONFIG_PATH</code> as well.
|
|
|
|
|
|
|
|
|
|
|
|
<p>In some cases a single compiler is capable of handling both architectures
|
|
|
|
(multilib) in that case one would need to set the <code>CC,CXX</code> variables
|
|
|
|
appending the correct machine options. Seek your compiler documentation for
|
|
|
|
further information -
|
|
|
|
<a href="https://gcc.gnu.org/onlinedocs/gcc/Submodel-Options.html"> gcc
|
|
|
|
machine dependent options</a></p>
|
|
|
|
|
|
|
|
<p>In addition to specifying correct <code>PKG_CONFIG_PATH</code> for the target
|
|
|
|
architecture, the following should be sufficient to configure multilib Mesa</p>
|
|
|
|
|
|
|
|
<code>./configure CC="gcc -m32" CXX="g++ -m32" --build=x86_64-pc-linux-gnu --host=i686-pc-linux-gnu ...</code>
|
|
|
|
</dd>
|
|
|
|
</dl>
|
|
|
|
|
|
|
|
|
2018-10-23 00:35:32 -06:00
|
|
|
<h2 id="driver">2. GL Driver Options</h2>
|
2015-11-21 19:36:47 -07:00
|
|
|
|
|
|
|
<p>
|
|
|
|
There are several different driver modes that Mesa can use. These are
|
|
|
|
described in more detail in the <a href="install.html">basic
|
|
|
|
installation instructions</a>. The Mesa driver is controlled through the
|
2018-10-23 00:35:32 -06:00
|
|
|
configure options <code>--enable-glx</code> and <code>--enable-osmesa</code>
|
2015-11-21 19:36:47 -07:00
|
|
|
</p>
|
|
|
|
|
|
|
|
<h3 id="xlib">Xlib</h3><p>
|
|
|
|
It uses Xlib as a software renderer to do all rendering. It corresponds
|
2018-10-23 00:35:32 -06:00
|
|
|
to the option <code>--enable-glx=xlib</code> or <code>--enable-glx=gallium-xlib</code>.
|
2015-11-21 19:36:47 -07:00
|
|
|
|
|
|
|
<h3 id="dri">DRI</h3><p>This mode uses the DRI hardware drivers for
|
2018-10-23 00:35:32 -06:00
|
|
|
accelerated OpenGL rendering. To enable use <code>--enable-glx=dri
|
|
|
|
--enable-dri</code>.
|
2015-11-21 19:36:47 -07:00
|
|
|
|
|
|
|
<!-- DRI specific options -->
|
|
|
|
<dl>
|
|
|
|
<dt><code>--with-dri-driverdir=DIR</code>
|
|
|
|
<dd><p> This option specifies the
|
|
|
|
location the DRI drivers will be installed to and the location libGL
|
|
|
|
will search for DRI drivers. The default is <code>${libdir}/dri</code>.
|
|
|
|
<dt><code>--with-dri-drivers=DRIVER,DRIVER,...</code>
|
|
|
|
<dd><p> This option
|
|
|
|
allows a specific set of DRI drivers to be built. For example,
|
|
|
|
<code>--with-dri-drivers="swrast,i965,radeon,nouveau"</code>. By
|
|
|
|
default, the drivers will be chosen depending on the target platform.
|
|
|
|
See the directory <code>src/mesa/drivers/dri</code> in the source tree
|
|
|
|
for available drivers. Beware that the swrast DRI driver is used by both
|
|
|
|
libGL and the X.Org xserver GLX module to do software rendering, so you
|
|
|
|
may run into problems if it is not available.
|
|
|
|
<!-- This explanation might be totally bogus. Kristian? -->
|
|
|
|
<dt><code>--disable-driglx-direct</code>
|
|
|
|
<dd><p> Disable direct rendering in
|
|
|
|
GLX. Normally, direct hardware rendering through the DRI drivers and
|
|
|
|
indirect software rendering are enabled in GLX. This option disables
|
|
|
|
direct rendering entirely. It can be useful on architectures where
|
|
|
|
kernel DRM modules are not available.
|
|
|
|
<dt><code>--enable-glx-tls</code> <dd><p>
|
|
|
|
Enable Thread Local Storage (TLS) in
|
|
|
|
GLX.
|
|
|
|
<dt><code>--with-expat=DIR</code>
|
|
|
|
<dd><p><strong>DEPRECATED</strong>, use <code>PKG_CONFIG_PATH</code> instead.</p>
|
|
|
|
<p>The DRI-enabled libGL uses expat to
|
2016-05-29 04:11:54 -06:00
|
|
|
parse the DRI configuration files in <code>${sysconfdir}/drirc</code> and
|
2015-11-21 19:36:47 -07:00
|
|
|
<code>~/.drirc</code>. This option allows a specific expat installation
|
|
|
|
to be used. For example, <code>--with-expat=/usr/local</code> will
|
|
|
|
search for expat headers and libraries in <code>/usr/local/include</code>
|
|
|
|
and <code>/usr/local/lib</code>, respectively.
|
|
|
|
</dl>
|
|
|
|
|
|
|
|
<h3 id="osmesa">OSMesa </h3><p> No libGL is built in this
|
|
|
|
mode. Instead, the driver code is built into the Off-Screen Mesa
|
|
|
|
(OSMesa) library. See the <a href="osmesa.html">Off-Screen Rendering</a>
|
|
|
|
page for more details. It corresponds to the option
|
|
|
|
<code>--enable-osmesa</code>.
|
|
|
|
|
|
|
|
<!-- OSMesa specific options -->
|
|
|
|
<dl>
|
|
|
|
<dt><code>--with-osmesa-bits=BITS</code>
|
|
|
|
<dd><p> This option allows the size
|
|
|
|
of the color channel in bits to be specified. By default, an 8-bit
|
|
|
|
channel will be used, and the driver will be named libOSMesa. Other
|
|
|
|
options are 16- and 32-bit color channels, which will add the bit size
|
|
|
|
to the library name. For example, <code>--with-osmesa-bits=16</code>
|
|
|
|
will create the libOSMesa16 library with a 16-bit color channel.
|
|
|
|
</dl>
|
|
|
|
|
|
|
|
|
|
|
|
<h2 id="library">3. Library Options</h2>
|
|
|
|
|
|
|
|
<p>
|
2018-10-23 00:35:32 -06:00
|
|
|
The configure script provides more fine grained control over the libraries
|
|
|
|
that will be built.
|
2015-11-21 19:36:47 -07:00
|
|
|
|
|
|
|
</div>
|
|
|
|
</body>
|
|
|
|
</html>
|