Files
external_libcamera/meson.build
T
Laurent Pinchart a8d0312903 meson: Really define _FORTIFY_SOURCE for optimised builds
Commit 965c5bf7fb ("meson: Define _FORTIFY_SOURCE for optimised
builds") tried to define _FORTIFY_SOURCE for optimised builds with
clang, but updated the common_arguments after it was used. This resulted
in the _FORTIFY_SOURCE option not being applied. Fix it.

Fixes: 965c5bf7fb ("meson: Define _FORTIFY_SOURCE for optimised builds")
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
2019-11-21 11:42:22 +02:00

91 lines
2.6 KiB
Meson

project('libcamera', 'c', 'cpp',
meson_version : '>= 0.40',
version : '0.0.0',
default_options : [
'werror=true',
'warning_level=2',
'cpp_std=c++11',
],
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('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')