configure: Make jpeglib an optional dependency.

It doesn’t make sense to fail the entire build when jpeglib isn’t
present, so this commit makes it optional just like libwebp in the
previous one, disabled with --without-jpeg and forced with --with-jpeg.

Signed-off-by: Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
dev
Emmanuel Gil Peyrot 9 years ago committed by Bryce Harrington
parent b00c79b587
commit 66e1614122
  1. 23
      configure.ac
  2. 30
      shared/image-loader.c

@ -294,6 +294,19 @@ fi
PKG_CHECK_MODULES(PIXMAN, [pixman-1]) PKG_CHECK_MODULES(PIXMAN, [pixman-1])
PKG_CHECK_MODULES(PNG, [libpng]) PKG_CHECK_MODULES(PNG, [libpng])
AC_ARG_WITH([jpeg],
AS_HELP_STRING([--without-jpeg],
[Use jpeglib for JPEG decoding support [default=auto]]))
AS_IF([test "x$with_jpeg" != "xno"],
[AC_CHECK_LIB([jpeg], [jpeg_CreateDecompress], [have_jpeglib=yes], [have_jpeglib=no])],
[have_jpeglib=no])
AS_IF([test "x$have_jpeglib" = "xyes"],
[JPEG_LIBS="-ljpeg"
AC_SUBST([JPEG_LIBS])
AC_DEFINE([HAVE_JPEG], [1], [Have jpeglib])],
[AS_IF([test "x$with_jpeg" = "xyes"],
[AC_MSG_ERROR([JPEG support explicitly requested, but jpeglib couldn't be found])])])
AC_ARG_WITH([webp], AC_ARG_WITH([webp],
AS_HELP_STRING([--without-webp], AS_HELP_STRING([--without-webp],
[Use libwebp for WebP decoding support [default=auto]])) [Use libwebp for WebP decoding support [default=auto]]))
@ -318,15 +331,6 @@ if test x$enable_vaapi_recorder != xno; then
fi fi
AM_CONDITIONAL(ENABLE_VAAPI_RECORDER, test "x$have_libva" = xyes) AM_CONDITIONAL(ENABLE_VAAPI_RECORDER, test "x$have_libva" = xyes)
AC_CHECK_LIB([jpeg], [jpeg_CreateDecompress], have_jpeglib=yes)
if test x$have_jpeglib = xyes; then
JPEG_LIBS="-ljpeg"
else
AC_ERROR([libjpeg not found])
fi
AC_SUBST(JPEG_LIBS)
PKG_CHECK_MODULES(CAIRO, [cairo]) PKG_CHECK_MODULES(CAIRO, [cairo])
PKG_CHECK_MODULES(TEST_CLIENT, [wayland-client >= 1.10.0]) PKG_CHECK_MODULES(TEST_CLIENT, [wayland-client >= 1.10.0])
@ -686,6 +690,7 @@ AC_MSG_RESULT([
Colord Support ${have_colord} Colord Support ${have_colord}
LCMS2 Support ${have_lcms} LCMS2 Support ${have_lcms}
libjpeg Support ${have_jpeglib}
libwebp Support ${have_webp} libwebp Support ${have_webp}
libunwind Support ${have_libunwind} libunwind Support ${have_libunwind}
VA H.264 encoding Support ${have_libva} VA H.264 encoding Support ${have_libva}

@ -30,13 +30,16 @@
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <jpeglib.h>
#include <png.h> #include <png.h>
#include <pixman.h> #include <pixman.h>
#include "shared/helpers.h" #include "shared/helpers.h"
#include "image-loader.h" #include "image-loader.h"
#ifdef HAVE_JPEG
#include <jpeglib.h>
#endif
#ifdef HAVE_WEBP #ifdef HAVE_WEBP
#include <webp/decode.h> #include <webp/decode.h>
#endif #endif
@ -47,6 +50,14 @@ stride_for_width(int width)
return width * 4; return width * 4;
} }
static void
pixman_image_destroy_func(pixman_image_t *image, void *data)
{
free(data);
}
#ifdef HAVE_JPEG
static void static void
swizzle_row(JSAMPLE *row, JDIMENSION width) swizzle_row(JSAMPLE *row, JDIMENSION width)
{ {
@ -68,12 +79,6 @@ error_exit(j_common_ptr cinfo)
longjmp(cinfo->client_data, 1); longjmp(cinfo->client_data, 1);
} }
static void
pixman_image_destroy_func(pixman_image_t *image, void *data)
{
free(data);
}
static pixman_image_t * static pixman_image_t *
load_jpeg(FILE *fp) load_jpeg(FILE *fp)
{ {
@ -132,6 +137,17 @@ load_jpeg(FILE *fp)
return pixman_image; return pixman_image;
} }
#else
static pixman_image_t *
load_jpeg(FILE *fp)
{
fprintf(stderr, "JPEG support disabled at compile-time\n");
return NULL;
}
#endif
static inline int static inline int
multiply_alpha(int alpha, int color) multiply_alpha(int alpha, int color)
{ {

Loading…
Cancel
Save