[v4l-utils,v1,2/2] meson: v4l2grab needs libv4lconvert with fork support enabled

Message ID 20231204091134.28481-2-ps.report@gmx.net (mailing list archive)
State Accepted
Delegated to: Hans Verkuil
Headers
Series [v4l-utils,v1,1/2] meson: fix has_function fork detection (needs suitable include) |

Commit Message

Peter Seiderer Dec. 4, 2023, 9:11 a.m. UTC
  - v4l2grab needs libv4lconvert with fork support enabled

Fixes:

  FAILED: contrib/test/v4l2grab
  .../bootlin-armv7m-uclibc/host/bin/arm-linux-gcc  -o contrib/test/v4l2grab contrib/test/v4l2grab.p/v4l2grab.c.o -Wl,--as-needed -Wl,--no-undefined -Wl,-O1 -Wl,-elf2flt=-r -static -Wl,--start-group lib/libv4l2/libv4l2.a lib/libv4lconvert/libv4lconvert.a -largp -pthread -ldl -lm -lrt -Wl,--end-group
  .../bootlin-armv7m-uclibc/host/opt/ext-toolchain/arm-buildroot-uclinux-uclibcgnueabi/bin/ld.real: lib/libv4lconvert/libv4lconvert.a(libv4lconvert.c.o): in function `v4lconvert_destroy':
  libv4lconvert.c:(.text+0x5c0): undefined reference to `v4lconvert_helper_cleanup'
  .../bootlin-armv7m-uclibc/host/opt/ext-toolchain/arm-buildroot-uclinux-uclibcgnueabi/bin/ld.real: lib/libv4lconvert/libv4lconvert.a(libv4lconvert.c.o): in function `v4lconvert_convert_pixfmt':
  libv4lconvert.c:(.text+0x1450): undefined reference to `v4lconvert_helper_decompress'
  collect2: error: ld returned 1 exit status

Signed-off-by: Peter Seiderer <ps.report@gmx.net>
---
Notes:
  - patch is more or less a quick work around, maybe an better handling
    of the no-fork-case in libv4lconvert (without v4lconvert_helper_cleanup,
    v4lconvert_helper_decompress, etc. as they depend on have_fork, see
    lib/libv4lconvert/meson.build and conditional helper.c compile)
    is possible???
---
 contrib/test/meson.build | 2 ++
 1 file changed, 2 insertions(+)
  

Comments

Peter Seiderer Dec. 4, 2023, 12:24 p.m. UTC | #1
Hello *,

On Mon,  4 Dec 2023 10:11:34 +0100, Peter Seiderer <ps.report@gmx.net> wrote:

> - v4l2grab needs libv4lconvert with fork support enabled
>
> Fixes:
>
>   FAILED: contrib/test/v4l2grab
>   .../bootlin-armv7m-uclibc/host/bin/arm-linux-gcc  -o contrib/test/v4l2grab contrib/test/v4l2grab.p/v4l2grab.c.o -Wl,--as-needed -Wl,--no-undefined -Wl,-O1 -Wl,-elf2flt=-r -static -Wl,--start-group lib/libv4l2/libv4l2.a lib/libv4lconvert/libv4lconvert.a -largp -pthread -ldl -lm -lrt -Wl,--end-group
>   .../bootlin-armv7m-uclibc/host/opt/ext-toolchain/arm-buildroot-uclinux-uclibcgnueabi/bin/ld.real: lib/libv4lconvert/libv4lconvert.a(libv4lconvert.c.o): in function `v4lconvert_destroy':
>   libv4lconvert.c:(.text+0x5c0): undefined reference to `v4lconvert_helper_cleanup'
>   .../bootlin-armv7m-uclibc/host/opt/ext-toolchain/arm-buildroot-uclinux-uclibcgnueabi/bin/ld.real: lib/libv4lconvert/libv4lconvert.a(libv4lconvert.c.o): in function `v4lconvert_convert_pixfmt':
>   libv4lconvert.c:(.text+0x1450): undefined reference to `v4lconvert_helper_decompress'
>   collect2: error: ld returned 1 exit status
>
> Signed-off-by: Peter Seiderer <ps.report@gmx.net>
> ---
> Notes:
>   - patch is more or less a quick work around, maybe an better handling
>     of the no-fork-case in libv4lconvert (without v4lconvert_helper_cleanup,
>     v4lconvert_helper_decompress, etc. as they depend on have_fork, see
>     lib/libv4lconvert/meson.build and conditional helper.c compile)
>     is possible???

Did find a more suitable solution (?):

diff --git a/lib/libv4lconvert/meson.build b/lib/libv4lconvert/meson.build
index 38740755..4bda5671 100644
--- a/lib/libv4lconvert/meson.build
+++ b/lib/libv4lconvert/meson.build
@@ -91,7 +91,7 @@ if have_fork
                               include_directories : v4l2_utils_incdir)
 endif

-if have_visibility
+if have_visibility and have_fork
     libv4lconvert_c_args += [
       '-fvisibility=hidden',
       '-DHAVE_LIBV4LCONVERT_HELPERS',


Will provide an updated patch (or follow up patch as this one is already applied to
git master) soon...

Regards,
Peter

> ---
>  contrib/test/meson.build | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/contrib/test/meson.build b/contrib/test/meson.build
> index 29b51df6..c1f40354 100644
> --- a/contrib/test/meson.build
> +++ b/contrib/test/meson.build
> @@ -25,6 +25,7 @@ sliced_vbi_detect = executable('sliced-vbi-detect',
>                                 sliced_vbi_detect_sources,
>                                 include_directories : v4l2_utils_incdir)
>
> +if have_fork
>  v4l2grab_sources = files(
>      'v4l2grab.c',
>
> @@ -41,6 +42,7 @@ v4l2grab = executable('v4l2grab',
>                        v4l2grab_sources,
>                        dependencies : v4l2grab_deps,
>                        include_directories : v4l2_utils_incdir)
> +endif
>
>  driver_test_sources = files(
>      'driver-test.c',
  

Patch

diff --git a/contrib/test/meson.build b/contrib/test/meson.build
index 29b51df6..c1f40354 100644
--- a/contrib/test/meson.build
+++ b/contrib/test/meson.build
@@ -25,6 +25,7 @@  sliced_vbi_detect = executable('sliced-vbi-detect',
                                sliced_vbi_detect_sources,
                                include_directories : v4l2_utils_incdir)
 
+if have_fork
 v4l2grab_sources = files(
     'v4l2grab.c',
 
@@ -41,6 +42,7 @@  v4l2grab = executable('v4l2grab',
                       v4l2grab_sources,
                       dependencies : v4l2grab_deps,
                       include_directories : v4l2_utils_incdir)
+endif
 
 driver_test_sources = files(
     'driver-test.c',