From 6b139c2063623e9310025247cd966490b9aa57ea Mon Sep 17 00:00:00 2001 From: Jonathan Gray Date: Tue, 29 Jan 2019 11:08:07 +0000 Subject: Import Mesa 18.3.2 --- lib/mesa/docs/meson.html | 195 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 195 insertions(+) create mode 100644 lib/mesa/docs/meson.html (limited to 'lib/mesa/docs/meson.html') diff --git a/lib/mesa/docs/meson.html b/lib/mesa/docs/meson.html new file mode 100644 index 000000000..68f80d6ac --- /dev/null +++ b/lib/mesa/docs/meson.html @@ -0,0 +1,195 @@ + + + + + Compilation and Installation using Meson + + + + +
+

The Mesa 3D Graphics Library

+
+ + +
+ +

Compilation and Installation using Meson

+ +

1. Basic Usage

+ +

The Meson build system is generally considered stable and ready +for production

+ +

The meson build is tested on Linux, macOS, Cygwin and Haiku, FreeBSD, +DragonflyBSD, NetBSD, and should work on OpenBSD.

+ +

Mesa requires Meson >= 0.45.0 to build. + +Some older versions of meson do not check that they are too old and will error +out in odd ways. +

+ +

+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 --backend switch, as ninja is the default backend on all +operating systems. 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. +

+ +
+    meson build/
+
+ +

+To see a description of your options you can run meson configure +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. + +Meson does not currently support listing options before configure a build +directory, but this feature is being discussed upstream. +

+ +
+    meson configure build/
+
+ +

+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". +

+ +
+    meson configure build/ -Dprefix=/tmp/install -Dglx=true
+
+ +

+Note that options taking lists (such as platforms) are +a bit +more complicated, but the simplest form compatible with Mesa options +is to use a comma to separate values (-D platforms=drm,wayland) +and brackets to represent an empty list (-D platforms=[]). +

+ +

+Once you've run the initial meson 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. +

+ +
+    ninja -C build/
+
+ +

+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 ninja clean before +changing the configuration, or create a new out of tree build directory for +each configuration you want to build +as +recommended in the documentation +

+ +

+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: +ninja -C build/ xmlpool-pot xmlpool-update-po xmlpool-gmo +

+ +
+
Environment Variables
+

Meson supports the standard CC and CXX environment variables for +changing the default compiler, and CFLAGS, CXXFLAGS, and LDFLAGS for setting +options to the compiler and linker during the initial configuration. + +These arguments are consumed and stored by meson when it is initialized. To +change these flags after the build is initialized (or when doing a first +initialization), consider using -D${lang}_args and +-D${lang}_link_args instead. Meson will never change compiler in a +configured build directory. +

+ +
+    CC=clang CXX=clang++ meson build-clang
+    ninja -C build-clang
+    ninja -C build-clang clean
+    meson configure build -Dc_args="-Wno-typedef-redefinition"
+    ninja -C build-clang
+
+ +

+The default compilers depends on your operating system. Meson supports most of +the popular compilers, a complete list is available +here. +

+ +

Meson also honors DESTDIR for installs

+
+ + +
LLVM
+

Meson includes upstream logic to wrap llvm-config using its standard +dependency interface. It will search $PATH (or %PATH% on windows) for +llvm-config (and llvm-config$version and llvm-config-$version), so using an +LLVM from a non-standard path is as easy as +PATH=/path/with/llvm-config:$PATH meson build. +

+
+ +
+
PKG_CONFIG_PATH
+

The +pkg-config utility is a hard requirement for configuring and +building Mesa on Unix-like systems. It is used to search for external libraries +on the system. This environment variable is used to control the search path for +pkg-config. For instance, setting +PKG_CONFIG_PATH=/usr/X11R6/lib/pkgconfig will search for package +metadata in /usr/X11R6 before the standard directories.

+
+
+ +

+One of the oddities of meson is that some options are different when passed to +the meson than to meson configure. These options are +passed as --option=foo to meson, but -Doption=foo to meson +configure. Mesa defined options are always passed as -Doption=foo. +

+ +

For those coming from autotools be aware of the following:

+ +
+
--buildtype/-Dbuildtype
+

This option will set the compiler debug/optimisation levels to aid +debugging the Mesa libraries.

+ +

Note that in meson this defaults to debugoptimized, and +not setting it to release will yield non-optimal +performance and binary size. Not using debug may interfere +with debugging as some code and validation will be optimized away. +

+ +

For those wishing to pass their own optimization flags, use the plain +buildtype, which causes meson to inject no additional compiler arguments, only +those in the C/CXXFLAGS and those that mesa itself defines.

+
+
+ +
+
-Db_ndebug
+

This option controls assertions in meson projects. When set to false +(the default) assertions are enabled, when set to true they are disabled. This +is unrelated to the buildtype; setting the latter to +release will not turn off assertions. +

+
+
+ +
+ + -- cgit v1.2.3