summaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
authorBrian Paul <[email protected]>2019-03-07 20:39:49 -0700
committerBrian Paul <[email protected]>2019-03-11 20:08:16 -0600
commit45c6da5a48b52594ea7f116a56ce92481fbb964a (patch)
tree1dd185db1eeec371b05adc74b89b139f1e24d787 /docs
parent187a527ed762b10e6e3156c678fea7aab0789157 (diff)
docs: try to improve the Meson documentation (v2)
Add new Introduction and Advanced Usage sections. Spell out a few more details, like "ninja install". Improve the layout around example commands. Fix grammatical errors and tighten up the text. Explain the --prefix option. v2: Remove language about 'ninja clean' and move link to Meson information about separate build directories earlier in the page. Reviewed-by: Eric Engestrom <[email protected]>
Diffstat (limited to 'docs')
-rw-r--r--docs/contents.html2
-rw-r--r--docs/meson.html144
2 files changed, 106 insertions, 40 deletions
diff --git a/docs/contents.html b/docs/contents.html
index 63647766bce..619ac3d7bb2 100644
--- a/docs/contents.html
+++ b/docs/contents.html
@@ -42,8 +42,8 @@
<li><a href="download.html" target="_parent">Downloading / Unpacking</a>
<li><a href="install.html" target="_parent">Compiling / Installing</a>
<ul>
- <li><a href="autoconf.html" target="_parent">Autoconf</a></li>
<li><a href="meson.html" target="_parent">Meson</a></li>
+ <li><a href="autoconf.html" target="_parent">Autoconf (deprecated)</a></li>
</ul>
</li>
<li><a href="precompiled.html" target="_parent">Precompiled Libraries</a>
diff --git a/docs/meson.html b/docs/meson.html
index f21479ce223..7ffef817f42 100644
--- a/docs/meson.html
+++ b/docs/meson.html
@@ -17,65 +17,105 @@
<h1>Compilation and Installation using Meson</h1>
<ul>
+ <li><a href="#intro">Introduction</a></li>
<li><a href="#basic">Basic Usage</a></li>
+ <li><a href="#advanced">Advanced Usage</a></li>
<li><a href="#cross-compilation">Cross-compilation and 32-bit builds</a></li>
</ul>
-<h2 id="basic">1. Basic Usage</h2>
+<h2 id="intro">1. Introduction</h2>
-<p><strong>The Meson build system is generally considered stable and ready
-for production</strong></p>
+<p>For general information about Meson see the
+<a href="http://mesonbuild.com/">Meson website</a>.</p>
-<p>The meson build is tested on Linux, macOS, Cygwin and Haiku, FreeBSD,
+<p><strong>Mesa's Meson build system is generally considered stable and ready
+for production.</strong></p>
+
+<p>The Meson build of Mesa is tested on Linux, macOS, Cygwin and Haiku, FreeBSD,
DragonflyBSD, NetBSD, and should work on OpenBSD.</p>
+<p>If Meson is not already installed on your system, you can typically
+install it with your package installer. For example:</p>
+<pre>
+sudo apt-get install meson # Ubuntu
+</pre>
+or
+<pre>
+sudo dnf install meson # Fedora
+</pre>
+
<p><strong>Mesa requires Meson >= 0.45.0 to build.</strong>
Some older versions of meson do not check that they are too old and will error
out in odd ways.
</p>
+<p>You'll also need <a href="https://ninja-build.org/">Ninja</a>.
+If it's not already installed, use apt-get or dnf to install
+the <em>ninja-build</em> package.
+</p>
+
+<h2 id="basic">2. Basic Usage</h2>
+
<p>
The meson program is used to configure the source directory and generates
either a ninja build file or Visual Studio® build files. The latter must
-be enabled via the <code>--backend</code> switch, as ninja is the default backend on all
-operating systems. Meson only supports out-of-tree builds, and must be passed a
+be enabled via the <code>--backend</code> switch, as ninja is the default
+backend on all
+operating systems.
+</p>
+
+<p>
+Meson only supports out-of-tree builds, and must be passed a
directory to put built and generated sources into. We'll call that directory
-"build" for examples.
+"build" here.
+It's recommended to create a
+<a href="http://mesonbuild.com/Using-multiple-build-directories.html">
+separate build directory</a> for each configuration you might want to use.
+</p>
+
+
+
</p>
+<p>Basic configuration is done with:</p>
+
<pre>
- meson build/
+meson build/
</pre>
<p>
-To see a description of your options you can run <code>meson configure</code>
-along with a build directory to view the selected options for. This will show
-your meson global arguments and project arguments, along with their defaults
-and your local settings.
+This will create the build directory.
+If any dependencies are missing, you can install them, or try to remove
+the dependency with a Meson configuration option (see below).
+</p>
+
+<p>
+To review the options which Meson chose, run:
</p>
+<pre>
+meson configure build/
+</pre>
<p>
-Meson does not currently support listing options before configure a build
-directory, but this feature is being discussed upstream.
+Meson does not currently support listing configuration options before
+running "meson build/" but this feature is being discussed upstream.
For now, we have a <code>bin/meson-options.py</code> script that prints
the options for you.
If that script doesn't work for some reason, you can always look in the
<code>meson_options.txt</code> file at the root of the project.
</p>
-<pre>
- meson configure build/
-</pre>
-
<p>
-With additional arguments <code>meson configure</code> is used to change
-options on already configured build directory. All options passed to this
-command are in the form <code>-D "command"="value"</code>.
+With additional arguments <code>meson configure</code> can be used to change
+options for a previously configured build directory.
+All options passed to this command are in the form
+<code>-D "option"="value"</code>.
+For example:
</p>
<pre>
- meson configure build/ -Dprefix=/tmp/install -Dglx=true
+meson configure build/ -Dprefix=/tmp/install -Dglx=true
</pre>
<p>
@@ -88,33 +128,59 @@ and brackets to represent an empty list (<code>-D platforms=[]</code>).
<p>
Once you've run the initial <code>meson</code> command successfully you can use
-your configured backend to build the project. With ninja, the -C option can be
-be used to point at a directory to build.
+your configured backend to build the project in your build directory:
</p>
<pre>
- ninja -C build/
+ninja -C build/
</pre>
<p>
-Without arguments, it will produce libGL.so and/or several other libraries
-depending on the options you have chosen. Later, if you want to rebuild for a
-different configuration, you should run <code>ninja clean</code> before
-changing the configuration, or create a new out of tree build directory for
-each configuration you want to build
-<a href="http://mesonbuild.com/Using-multiple-build-directories.html">as
-recommended in the documentation</a>
+The next step is to install the Mesa libraries, drivers, etc.
+This also finishes up some final steps of the build process (such as creating
+symbolic links for drivers). To install:
</p>
+<pre>
+ninja -C build/ install
+</pre>
+
<p>
-Autotools automatically updates translation files as part of the build process,
-meson does not do this. Instead if you want translated drirc files you will need
-to invoke non-default targets for ninja to update them:
-<code>ninja -C build/ xmlpool-pot xmlpool-update-po xmlpool-gmo</code>
+Note: autotools automatically updates translation files (used by the DRI
+configuration tool) as part of the build process,
+Meson does not do this. Instead, you will need do this:
</p>
+<pre>
+ninja -C build/ xmlpool-pot xmlpool-update-po xmlpool-gmo
+</pre>
+
+<h2 id="advanced">3. Advanced Usage</h2>
<dl>
-<dt><code>Environment Variables</code></dt>
+
+<dt>Installation Location</dt>
+<dd>
+<p>
+Meson default to installing libGL.so in your system's main lib/ directory
+and DRI drivers to a dri/ subdirectory.
+</p>
+<p>
+Developers will often want to install Mesa to a testing directory rather
+than the system library directory.
+This can be done with the --prefix option. For example:
+</p>
+<code>
+meson --prefix="${PWD}/build/install" build/
+</code>
+<p>
+will put the final libraries and drivers into the build/install/
+directory.
+Then you can set LD_LIBRARY_PATH and LIBGL_DRIVERS_PATH to that location
+to run/test the driver.
+</p>
+</dd>
+
+<dt>Environment Variables</dt>
<dd><p>Meson supports the standard CC and CXX environment variables for
changing the default compiler. Meson does support CFLAGS, CXXFLAGS, etc. But
their use is discouraged because of the many caveats in using them. Instead it
@@ -144,7 +210,7 @@ the popular compilers, a complete list is available
</dd>
-<dt><code>LLVM</code></dt>
+<dt>LLVM</dt>
<dd><p>Meson includes upstream logic to wrap llvm-config using its standard
dependency interface.
</p></dd>
@@ -246,7 +312,7 @@ is unrelated to the <code>buildtype</code>; setting the latter to
</dd>
</dl>
-<h2 id="cross-compilation">2. Cross-compilation and 32-bit builds</h2>
+<h2 id="cross-compilation">4. Cross-compilation and 32-bit builds</h2>
<p><a href="https://mesonbuild.com/Cross-compilation.html">Meson supports
cross-compilation</a> by specifying a number of binary paths and