Skip to content

Latest commit

 

History

History
142 lines (106 loc) · 3.11 KB

INSTALL.md

File metadata and controls

142 lines (106 loc) · 3.11 KB

Installation

Requirements

  • meson and a C and C++ compiler
  • optionally libjpeg v6 or later
  • optionally Qt5 for building qv4l2

Basic installation

v4l-utils can be built and installed using meson as follows:

meson setup build/
ninja -C build/
sudo ninja -C build/ install

Configuration

You can get a summary of possible configurations running:

meson configure build/

To change the options values use the -D option:

meson configure -Doption=newvalue build/

After configuration you need to start the build process with:

ninja -C build/

More info about meson options: https://mesonbuild.com/Build-options.html

Installing

If you need to install to a different directory than the install prefix, use the DESTDIR environment variable:

DESTDIR=/path/to/staging/area ninja -C build/ install

Static builds

Meson provides a built-in option to set the default library type:

Core options     Default Value  Possible Values         Description
------------     -------------  ---------------         -----------
default_library  shared         [shared, static, both]  Default library type

As previously described, it can be set as follows during the configuration step:

meson configure -Ddefault_library=static build/

Note that this will just build static libraries, but linking to dependencies and system libraries dynamically.

Fully static builds are not supported yet and would require custom configuration and setting proper flags. By the time of this writing, there's an ongoing issue in meson to add this feature, see mesonbuild/meson#7621

Cross Compiling

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.

Below are a few example of cross files, but keep in mind that you will likely have to alter them for your system.

32-bit build on x86 linux:

[binaries]
c = '/usr/bin/gcc'
cpp = '/usr/bin/g++'
ar = '/usr/bin/gcc-ar'
strip = '/usr/bin/strip'
pkgconfig = '/usr/bin/pkg-config-32'
llvm-config = '/usr/bin/llvm-config32'

[properties]
c_args = ['-m32']
c_link_args = ['-m32']
cpp_args = ['-m32']
cpp_link_args = ['-m32']

[host_machine]
system = 'linux'
cpu_family = 'x86'
cpu = 'i686'
endian = 'little'

64-bit build on ARM linux:

[binaries]
c = '/usr/bin/aarch64-linux-gnu-gcc'
cpp = '/usr/bin/aarch64-linux-gnu-g++'
ar = '/usr/bin/aarch64-linux-gnu-gcc-ar'
strip = '/usr/bin/aarch64-linux-gnu-strip'
pkgconfig = '/usr/bin/aarch64-linux-gnu-pkg-config'
exe_wrapper = '/usr/bin/qemu-aarch64-static'

[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'aarch64'
endian = 'little'

64-bit build on x86 windows:

[binaries]
c = '/usr/bin/x86_64-w64-mingw32-gcc'
cpp = '/usr/bin/x86_64-w64-mingw32-g++'
ar = '/usr/bin/x86_64-w64-mingw32-ar'
strip = '/usr/bin/x86_64-w64-mingw32-strip'
pkgconfig = '/usr/bin/x86_64-w64-mingw32-pkg-config'
exe_wrapper = 'wine'

[host_machine]
system = 'windows'
cpu_family = 'x86_64'
cpu = 'i686'
endian = 'little'