This is needed to use option type 'feature'. This is a tri-state (auto/enabled/disabled) which comes with utility to enable them all, or disabled them all to avoid any dynamic selection happening. It can also be used as value to any "required" field. This will be used in GStreamer support. If you don't have a recent enough meson in your distribution, you can always install or upgrade your version using pip3. pip3 install --user meson pip3 install --user --upgrade meson Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> Reviewed: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
94 lines
2.7 KiB
Meson
94 lines
2.7 KiB
Meson
project('libcamera', 'c', 'cpp',
|
|
meson_version : '>= 0.47',
|
|
version : '0.0.0',
|
|
default_options : [
|
|
'werror=true',
|
|
'warning_level=2',
|
|
'cpp_std=c++14',
|
|
],
|
|
license : 'LGPL 2.1+')
|
|
|
|
# Generate version information. The libcamera_git_version variable contains the
|
|
# full version with git patch count and SHA1 (e.g. 1.2.3+211-c94a24f4), while
|
|
# the libcamera_version variable contains the major.minor.patch (e.g. 1.2.3)
|
|
# only. If the source tree isn't under git control, or if it matches the last
|
|
# git version tag, the build metadata (e.g. +211-c94a24f4) is omitted from
|
|
# libcamera_git_version.
|
|
libcamera_git_version = run_command('utils/gen-version.sh',
|
|
meson.build_root()).stdout().strip()
|
|
if libcamera_git_version == ''
|
|
libcamera_git_version = meson.project_version()
|
|
endif
|
|
|
|
libcamera_version = libcamera_git_version.split('+')[0]
|
|
|
|
# Configure the build environment.
|
|
cc = meson.get_compiler('c')
|
|
config_h = configuration_data()
|
|
|
|
if cc.has_header_symbol('execinfo.h', 'backtrace')
|
|
config_h.set('HAVE_BACKTRACE', 1)
|
|
endif
|
|
|
|
if cc.has_header_symbol('stdlib.h', 'secure_getenv', prefix : '#define _GNU_SOURCE')
|
|
config_h.set('HAVE_SECURE_GETENV', 1)
|
|
endif
|
|
|
|
common_arguments = [
|
|
'-Wno-unused-parameter',
|
|
'-include', 'config.h',
|
|
]
|
|
|
|
c_arguments = []
|
|
cpp_arguments = []
|
|
|
|
if cc.get_id() == 'clang'
|
|
# Turn _FORTIFY_SOURCE by default on optimised builds (as it requires -O1
|
|
# or higher). This is needed on clang only as gcc enables it by default.
|
|
if get_option('optimization') != '0'
|
|
common_arguments += [
|
|
'-D_FORTIFY_SOURCE=2',
|
|
]
|
|
endif
|
|
|
|
# Use libc++ by default if available instead of libstdc++ when compiling
|
|
# with clang.
|
|
if cc.find_library('libc++', required: false).found()
|
|
cpp_arguments += [
|
|
'-stdlib=libc++',
|
|
]
|
|
endif
|
|
endif
|
|
|
|
c_arguments += common_arguments
|
|
cpp_arguments += common_arguments
|
|
|
|
add_project_arguments(c_arguments, language : 'c')
|
|
add_project_arguments(cpp_arguments, language : 'cpp')
|
|
add_project_link_arguments(cpp_arguments, language : 'cpp')
|
|
|
|
libcamera_includes = include_directories('include')
|
|
|
|
subdir('include')
|
|
subdir('src')
|
|
subdir('utils')
|
|
|
|
# The documentation and test components are optional and can be disabled
|
|
# through configuration values. They are enabled by default.
|
|
|
|
if get_option('documentation')
|
|
subdir('Documentation')
|
|
endif
|
|
|
|
if get_option('test')
|
|
subdir('test')
|
|
endif
|
|
|
|
configure_file(output : 'config.h', configuration : config_h)
|
|
|
|
pkg_mod = import('pkgconfig')
|
|
pkg_mod.generate(libraries : libcamera,
|
|
version : '1.0',
|
|
name : 'libcamera',
|
|
filebase : 'camera',
|
|
description : 'Complex Camera Support Library')
|