Quoting Eric Engestrom (2017-11-08 04:00:54) > On Tuesday, 2017-11-07 09:28:35 -0800, Dylan Baker wrote: > > v2: - Add information about CC, CXX, CFLAGS, and CXXFLAGS (Nicolai) > > - Add message at top that meson for mesa is still a work in progress > > - Add trailing "/" to directories (Eric E.) > > - Fix a number of spelling/grammar/style suggestions from Eric E. > > - Make a number of changes as suggested by Emil. > > v3: - Fix order of commands in example (Eric E.) > > - Add documentation for overriding LLVM version (Eric E.) > > v4: - Rebase on master > > - update default buildtype > > - add note about b_ndebug > > - Clarify meson configure a bit > > > > Signed-off-by: Dylan Baker <dylanx.c.ba...@intel.com> > > Reviewed-by: Eric Engestrom <e...@engestrom.ch> (v3) > > --- > > docs/contents.html | 1 + > > docs/meson.html | 151 > > +++++++++++++++++++++++++++++++++++++++++++++++++++++ > > 2 files changed, 152 insertions(+) > > create mode 100644 docs/meson.html > > > > diff --git a/docs/contents.html b/docs/contents.html > > index d5455421091..9a86019e2f6 100644 > > --- a/docs/contents.html > > +++ b/docs/contents.html > > @@ -43,6 +43,7 @@ > > <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> > > </ul> > > </li> > > <li><a href="precompiled.html" target="_parent">Precompiled Libraries</a> > > diff --git a/docs/meson.html b/docs/meson.html > > new file mode 100644 > > index 00000000000..ee505b1d5ee > > --- /dev/null > > +++ b/docs/meson.html > > @@ -0,0 +1,151 @@ > > +<!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 Meson</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 Meson</h1> > > + > > +<h2 id="basic">1. Basic Usage</h2> > > + > > +<p><strong>The Meson build system for Mesa is still under active > > development, > > +and should not be used in production environments.</strong></p> > > + > > +<p>The meson build is currently only tested on linux, and is known to not > > work > > +on macOS, Windows, and haiku. This will be fixed.</p> > > + > > +<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, and > > must > > +be enabled via the --backend switch, as ninja is always the default. Meson > > only > > missing words in that last sentence > > > +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. > > +</p> > > + > > +<pre> > > + meson build/ > > +</pre> > > + > > +<p> > > +To see a description of your options you can run "meson configure" along > > with a > > <code>meson configure</code> > > same for the other commands in this page, as this is the way we show > them in the rest of the docs > > > +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. > > + Meson does not currently support listing options before configuring > + a build directory, but this feature is being discussed upstream. > > (since the question came up a couple times already) > > > +</p> > > + > > +<pre> > > + meson configure build/ > > +</pre> > > + > > +<p> > > +With additional arguments "meson configure" is used to change options on > > +already configured build directory. All options passed to this command are > > in > > +the form -D"command"="value". > > Doesn't matter to meson, but I'd put a space between `-D` and > `"command"="value"` to make it more readable. > > > +</p> > > + > > +<pre> > > + meson configure build/ -Dprefix=/tmp/install -Dglx=true > > +</pre> > > + > > +<p> > > +Once you've run meson successfully you can use your configured backend to > > build > > "Once you've run the initial <code>meson</code> successfully" > ("initial" being the important change) > > > +the project. > > + You probably don't need to ever run <code>meson</code> after that, > + as running <code>ninja</code> (and other backends) automatically detects > + changes and re-configures the project as needed. If you think some change > + is not being detected correctly, you can always run > + <code>ninja reconfigure</code> manually. > > > With ninja, the -C option can be be used to point at a directory > > +to build. > > +</p> > > + > > +<pre> > > + 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 > > +rebuilding, > > before changing the configuration, I think? > > Feels weird to give this advice though. One of the arguments for having > your build out of tree is that your various build configurations don't > interfere with each other, so let's just suggest > "different config? different build dir" > > > or create a new out of tree build directory (meson supports an > > +unlimited number of them) for each configuration you want to build. > > This "unlimited build dirs" sentence looks weird to me every time I read > it. Why would there be a limit to the number of build dirs? > Maybe saying something like "meson doesn't restrict you to a single > build dir" would be clearer, but mentioning it at all still feels weird. > > Maybe add a link to the meson doc on out of tree builds? > http://mesonbuild.com/Using-multiple-build-directories.html > > > +</p> > > + > > +<dt><code>CC, CFLAGS, CXX, CXXFLAGS</code></dt> > > weird to list them, but if you do, might as well have LDFLAGS in the > list :) > > > +<dd><p>These environment variables > > +control the C and C++ compilers used during the build. The default > > compilers > > +depends on your operating system. Meson supports most of the popular > > compilers, > > +a complete list is available > > +<a > > href="http://mesonbuild.com/Reference-tables.html#compiler-ids">here</a>. > > + > > +These arguments are consumed and stored by meson when it is initialized or > > +re-initialized. Therefore passing them to meson configure will not do > > anything, > > +and passing them to ninja will only do something if ninja decides to > > +re-initialze meson, for example, if a meson.build file has been changed. > > +Changing these variables will not cause all targets to be rebuilt, so > > running > > +ninja clean is recomended when changing CFLAGS or CXXFLAGS. meson will > > never > > +change compiler in a configured build directory. > > +</p> > > + > > +<pre> > > + CC=clang CXX=clang++ meson build-clang > > + ninja -C build-clang > > + ninja -C build-clang clean > > + touch meson.build > > + CFLAGS=-Wno-typedef-redefinition ninja -C build-clang > > +</pre> > > +</dd> > > + > > +<dt><code>LLVM</code></dt> > > +<dd><p>Meson includes upstream logic to wrap llvm-config using it's > > standard > > +dependncy interface. It will search $PATH (or %PATH% on windows) for > > +llvm-config, so using an LLVM from a non-standard path is as easy as > > +<code>PATH=/path/with/llvm-config:$PATH meson build</code>. > > +</p></dd> > > +</dl> > > + > > +<dt><code>PKG_CONFIG_PATH</code></dt> > > +<dd><p>The > > +<code>pkg-config</code> utility is a hard requirement for configuring and > > +building Mesa on Linux and *BSD. 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> > > +One of the oddities of meson is that some options are different when > > passed to > > +the <code>meson</code> than to <code>meson configure</code>. These options > > are > > +passed as --option=foo to <code>meson</code>, but -Doption=foo to > > <code>meson > > +configure</code>. Mesa defined options are always passed as -Doption=foo. > > +<p> > > + > > +<p>For those coming from autotools be aware of the following:</p> > > + > > +<dl> > > +<dt><code>--buildtype/-Dbuildtype</code></dt> > > +<dd><p>This option will set the compiler debug/optimisation levels to aid > > +debugging the Mesa libraries.</p> > > + > > +<p>Note that in meson this defaults to "debugoptimized", and not setting > > it to > > +"release" will yield non-optimal performance and binary size.</p> > > + and not setting it to "debug" might interfere with your ability to > + debug Mesa, as some code & variables will be optimised out. > > > + > > +<p> For those wishing to pass their own -O option, use the "plain" > > buildtype, > > +which cuases meson to inject no additional compiler arguments, only those > > in > > "causes" > > > +the C/CXXFLAGS and those that mesa itself defines.</p> > > +</dd> > > +</dl> > > + > > +<dl> > > +<dt><code>-Db_ndebug</code></dt> > > +<dd><p>This option controls assertions in meson projects. When set to false > > +(the default) assertions are enabled, when set to true they are > > disabled.</p> > > + This is unrelated to the <code>buildtype</code>; setting the latter to > + <code>release</code> will not turn off assertions, for instance. > > > +</dd> > > +</dl> > > -- > > 2.15.0 > >
All comments applied.
signature.asc
Description: signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev