[PATCH weston] configure: Make libjpeg an optional dependency

Quentin Glidic sardemff7+wayland at sardemff7.net
Sat Feb 6 11:09:59 UTC 2016


On 06/02/2016 06:07, Emmanuel Gil Peyrot wrote:
> 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])

Please add a proper AC_ARG_ENABLE. I let you decide whether you want 
yes, no or auto as default.


>   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
>

Code is ok.

-- 

Quentin “Sardem FF7” Glidic


More information about the wayland-devel mailing list