[FFmpeg-devel] [PATCH] configure: improve check for POSIX ioctl

Ramiro Polla ramiro.polla at gmail.com
Fri Aug 30 14:14:48 EEST 2024


On Thu, Aug 29, 2024 at 7:55 PM James Almer <jamrial at gmail.com> wrote:
> On 8/29/2024 2:18 PM, Ramiro Polla wrote:
> > On Thu, Aug 29, 2024 at 7:10 PM James Almer <jamrial at gmail.com> wrote:
> >> On 8/29/2024 10:40 AM, Ramiro Polla wrote:
> >>> Instead of relying on system #ifdefs which may or may not be correct,
> >>> detect the POSIX ioctl signature at configure time.
> >>> ---
> >>>    configure          | 2 ++
> >>>    libavdevice/v4l2.c | 2 +-
> >>>    2 files changed, 3 insertions(+), 1 deletion(-)
> >>>
> >>> diff --git a/configure b/configure
> >>> index 63f0429b02..ebbec49993 100755
> >>> --- a/configure
> >>> +++ b/configure
> >>> @@ -2524,6 +2524,7 @@ HAVE_LIST="
> >>>        opencl_videotoolbox
> >>>        perl
> >>>        pod2man
> >>> +    posix_ioctl
> >>>        texi2html
> >>>        xmllint
> >>>        zlib_gzip
> >>> @@ -7158,6 +7159,7 @@ xmllint --version  > /dev/null 2>&1 && enable xmllint   || disable xmllint
> >>>    check_headers linux/fb.h
> >>>    check_headers linux/videodev2.h
> >>>    test_code cc linux/videodev2.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_sanitized struct_v4l2_frmivalenum_discrete
> >>> +test_code cc sys/ioctl.h "int ioctl(int, int, ...);" && enable posix_ioctl
> >>
> >> Is this check going to fail for the targets where ioctl_f has request as
> >> an unsigned long int?
> >
> > Yes. This is from config.log:
> >
> > /tmp/ffconf.S7gHklXc/test.c: In function 'main':
> > /tmp/ffconf.S7gHklXc/test.c:2:22: error: conflicting types for
> > 'ioctl'; have 'int(int,  int, ...)'
> >      2 | int main(void) { int ioctl(int, int, ...);; return 0; }
> >        |                      ^~~~~
> > In file included from /tmp/ffconf.S7gHklXc/test.c:1:
> > /usr/include/x86_64-linux-gnu/sys/ioctl.h:42:12: note: previous
> > declaration of 'ioctl' with type 'int(int,  long unsigned int, ...)'
> >     42 | extern int ioctl (int __fd, unsigned long int __request, ...) __THROW;
> >        |            ^~~~~
>
> Cool. Should be ok then. Just remove the colon at the end of the check
> since test_code() will add one. Some compiler settings like -pedantic
> may complain about it, so better safe than sorry.

Thanks. I'll apply without the colon at the end of the check.

By the way, the tests for struct_v4l2_frmivalenum_discrete and
v4l2_m2m all have the trailing colon as well.


More information about the ffmpeg-devel mailing list