package/libv4l: no libv4lconvert helper support if no fork()
authorHugues Fruchet <hugues.fruchet@st.com>
Fri, 28 Jul 2017 11:01:47 +0000 (13:01 +0200)
committerArnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Fri, 28 Jul 2017 22:49:53 +0000 (00:49 +0200)
Build libv4lconvert helper support only when fork()
is available.

Fixes [1]:
    CXXLD    v4l2-compliance
   .../build/libv4l-1.12.5/lib/libv4lconvert/.libs/libv4lconvert.so: undefined reference to `fork'
  collect2: error: ld returned 1 exit status

[1] http://autobuild.buildroot.net/results/7e8/7e8fbd99a8c091d7bbeedd16066297682bbe29fe

Signed-off-by: Hugues Fruchet <hugues.fruchet@st.com>
Tested-by: Peter Seiderer <ps.report@gmx.net>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
package/libv4l/0010-Build-libv4lconvert-helper-support-only-when-fork-is.patch [new file with mode: 0644]

diff --git a/package/libv4l/0010-Build-libv4lconvert-helper-support-only-when-fork-is.patch b/package/libv4l/0010-Build-libv4lconvert-helper-support-only-when-fork-is.patch
new file mode 100644 (file)
index 0000000..30a8bde
--- /dev/null
@@ -0,0 +1,102 @@
+From 91e7e4f4765780786e1479d28a70982adea256fc Mon Sep 17 00:00:00 2001
+From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Date: Tue, 25 Jul 2017 21:04:35 +0200
+Subject: [PATCH] Build libv4lconvert helper support only when fork() is
+ available
+
+Upstream: https://git.linuxtv.org/v4l-utils.git/commit/?id=ed6eeee5f7dbc5b1b5b9263ae9281665d3fbe105
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+---
+ configure.ac                      | 3 +++
+ lib/libv4lconvert/Makefile.am     | 7 ++++++-
+ lib/libv4lconvert/libv4lconvert.c | 6 ++++++
+ 3 files changed, 15 insertions(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index ae8f2e2..72c9421 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -299,6 +299,9 @@ argp_saved_libs=$LIBS
+   AC_SUBST([ARGP_LIBS])
+ LIBS=$argp_saved_libs
++AC_CHECK_FUNCS([fork], AC_DEFINE([HAVE_LIBV4LCONVERT_HELPERS],[1],[whether to use libv4lconvert helpers]))
++AM_CONDITIONAL([HAVE_LIBV4LCONVERT_HELPERS], [test x$ac_cv_func_fork = xyes])
++
+ AC_CHECK_HEADER([linux/i2c-dev.h], [linux_i2c_dev=yes], [linux_i2c_dev=no])
+ AM_CONDITIONAL([HAVE_LINUX_I2C_DEV], [test x$linux_i2c_dev = xyes])
+diff --git a/lib/libv4lconvert/Makefile.am b/lib/libv4lconvert/Makefile.am
+index 4f332fa..f266f3e 100644
+--- a/lib/libv4lconvert/Makefile.am
++++ b/lib/libv4lconvert/Makefile.am
+@@ -1,6 +1,8 @@
+ if WITH_DYN_LIBV4L
+ lib_LTLIBRARIES = libv4lconvert.la
++if HAVE_LIBV4LCONVERT_HELPERS
+ libv4lconvertpriv_PROGRAMS = ov511-decomp ov518-decomp
++endif
+ include_HEADERS = ../include/libv4lconvert.h
+ pkgconfig_DATA = libv4lconvert.pc
+ LIBV4LCONVERT_VERSION = -version-info 0
+@@ -16,11 +18,14 @@ libv4lconvert_la_SOURCES = \
+   control/libv4lcontrol.c control/libv4lcontrol.h control/libv4lcontrol-priv.h \
+   processing/libv4lprocessing.c processing/whitebalance.c processing/autogain.c \
+   processing/gamma.c processing/libv4lprocessing.h processing/libv4lprocessing-priv.h \
+-  helper.c helper-funcs.h libv4lconvert-priv.h libv4lsyscall-priv.h \
++  helper-funcs.h libv4lconvert-priv.h libv4lsyscall-priv.h \
+   tinyjpeg.h tinyjpeg-internal.h
+ if HAVE_JPEG
+ libv4lconvert_la_SOURCES += jpeg_memsrcdest.c jpeg_memsrcdest.h
+ endif
++if HAVE_LIBV4LCONVERT_HELPERS
++libv4lconvert_la_SOURCES += helper.c
++endif
+ libv4lconvert_la_CPPFLAGS = $(CFLAG_VISIBILITY) $(ENFORCE_LIBV4L_STATIC)
+ libv4lconvert_la_LDFLAGS = $(LIBV4LCONVERT_VERSION) -lrt -lm $(JPEG_LIBS) $(ENFORCE_LIBV4L_STATIC)
+diff --git a/lib/libv4lconvert/libv4lconvert.c b/lib/libv4lconvert/libv4lconvert.c
+index d60774e..1a5ccec 100644
+--- a/lib/libv4lconvert/libv4lconvert.c
++++ b/lib/libv4lconvert/libv4lconvert.c
+@@ -122,8 +122,10 @@ static const struct v4lconvert_pixfmt supported_src_pixfmts[] = {
+       { V4L2_PIX_FMT_JPEG,             0,      7,      7,     0 },
+       { V4L2_PIX_FMT_PJPG,             0,      7,      7,     1 },
+       { V4L2_PIX_FMT_JPGL,             0,      7,      7,     1 },
++#ifdef HAVE_LIBV4LCONVERT_HELPERS
+       { V4L2_PIX_FMT_OV511,            0,      7,      7,     1 },
+       { V4L2_PIX_FMT_OV518,            0,      7,      7,     1 },
++#endif
+       /* uncompressed bayer */
+       { V4L2_PIX_FMT_SBGGR8,           8,      8,      8,     0 },
+       { V4L2_PIX_FMT_SGBRG8,           8,      8,      8,     0 },
+@@ -278,7 +280,9 @@ void v4lconvert_destroy(struct v4lconvert_data *data)
+       if (data->cinfo_initialized)
+               jpeg_destroy_decompress(&data->cinfo);
+ #endif // HAVE_JPEG
++#ifdef HAVE_LIBV4LCONVERT_HELPERS
+       v4lconvert_helper_cleanup(data);
++#endif
+       free(data->convert1_buf);
+       free(data->convert2_buf);
+       free(data->rotate90_buf);
+@@ -833,6 +837,7 @@ static int v4lconvert_convert_pixfmt(struct v4lconvert_data *data,
+                               return -1;
+                       }
+                       break;
++#ifdef HAVE_LIBV4LCONVERT_HELPERS
+               case V4L2_PIX_FMT_OV511:
+                       if (v4lconvert_helper_decompress(data, LIBV4LCONVERT_PRIV_DIR "/ov511-decomp",
+                                               src, src_size, d, d_size, width, height, yvu)) {
+@@ -849,6 +854,7 @@ static int v4lconvert_convert_pixfmt(struct v4lconvert_data *data,
+                               return -1;
+                       }
+                       break;
++#endif
+               }
+               switch (dest_pix_fmt) {
+-- 
+1.9.1
+