forked from marfrit/libva-v4l2-request-fourier
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:
+34
@@ -26,6 +26,40 @@ project('libva-v4l2-request', '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')
|
||||
libdrm_dep = dependency('libdrm', version : '>= 2.4.52')
|
||||
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
option(
|
||||
'kernel_headers',
|
||||
type : 'string',
|
||||
value : '',
|
||||
description: 'Path to sanitized Linux Kernel headers'
|
||||
)
|
||||
@@ -77,6 +77,7 @@ cflags = [
|
||||
]
|
||||
|
||||
deps = [
|
||||
kernel_headers_dep,
|
||||
libva_dep,
|
||||
libdrm_dep
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user