Andreas Boll | ecd5c7c | 2012-06-12 09:05:03 +0200 | [diff] [blame] | 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> |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 8 | <body> |
| 9 | |
Andreas Boll | b5da52a | 2012-09-18 18:57:02 +0200 | [diff] [blame] | 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 | |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 17 | <h1>Compilation and Installation using Autoconf</h1> |
| 18 | |
| 19 | <ol> |
Andreas Boll | dae9b0f | 2012-06-25 21:52:47 +0200 | [diff] [blame] | 20 | <li><p><a href="#basic">Basic Usage</a></li> |
| 21 | <li><p><a href="#driver">Driver Options</a> |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 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> |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 27 | </ol> |
| 28 | |
| 29 | |
Christopher Yeleighton | 7f94d98 | 2012-03-12 12:21:24 -0600 | [diff] [blame] | 30 | <h2 id="basic">1. Basic Usage</h2> |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 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 |
Dan Nicholson | 460d25d | 2008-03-07 12:04:17 -0800 | [diff] [blame] | 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: |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 51 | </p> |
| 52 | |
| 53 | <pre> |
| 54 | make |
| 55 | </pre> |
| 56 | |
| 57 | <p> |
| 58 | This will produce libGL.so and 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: |
Andreas Boll | 63eade4 | 2012-09-20 16:01:03 +0200 | [diff] [blame] | 65 | </p> |
| 66 | <dl> |
| 67 | <dt><code>--prefix=PREFIX</code></dt> |
| 68 | <dd><p>This is the root directory where |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 69 | files will be installed by <code>make install</code>. The default is |
Andreas Boll | 63eade4 | 2012-09-20 16:01:03 +0200 | [diff] [blame] | 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 |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 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 |
Andreas Boll | 63eade4 | 2012-09-20 16:01:03 +0200 | [diff] [blame] | 77 | <code>${prefix}</code>.</p> |
| 78 | </dd> |
| 79 | |
| 80 | <dt><code>--libdir=LIBDIR</code></dt> |
| 81 | <dd><p>This option specifies the directory |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 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 |
Andreas Boll | 63eade4 | 2012-09-20 16:01:03 +0200 | [diff] [blame] | 87 | tree.</p> |
| 88 | </dd> |
| 89 | |
| 90 | <dt><code>--enable-static, --disable-shared</code></dt> |
| 91 | <dd><p>By default, Mesa |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 92 | will build shared libraries. Either of these options will force static |
| 93 | libraries to be built. It is not currently possible to build static and |
Andreas Boll | 63eade4 | 2012-09-20 16:01:03 +0200 | [diff] [blame] | 94 | shared libraries in a single pass.</p> |
| 95 | </dd> |
| 96 | |
| 97 | <dt><code>CC, CFLAGS, CXX, CXXFLAGS</code></dt> |
| 98 | <dd><p>These environment variables |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 99 | control the C and C++ compilers used during the build. By default, |
Emil Velikov | 478f827 | 2014-08-13 21:31:33 +0100 | [diff] [blame^] | 100 | <code>gcc</code> and <code>g++</code> are used and the debug/optimisation |
| 101 | level is left unchanged.</p> |
Andreas Boll | 63eade4 | 2012-09-20 16:01:03 +0200 | [diff] [blame] | 102 | </dd> |
| 103 | |
| 104 | <dt><code>LDFLAGS</code></dt> |
| 105 | <dd><p>An environment variable specifying flags to |
Emil Velikov | 478f827 | 2014-08-13 21:31:33 +0100 | [diff] [blame^] | 106 | pass when linking programs. These should be empty and |
| 107 | <code>PKG_CONFIG_PATH</code> is recommended to be used instead. If needed |
| 108 | it can be used to direct the linker to use libraries in nonstandard |
| 109 | directories. For example, <code>LDFLAGS="-L/usr/X11R6/lib"</code>.</p> |
Andreas Boll | 63eade4 | 2012-09-20 16:01:03 +0200 | [diff] [blame] | 110 | </dd> |
| 111 | |
| 112 | <dt><code>PKG_CONFIG_PATH</code></dt> |
Emil Velikov | 478f827 | 2014-08-13 21:31:33 +0100 | [diff] [blame^] | 113 | <dd><p>The |
| 114 | <code>pkg-config</code> utility is a hard requirement for cofiguring and |
| 115 | building mesa. It is used to search for external libraries |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 116 | on the system. This environment variable is used to control the search |
| 117 | path for <code>pkg-config</code>. For instance, setting |
| 118 | <code>PKG_CONFIG_PATH=/usr/X11R6/lib/pkgconfig</code> will search for |
| 119 | package metadata in <code>/usr/X11R6</code> before the standard |
Andreas Boll | 63eade4 | 2012-09-20 16:01:03 +0200 | [diff] [blame] | 120 | directories.</p> |
| 121 | </dd> |
| 122 | </dl> |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 123 | |
| 124 | <p> |
| 125 | There are also a few general options for altering the Mesa build: |
Andreas Boll | 63eade4 | 2012-09-20 16:01:03 +0200 | [diff] [blame] | 126 | </p> |
| 127 | <dl> |
Andreas Boll | 63eade4 | 2012-09-20 16:01:03 +0200 | [diff] [blame] | 128 | <dt><code>--enable-debug</code></dt> |
| 129 | <dd><p>This option will enable compiler |
| 130 | options and macros to aid in debugging the Mesa libraries.</p> |
| 131 | </dd> |
| 132 | |
| 133 | <dt><code>--disable-asm</code></dt> |
| 134 | <dd><p>There are assembly routines |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 135 | available for a few architectures. These will be used by default if |
| 136 | one of these architectures is detected. This option ensures that |
Andreas Boll | 63eade4 | 2012-09-20 16:01:03 +0200 | [diff] [blame] | 137 | assembly will not be used.</p> |
| 138 | </dd> |
| 139 | |
Emil Velikov | 478f827 | 2014-08-13 21:31:33 +0100 | [diff] [blame^] | 140 | <dt><code>--build=</code></dt> |
| 141 | <dt><code>--host=</code></dt> |
| 142 | <dd><p>By default, the build will compile code for the architecture that |
| 143 | it's running on. In order to build cross-compile Mesa on a x86-64 machine |
| 144 | that is to run on a i686, one would need to set the options to:</p> |
| 145 | |
| 146 | <p><code>--build=i686-pc-linux-gnu --host=i686-pc-linux-gnu</code></p> |
| 147 | |
| 148 | Note that these can vary from distribution to distribution. For more |
| 149 | information check with the |
| 150 | <a href="https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Specifying-Target-Triplets.html"> |
| 151 | autoconf manual</a>. |
| 152 | |
| 153 | |
| 154 | <p>In some cases a single compiler is capable of handling both architectures |
| 155 | (multilib) in that case one would need to set the <code>CC,CXX</code> variables |
| 156 | appending the correct machine options. Seek your compiler documentation for |
| 157 | further information - |
| 158 | <a href="https://gcc.gnu.org/onlinedocs/gcc/Submodel-Options.html"> gcc |
| 159 | machine dependent options</a></p> |
| 160 | |
| 161 | <p>The following should be sufficient to configure multilib Mesa</p> |
| 162 | |
| 163 | <code>./configure CC="gcc -m32" CXX="g++ -m32" --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu ...</code> |
Andreas Boll | 63eade4 | 2012-09-20 16:01:03 +0200 | [diff] [blame] | 164 | </dd> |
| 165 | </dl> |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 166 | |
| 167 | |
Christopher Yeleighton | 7f94d98 | 2012-03-12 12:21:24 -0600 | [diff] [blame] | 168 | <h2 id="driver">2. Driver Options</h2> |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 169 | |
| 170 | <p> |
| 171 | There are several different driver modes that Mesa can use. These are |
| 172 | described in more detail in the <a href="install.html">basic |
| 173 | installation instructions</a>. The Mesa driver is controlled through the |
Matt Turner | 66be7b4 | 2013-09-09 16:27:18 -0700 | [diff] [blame] | 174 | configure options <code>--enable-xlib-glx</code>, <code>--enable-osmesa</code>, |
| 175 | and <code>--enable-dri</code>. |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 176 | </p> |
| 177 | |
Matt Turner | 66be7b4 | 2013-09-09 16:27:18 -0700 | [diff] [blame] | 178 | <h3 id="xlib">Xlib</h3><p> |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 179 | It uses Xlib as a software renderer to do all rendering. It corresponds |
Matt Turner | 66be7b4 | 2013-09-09 16:27:18 -0700 | [diff] [blame] | 180 | to the option <code>--enable-xlib-glx</code>. The libX11 and libXext |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 181 | libraries, as well as the X11 development headers, will be need to |
| 182 | support the Xlib driver. |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 183 | |
Andreas Boll | dae9b0f | 2012-06-25 21:52:47 +0200 | [diff] [blame] | 184 | <h3 id="dri">DRI</h3><p>This mode uses the DRI hardware drivers for |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 185 | accelerated OpenGL rendering. Enable the DRI drivers with the option |
Matt Turner | 66be7b4 | 2013-09-09 16:27:18 -0700 | [diff] [blame] | 186 | <code>--enable-dri</code>. See the <a href="install.html">basic |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 187 | installation instructions</a> for details on prerequisites for the DRI |
| 188 | drivers. |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 189 | |
| 190 | <!-- DRI specific options --> |
Christopher Yeleighton | 7f94d98 | 2012-03-12 12:21:24 -0600 | [diff] [blame] | 191 | <dl> |
Andreas Boll | dae9b0f | 2012-06-25 21:52:47 +0200 | [diff] [blame] | 192 | <dt><code>--with-dri-driverdir=DIR</code> |
| 193 | <dd><p> This option specifies the |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 194 | location the DRI drivers will be installed to and the location libGL |
Dan Nicholson | 5dbbde5 | 2008-05-06 06:21:41 -0700 | [diff] [blame] | 195 | will search for DRI drivers. The default is <code>${libdir}/dri</code>. |
Andreas Boll | dae9b0f | 2012-06-25 21:52:47 +0200 | [diff] [blame] | 196 | <dt><code>--with-dri-drivers=DRIVER,DRIVER,...</code> |
| 197 | <dd><p> This option |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 198 | allows a specific set of DRI drivers to be built. For example, |
Dan Nicholson | 5cae1b7 | 2008-06-30 10:28:02 -0700 | [diff] [blame] | 199 | <code>--with-dri-drivers="swrast,i965,radeon,nouveau"</code>. By |
| 200 | default, the drivers will be chosen depending on the target platform. |
| 201 | See the directory <code>src/mesa/drivers/dri</code> in the source tree |
| 202 | for available drivers. Beware that the swrast DRI driver is used by both |
| 203 | libGL and the X.Org xserver GLX module to do software rendering, so you |
Christopher Yeleighton | 7f94d98 | 2012-03-12 12:21:24 -0600 | [diff] [blame] | 204 | may run into problems if it is not available. |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 205 | <!-- This explanation might be totally bogus. Kristian? --> |
Andreas Boll | dae9b0f | 2012-06-25 21:52:47 +0200 | [diff] [blame] | 206 | <dt><code>--disable-driglx-direct</code> |
| 207 | <dd><p> Disable direct rendering in |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 208 | GLX. Normally, direct hardware rendering through the DRI drivers and |
| 209 | indirect software rendering are enabled in GLX. This option disables |
| 210 | direct rendering entirely. It can be useful on architectures where |
| 211 | kernel DRM modules are not available. |
Andreas Boll | dae9b0f | 2012-06-25 21:52:47 +0200 | [diff] [blame] | 212 | <dt><code>--enable-glx-tls</code> <dd><p> |
Christopher Yeleighton | 7f94d98 | 2012-03-12 12:21:24 -0600 | [diff] [blame] | 213 | Enable Thread Local Storage (TLS) in |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 214 | GLX. |
Emil Velikov | 478f827 | 2014-08-13 21:31:33 +0100 | [diff] [blame^] | 215 | <dt><code>--with-expat=DIR</code> |
| 216 | <dd><p><strong>DEPRECATED</strong>, use <code>PKG_CONFIG_PATH</code> instead.</p> |
| 217 | <p>The DRI-enabled libGL uses expat to |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 218 | parse the DRI configuration files in <code>/etc/drirc</code> and |
| 219 | <code>~/.drirc</code>. This option allows a specific expat installation |
| 220 | to be used. For example, <code>--with-expat=/usr/local</code> will |
| 221 | search for expat headers and libraries in <code>/usr/local/include</code> |
| 222 | and <code>/usr/local/lib</code>, respectively. |
Christopher Yeleighton | 7f94d98 | 2012-03-12 12:21:24 -0600 | [diff] [blame] | 223 | </dl> |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 224 | |
Christopher Yeleighton | 7f94d98 | 2012-03-12 12:21:24 -0600 | [diff] [blame] | 225 | <h3 id="osmesa">OSMesa </h3><p> No libGL is built in this |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 226 | mode. Instead, the driver code is built into the Off-Screen Mesa |
| 227 | (OSMesa) library. See the <a href="osmesa.html">Off-Screen Rendering</a> |
Matt Turner | 66be7b4 | 2013-09-09 16:27:18 -0700 | [diff] [blame] | 228 | page for more details. It corresponds to the option |
| 229 | <code>--enable-osmesa</code>. |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 230 | |
| 231 | <!-- OSMesa specific options --> |
Christopher Yeleighton | 7f94d98 | 2012-03-12 12:21:24 -0600 | [diff] [blame] | 232 | <dl> |
Andreas Boll | dae9b0f | 2012-06-25 21:52:47 +0200 | [diff] [blame] | 233 | <dt><code>--with-osmesa-bits=BITS</code> |
Christopher Yeleighton | 7f94d98 | 2012-03-12 12:21:24 -0600 | [diff] [blame] | 234 | <dd><p> This option allows the size |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 235 | of the color channel in bits to be specified. By default, an 8-bit |
| 236 | channel will be used, and the driver will be named libOSMesa. Other |
| 237 | options are 16- and 32-bit color channels, which will add the bit size |
| 238 | to the library name. For example, <code>--with-osmesa-bits=16</code> |
| 239 | will create the libOSMesa16 library with a 16-bit color channel. |
Christopher Yeleighton | 7f94d98 | 2012-03-12 12:21:24 -0600 | [diff] [blame] | 240 | </dl> |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 241 | |
| 242 | |
Christopher Yeleighton | 7f94d98 | 2012-03-12 12:21:24 -0600 | [diff] [blame] | 243 | <h2 id="library">3. Library Options</h2> |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 244 | |
| 245 | <p> |
| 246 | The configure script provides more fine grained control over the GL |
| 247 | libraries that will be built. More details on the specific GL libraries |
| 248 | can be found in the <a href="install.html">basic installation |
| 249 | instructions</a>. |
| 250 | |
Andreas Boll | b5da52a | 2012-09-18 18:57:02 +0200 | [diff] [blame] | 251 | </div> |
Dan Nicholson | 4c5a2b3 | 2007-12-23 16:38:18 -0800 | [diff] [blame] | 252 | </body> |
| 253 | </html> |