[PATCH weston] configure: Make libjpeg an optional dependency
Emmanuel Gil Peyrot
linkmauve at linkmauve.fr
Sat Feb 6 05:07:25 UTC 2016
libjpeg is only used in shared/image-loader.c in weston, like libwebp
it doesn’t make sense to fail the entire build if it isn’t present, for
any reason.
I kept libpng a hard dependency in the image-loader because so many
other parts of weston depend on PNG, it is already mandatory from
everywhere else.
Signed-off-by: Emmanuel Gil Peyrot <linkmauve at linkmauve.fr>
---
configure.ac | 8 ++++----
shared/image-loader.c | 23 ++++++++++++++++-------
2 files changed, 20 insertions(+), 11 deletions(-)
diff --git a/configure.ac b/configure.ac
index bff6380..c42e32b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -311,13 +311,12 @@ fi
AM_CONDITIONAL(ENABLE_VAAPI_RECORDER, test "x$have_libva" = xyes)
-AC_CHECK_LIB([jpeg], [jpeg_CreateDecompress], have_jpeglib=yes)
+AC_CHECK_LIB([jpeg], [jpeg_CreateDecompress], [have_jpeglib=yes], [have_jpeglib=no])
if test x$have_jpeglib = xyes; then
JPEG_LIBS="-ljpeg"
-else
- AC_ERROR([libjpeg not found])
+ AC_SUBST(JPEG_LIBS)
+ AC_DEFINE([HAVE_JPEG], [1], [Have jpeg])
fi
-AC_SUBST(JPEG_LIBS)
PKG_CHECK_MODULES(CAIRO, [cairo])
@@ -676,6 +675,7 @@ AC_MSG_RESULT([
Colord Support ${have_colord}
LCMS2 Support ${have_lcms}
+ libjpeg Support ${have_jpeglib}
libwebp Support ${have_webp}
libunwind Support ${have_libunwind}
VA H.264 encoding Support ${have_libva}
diff --git a/shared/image-loader.c b/shared/image-loader.c
index ec75bd4..e6c0c7d 100644
--- a/shared/image-loader.c
+++ b/shared/image-loader.c
@@ -30,13 +30,16 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
-#include <jpeglib.h>
#include <png.h>
#include <pixman.h>
#include "shared/helpers.h"
#include "image-loader.h"
+#ifdef HAVE_JPEG
+#include <jpeglib.h>
+#endif
+
#ifdef HAVE_WEBP
#include <webp/decode.h>
#endif
@@ -48,6 +51,14 @@ stride_for_width(int width)
}
static void
+pixman_image_destroy_func(pixman_image_t *image, void *data)
+{
+ free(data);
+}
+
+#ifdef HAVE_JPEG
+
+static void
swizzle_row(JSAMPLE *row, JDIMENSION width)
{
JSAMPLE *s;
@@ -68,12 +79,6 @@ error_exit(j_common_ptr cinfo)
longjmp(cinfo->client_data, 1);
}
-static void
-pixman_image_destroy_func(pixman_image_t *image, void *data)
-{
- free(data);
-}
-
static pixman_image_t *
load_jpeg(FILE *fp)
{
@@ -132,6 +137,8 @@ load_jpeg(FILE *fp)
return pixman_image;
}
+#endif
+
static inline int
multiply_alpha(int alpha, int color)
{
@@ -363,7 +370,9 @@ struct image_loader {
static const struct image_loader loaders[] = {
{ { 0x89, 'P', 'N', 'G' }, 4, load_png },
+#ifdef HAVE_JPEG
{ { 0xff, 0xd8 }, 2, load_jpeg },
+#endif
#ifdef HAVE_WEBP
{ { 'R', 'I', 'F', 'F' }, 4, load_webp }
#endif
--
2.7.0
More information about the wayland-devel
mailing list