[PATCH weston v2 2/2] configure: Make jpeglib an optional dependency.

Bryce Harrington bryce at osg.samsung.com
Wed Feb 17 06:29:34 UTC 2016


On Tue, Feb 16, 2016 at 01:57:52AM +0000, Emmanuel Gil Peyrot wrote:
> 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 at linkmauve.fr>

Is there any functional loss when jpg support is missing?

> ---
> Changes since v1:
> - Added a --without-jpeg and a --with-jpeg options
> - Added an error message when trying to load a JPEG file with jpeglig
>   disabled.
> 
> I also chose to use auto by default instead of yes, as it makes the
> most sense when building anywhere, the other option of having the build
> fail with a message asking the user to pass --without-jpeg didn’t seem
> appealing.
> 
>  configure.ac          | 23 ++++++++++++++---------
>  shared/image-loader.c | 30 +++++++++++++++++++++++-------
>  2 files changed, 37 insertions(+), 16 deletions(-)
> 
> diff --git a/configure.ac b/configure.ac
> index 878b30a..e8689bd 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -294,6 +294,19 @@ fi
>  PKG_CHECK_MODULES(PIXMAN, [pixman-1])
>  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],
>              AS_HELP_STRING([--without-webp],
>                             [Use libwebp for WebP decoding support [default=auto]]))
> @@ -318,15 +331,6 @@ if test x$enable_vaapi_recorder != xno; then
>  fi
>  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(TEST_CLIENT, [wayland-client >= 1.9.91])
> @@ -684,6 +688,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 050f067..f477dfd 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,17 @@ load_jpeg(FILE *fp)
>  	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
>  multiply_alpha(int alpha, int color)
>  {
> -- 
> 2.7.1
> 
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/wayland-devel


More information about the wayland-devel mailing list