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 <[email protected]> --- 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 _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
