head 1.2;
access;
symbols
netbsd-9-4-RELEASE:1.1.1.1
netbsd-9-3-RELEASE:1.1.1.1
netbsd-9-2-RELEASE:1.1.1.1
netbsd-9-1-RELEASE:1.1.1.1
netbsd-9-0-RELEASE:1.1.1.1
netbsd-9-0-RC2:1.1.1.1
netbsd-9-0-RC1:1.1.1.1
mesalib-19-1-7:1.1.1.2
netbsd-9:1.1.1.1.0.2
netbsd-9-base:1.1.1.1
mesa-18-3-6:1.1.1.1
mesa-18-3-4:1.1.1.1
xorg:1.1.1;
locks; strict;
comment @# @;
1.2
date 2022.05.09.01.27.12; author mrg; state dead;
branches;
next 1.1;
commitid vdvqJ71xlVGCRjDD;
1.1
date 2019.03.10.03.42.48; author mrg; state Exp;
branches
1.1.1.1;
next ;
commitid r12jo1Nf3ebQKLeB;
1.1.1.1
date 2019.03.10.03.42.48; author mrg; state Exp;
branches;
next 1.1.1.2;
commitid r12jo1Nf3ebQKLeB;
1.1.1.2
date 2019.09.24.16.19.48; author maya; state Exp;
branches;
next ;
commitid KJXusGl8fi9AAhEB;
desc
@@
1.2
log
@merge mesa 21.3.7.
@
text
@
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".
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.
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.
@
1.1
log
@Initial revision
@
text
@@
1.1.1.1
log
@from maya:
Import mesa 18.3.4.
Mesa 18.3.4 implements the OpenGL 4.5 API.
Some drivers don't support all the features required in OpenGL 4.5.
@
text
@@
1.1.1.2
log
@Import mesa 19.1.7
New features in mesa 19.1.0:
GL_ARB_parallel_shader_compile on all drivers.
GL_EXT_gpu_shader4 on all GL 3.1 drivers.
GL_EXT_shader_image_load_formatted on radeonsi.
GL_EXT_texture_buffer_object on all GL 3.1 drivers.
GL_EXT_texture_compression_s3tc_srgb on Gallium drivers and i965 (ES extension).
GL_NV_compute_shader_derivatives on iris and i965.
GL_KHR_parallel_shader_compile on all drivers.
VK_EXT_buffer_device_address on Intel and RADV.
VK_EXT_depth_clip_enable on Intel and RADV.
VK_KHR_ycbcr_image_arrays on Intel.
VK_EXT_inline_uniform_block on Intel and RADV.
VK_EXT_external_memory_host on Intel.
VK_EXT_host_query_reset on Intel and RADV.
VK_KHR_surface_protected_capabilities on Intel and RADV.
VK_EXT_pipeline_creation_feedback on Intel and RADV.
VK_KHR_8bit_storage on RADV.
VK_AMD_gpu_shader_int16 on RADV.
VK_AMD_gpu_shader_half_float on RADV.
VK_NV_compute_shader_derivatives on Intel.
VK_KHR_shader_float16_int8 on Intel and RADV (RADV only supports int8).
VK_KHR_shader_atomic_int64 on Intel.
VK_EXT_descriptor_indexing on Intel.
VK_KHR_shader_float16_int8 on Intel and RADV.
GL_INTEL_conservative_rasterization on iris.
VK_EXT_memory_budget on Intel.
New features in mesa 19.0.0:
GL_AMD_texture_texture4 on all GL 4.0 drivers.
GL_EXT_shader_implicit_conversions on all drivers (ES extension).
GL_EXT_texture_compression_bptc on all GL 4.0 drivers (ES extension).
GL_EXT_texture_compression_rgtc on all GL 3.0 drivers (ES extension).
GL_EXT_render_snorm on gallium drivers (ES extension).
GL_EXT_texture_view on drivers supporting texture views (ES extension).
GL_OES_texture_view on drivers supporting texture views (ES extension).
GL_NV_shader_atomic_float on nvc0 (Fermi/Kepler only).
Shader-based software implementations of GL_ARB_gpu_shader_fp64, GL_ARB_gpu_shader_int64, GL_ARB_vertex_attrib_64bit, and GL_ARB_shader_ballot on i965.
VK_ANDROID_external_memory_android_hardware_buffer on Intel
Fixed and re-exposed VK_EXT_pci_bus_info on Intel and RADV
VK_EXT_scalar_block_layout on Intel and RADV
VK_KHR_depth_stencil_resolve on Intel
VK_KHR_draw_indirect_count on Intel
VK_EXT_conditional_rendering on Intel
VK_EXT_memory_budget on RADV
Also, bug fixes.
@
text
@d19 1
a19 8
For general information about Meson see the
Meson website.
d24 1
a24 4
Mesa's Meson build system is generally considered stable and ready
for production.
The Meson build of Mesa is tested on Linux, macOS, Cygwin and Haiku, FreeBSD,
d27 1
a27 11
If Meson is not already installed on your system, you can typically
install it with your package installer. For example:
sudo apt-get install meson # Ubuntu
or
sudo dnf install meson # Fedora
Mesa requires Meson >= 0.45.0 to build.
a32 7
You'll also need Ninja.
If it's not already installed, use apt-get or dnf to install
the ninja-build package.
2. Basic Usage
d36 2
a37 7
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
d39 1
a39 4
"build" here.
It's recommended to create a
separate build directory for each configuration you might want to use.
a41 4
Basic configuration is done with:
d43 1
a43 1
meson build/
d47 7
a53 3
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).
a55 3
To review the options which Meson chose, run:
d57 1
a57 1
meson configure build/
d61 3
a63 15
Meson does not currently support listing configuration options before
running "meson build/" but this feature is being discussed upstream.
For now, we have a bin/meson-options.py script that prints
the options for you.
If that script doesn't work for some reason, you can always look in the
meson_options.txt file at the root of the project.
With additional arguments meson configure can be used to change
options for a previously configured build directory.
All options passed to this command are in the form
-D "option"="value".
For example:
d67 1
a67 1
meson configure build/ -Dprefix=/tmp/install -Dglx=true
d80 2
a81 1
your configured backend to build the project in your build directory:
d85 1
a85 1
ninja -C build/
d89 7
a95 3
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:
a97 4
ninja -C build/ install
d99 4
a102 3
Note: autotools automatically updated 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:
a103 5
Meson default to installing libGL.so in your system's main lib/ directory
and DRI drivers to a dri/ subdirectory.
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:
meson --prefix="${PWD}/build/install" build/
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.
Meson also honors DESTDIR for installs.
a116 1
a117 14
Compiler Options
Meson supports the common CFLAGS, CXXFLAGS, etc. environment
variables but their use is discouraged because of the many caveats
in using them.
Instead, it is recomended to use -D${lang}_args and
-D${lang}_link_args. Among the benefits of these options
is that they are guaranteed to persist across rebuilds and reconfigurations.
This example sets -fmax-errors for compiling C sources and -DMAGIC=123
for C++ sources:
Meson supports the standard CC and CXX environment variables for
changing the default compiler. Note that Meson does not allow
changing the compilers in a configured builddir so you will need
to create a new build dir for a different compiler.
This is an example of specifying the clang compilers and cleaning
the build directory before reconfiguring with an extra C option:
Meson includes upstream logic to wrap llvm-config using its standard
dependency interface.
As of meson 0.49.0 meson also has the concept of a
"native file",
these files provide information about the native build environment (as opposed
to a cross build environment). They are ini formatted and can override where to
find llvm-config:
For older versions of meson $PATH (or %PATH% on
windows) will be searched for llvm-config (and llvm-config$version and
llvm-config-$version), you can override this environment variable to control
the search: PATH=/path/with/llvm-config:$PATH meson build.
d143 1
d145 1
d181 1
d183 1
a192 87
4. Cross-compilation and 32-bit builds
Meson supports
cross-compilation by specifying a number of binary paths and
settings in a file and passing this file to meson or
meson configure with the --cross-file
parameter.
This file can live at any location, but you can use the bare filename
(without the folder path) if you put it in $XDG_DATA_HOME/meson/cross or
~/.local/share/meson/cross
Below are a few example of cross files, but keep in mind that you
will likely have to alter them for your system.
Those running on ArchLinux can use the AUR-maintained packages for some
of those, as they'll have the right values for your system: