[Mesa-dev] [PATCH] docs: try to improve the Meson documentation

Brian Paul brianp at vmware.com
Fri Mar 8 03:42:20 UTC 2019


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.
---
 docs/contents.html |   2 +-
 docs/meson.html    | 138 +++++++++++++++++++++++++++++++++++++++--------------
 2 files changed, 104 insertions(+), 36 deletions(-)

diff --git a/docs/contents.html b/docs/contents.html
index 6364776..619ac3d 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 f21479c..f9ae669 100644
--- a/docs/meson.html
+++ b/docs/meson.html
@@ -17,65 +17,98 @@
 <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.
 </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 "command"="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 +121,68 @@ 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/
+</pre>
+
+<p>
+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/
+ninja -C build/ install
 </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
+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
+changing the configuration, or create a new 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>
 </p>
 
 <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>
+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 +212,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 +314,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
-- 
1.8.5.6



More information about the mesa-dev mailing list