Add option to specify path to up-to-date kernel headers

The system normally has kernel headers shipped with the distribution.
These typically lag behind actual kernel releases. Thus they would not
have the latest API additions, such as the V4L2 request API this driver
uses.

However, it is also bad practice to just install new kernel headers into
the system wide default location, as there may be some differences
between it and what the C library was built against.

Add an option to specify a path to a set of up-to-date kernel headers.
This would allow the user to build this project in a safe but working
environment.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
This commit is contained in:
Chen-Yu Tsai
2019-05-17 11:45:27 +08:00
parent 7f359be748
commit 3264c0495c
3 changed files with 41 additions and 0 deletions
+34
View File
@@ -26,6 +26,40 @@ project('libva-v4l2-request', 'c',
cc = meson.get_compiler('c') cc = meson.get_compiler('c')
# Let user specify kernel sources for newer UAPI headers
kernel_headers_inc = include_directories()
kernel_headers_dep = dependency('', required : false)
kernel_headers = get_option('kernel_headers')
if kernel_headers != ''
kernel_headers_inc = include_directories(join_paths(kernel_headers, 'include'))
kernel_headers_dep = declare_dependency(include_directories : kernel_headers_inc)
endif
# has_header_symbol() does not support the 'required' keyword
# until Meson 0.50. Meanwhile Debian Buster is still at 0.49.
# This is why if statements are used here.
# Check for new Request API macros
if not cc.has_header_symbol('linux/media.h', 'MEDIA_IOC_REQUEST_ALLOC',
include_directories : kernel_headers_inc)
error('Missing request API from Linux Kernel headers')
endif
if not cc.has_header_symbol('linux/videodev2.h', 'V4L2_CTRL_WHICH_REQUEST_VAL',
include_directories : kernel_headers_inc)
error('Missing V4L2_CTRL_WHICH_REQUEST_VAL from Linux Kernel headers')
endif
# Check for format macros
if not cc.has_header_symbol('linux/videodev2.h', 'V4L2_PIX_FMT_MPEG2_SLICE',
include_directories : kernel_headers_inc)
error('Missing macro V4L2_PIX_FMT_MPEG2_SLICE from Linux Kernel headers')
endif
if not cc.has_header_symbol('linux/videodev2.h', 'V4L2_PIX_FMT_SUNXI_TILED_NV12',
include_directories : kernel_headers_inc)
error('Missing macro V4L2_PIX_FMT_SUNXI_TILED_NV12 from Linux Kernel headers')
endif
libva_dep = dependency('libva', version : '>= 1.1.0') libva_dep = dependency('libva', version : '>= 1.1.0')
libdrm_dep = dependency('libdrm', version : '>= 2.4.52') libdrm_dep = dependency('libdrm', version : '>= 2.4.52')
+6
View File
@@ -0,0 +1,6 @@
option(
'kernel_headers',
type : 'string',
value : '',
description: 'Path to sanitized Linux Kernel headers'
)
+1
View File
@@ -77,6 +77,7 @@ cflags = [
] ]
deps = [ deps = [
kernel_headers_dep,
libva_dep, libva_dep,
libdrm_dep libdrm_dep
] ]