[vlc-devel] [PATCH] v4l2: check if kernel headers are recent enough
Rémi Denis-Courmont
remi at remlab.net
Thu Jan 19 08:11:06 CET 2012
On Wed, 18 Jan 2012 20:06:21 -0500, Rafaël Carré <funman at videolan.org>
wrote:
> V4L2_FIELD_INTERLACED_BT was introduced in v2.6.25-3581-g26d507f
Stictly speaking, VLC requires kernel header version 3.1, so that
V4L2_CTRL_TYPE_BITMASK is in enum v4l2_ctrl_type. Oh wait... it actually
depends on version 3.2 as enum v4l2_power_line_frequency was modified. This
can actually be a real problem: the compiler can perform optimization
assuming that only defined values are used in enums. This affects
switch/case blocks especially.
I do not feel like supporting pre-2.6.26. This is really old now. And
builders do ignore warnings. Next thing, they will come and complain that
v4l2:// stopped working silently. I'd rather have the build system explode
in their face really.
Furthermore I am not a fan of patching configure.ac as it is slow as hell.
> ---
> configure.ac | 13 ++++++++++++-
> 1 files changed, 12 insertions(+), 1 deletions(-)
>
> diff --git a/configure.ac b/configure.ac
> index 8489a90..557ffe1 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -1845,7 +1845,18 @@ AC_ARG_ENABLE(pvr,
[AS_HELP_STRING([--enable-pvr],
> [support PVR V4L2 cards (default disabled)])])
> have_v4l2="no"
> AC_CHECK_HEADERS([linux/videodev2.h sys/videoio.h], [
> - have_v4l2="yes"
> + AC_PREPROC_IFELSE([
> + #ifdef __linux__
> + # include <linux/version.h>
> + # if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26)
> + # error Kernel headers too old
> + # endif
> + #endif
> + ], [
> + have_v4l2="yes"
> + ], [
> + AC_MSG_WARN([Kernel headers too old for V4L2 module. You need at
> least 2.6.22])
This ^^^^^^ is inconsistent.
> + ])
> ])
> AS_IF([test "$have_v4l2" = "yes"], [
> AS_IF([test "${enable_libv4l2}" != "no"], [
--
Rémi Denis-Courmont
http://www.remlab.net/
More information about the vlc-devel
mailing list