make gd/gd2 image formats optional #428

We still enable them by default, but we'll probably flip them off
in the next major release series.
master
Mike Frysinger 2018-01-29 18:07:44 -05:00 committed by Mike Frysinger
parent 1daf261a83
commit 14b8020dda
14 changed files with 115 additions and 25 deletions

View File

@ -11,6 +11,7 @@ SET(CMAKE_MODULE_PATH "${GD_SOURCE_DIR}/cmake/modules")
include(gd)
OPTION(ENABLE_GD_FORMATS "Enable GD image formats" 0)
OPTION(ENABLE_PNG "Enable PNG support" 0)
OPTION(ENABLE_LIQ "Enable libimagequant support" 0)
OPTION(ENABLE_JPEG "Enable JPEG support" 0)
@ -144,6 +145,8 @@ else (USE_EXT_GD)
FIND_PACKAGE(FontConfig)
endif (ENABLE_FONTCONFIG)
SET(ENABLE_GD_FORMATS ${ENABLE_GD_FORMATS})
if (FREETYPE_FOUND)
INCLUDE_DIRECTORIES(${FREETYPE_INCLUDE_DIRS})
SET(HAVE_FT2BUILD_H 1)

View File

@ -20,8 +20,9 @@ fi
(
echo "/* Generated from config.hin via autoheader for cmake; see bootstrap.sh. */"
sed \
sed -E \
-e '1d' \
-e '/\bENABLE_/{s:#undef:#define:;s:([^ ]*)$:\1 @\1@:}' \
-e 's:#undef:#cmakedefine:' \
src/config.hin
) > src/config.h.cmake

View File

@ -121,6 +121,21 @@ AC_CHECK_FUNC(sin,,[AC_CHECK_LIB(m,sin)])
AX_PTHREAD()
AX_OPENMP()
dnl We should default this to off in future releases.
AC_MSG_CHECKING([whether to support gd image formats])
AC_ARG_ENABLE([gd-formats],
[AS_HELP_STRING([--disable-gd-formats], [Disable support for the legacy/testing gd image formats])],
[gd_enable_gd_formats=$enableval],
[gd_enable_gd_formats=yes])
AC_MSG_RESULT([$gd_enable_gd_formats])
if test "$gd_enable_gd_formats" = yes; then
gd_ac_value=1
else
gd_ac_value=0
fi
AC_DEFINE_UNQUOTED([ENABLE_GD_FORMATS], [$gd_ac_value], [Whether to support gd image formats])
AM_CONDITIONAL([ENABLE_GD_FORMATS], test "$gd_enable_gd_formats" = yes)
dnl Helper macro for working with external libraries.
dnl GD_LIB_CHECK([SYM], [FEATURE], [name], [...test...])
dnl $1 - upper case symbol
@ -308,6 +323,7 @@ dnl report configuration
AC_MSG_RESULT([
** Configuration summary for $PACKAGE $VERSION:
Support for gd/gd2 images: $gd_enable_gd_formats
Support for Zlib: $gd_with_LIBZ
Support for PNG library: $gd_with_LIBPNG
Support for JPEG library: $gd_with_LIBJPEG

View File

@ -3,6 +3,9 @@
/* Define is you are building for Win32 API */
#cmakedefine BGDWIN32
/* Whether to support gd image formats */
#define ENABLE_GD_FORMATS @ENABLE_GD_FORMATS@
/* Define to 1 if you have the <dirent.h> header file. */
#cmakedefine HAVE_DIRENT_H

View File

@ -57,6 +57,10 @@
#include <string.h>
#include <stdlib.h>
#include "gd.h"
#include "gd_errors.h"
/* 2.3: gd is no longer mandatory */
#if ENABLE_GD_FORMATS
#define TRUE 1
#define FALSE 0
@ -400,3 +404,41 @@ BGD_DECLARE(void *) gdImageGdPtr (gdImagePtr im, int *size)
out->gd_free (out);
return rv;
}
#else /* no HAVE_LIBZ or !ENABLE_GD_FORMATS */
static void _noGdError (void)
{
gd_error("GD image support has been disabled\n");
}
BGD_DECLARE(gdImagePtr) gdImageCreateFromGd (FILE * inFile)
{
_noGdError();
return NULL;
}
BGD_DECLARE(gdImagePtr) gdImageCreateFromGdPtr (int size, void *data)
{
_noGdError();
return NULL;
}
BGD_DECLARE(gdImagePtr) gdImageCreateFromGdCtx (gdIOCtxPtr in)
{
_noGdError();
return NULL;
}
BGD_DECLARE(void) gdImageGd (gdImagePtr im, FILE * outFile)
{
_noGdError();
}
BGD_DECLARE(void *) gdImageGdPtr (gdImagePtr im, int *size)
{
_noGdError();
return NULL;
}
#endif /* ENABLE_GD_FORMATS */

View File

@ -85,7 +85,7 @@
/* 2.03: gd2 is no longer mandatory */
/* JCE - test after including gd.h so that HAVE_LIBZ can be set in
* a config.h file included by gd.h */
#ifdef HAVE_LIBZ
#if defined(HAVE_LIBZ) && ENABLE_GD_FORMATS
#include <zlib.h>
#define TRUE 1
@ -1134,57 +1134,61 @@ BGD_DECLARE(void *) gdImageGd2Ptr (gdImagePtr im, int cs, int fmt, int *size)
return rv;
}
#else /* no HAVE_LIBZ */
static void _noLibzError (void)
#else /* no HAVE_LIBZ or !ENABLE_GD_FORMATS */
static void _noGd2Error (void)
{
#if !ENABLE_GD_FORMATS
gd_error("GD2 image support has been disabled\n");
#else
gd_error("GD2 support is not available - no libz\n");
#endif
}
BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2 (FILE * inFile)
{
_noLibzError();
_noGd2Error();
return NULL;
}
BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2Ctx (gdIOCtxPtr in)
{
_noLibzError();
_noGd2Error();
return NULL;
}
BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2Part (FILE * inFile, int srcx, int srcy, int w, int h)
{
_noLibzError();
_noGd2Error();
return NULL;
}
BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2Ptr (int size, void *data)
{
_noLibzError();
_noGd2Error();
return NULL;
}
BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2PartCtx (gdIOCtx * in, int srcx, int srcy, int w, int h)
{
_noLibzError();
_noGd2Error();
return NULL;
}
BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2PartPtr (int size, void *data, int srcx, int srcy, int w,
int h)
{
_noLibzError();
_noGd2Error();
return NULL;
}
BGD_DECLARE(void) gdImageGd2 (gdImagePtr im, FILE * outFile, int cs, int fmt)
{
_noLibzError();
_noGd2Error();
}
BGD_DECLARE(void *) gdImageGd2Ptr (gdImagePtr im, int cs, int fmt, int *size)
{
_noLibzError();
_noGd2Error();
return NULL;
}
#endif /* HAVE_LIBZ */

View File

@ -1,7 +1,11 @@
LIST(APPEND TESTS_FILES
gd_versiontest
)
IF(ENABLE_GD_FORMATS)
LIST(APPEND TESTS_FILES
gd_null
gd_num_colors
gd_versiontest
)
IF(PNG_FOUND)
@ -9,5 +13,6 @@ LIST(APPEND TESTS_FILES
gd_im2im
)
ENDIF(PNG_FOUND)
ENDIF(ENABLE_GD_FORMATS)
ADD_GD_TESTS()

View File

@ -1,12 +1,16 @@
libgd_test_programs += \
gd/gd_versiontest
if ENABLE_GD_FORMATS
libgd_test_programs += \
gd/gd_null \
gd/gd_num_colors \
gd/gd_versiontest
gd/gd_num_colors
if HAVE_LIBPNG
libgd_test_programs += \
gd/gd_im2im
endif
endif
EXTRA_DIST += \
gd/crafted_num_colors.gd \

View File

@ -1,3 +1,5 @@
IF(ENABLE_GD_FORMATS)
IF(ZLIB_FOUND)
LIST(APPEND TESTS_FILES
bug_289
bug00209
@ -5,15 +7,11 @@ LIST(APPEND TESTS_FILES
bug00354
gd2_empty_file
php_bug_72339
gd2_null
gd2_read_corrupt
too_few_image_data
)
IF(ZLIB_FOUND)
LIST(APPEND TESTS_FILES
gd2_null
)
IF(PNG_FOUND)
LIST(APPEND TESTS_FILES
gd2_im2im
@ -21,5 +19,6 @@ LIST(APPEND TESTS_FILES
)
ENDIF(PNG_FOUND)
ENDIF(ZLIB_FOUND)
ENDIF(ENABLE_GD_FORMATS)
ADD_GD_TESTS()

View File

@ -1,3 +1,5 @@
if ENABLE_GD_FORMATS
if HAVE_LIBZ
libgd_test_programs += \
gd2/bug_289 \
gd2/bug00209 \
@ -5,19 +7,17 @@ libgd_test_programs += \
gd2/bug00354 \
gd2/gd2_empty_file \
gd2/php_bug_72339 \
gd2/gd2_null \
gd2/gd2_read_corrupt \
gd2/too_few_image_data
if HAVE_LIBZ
libgd_test_programs += \
gd2/gd2_null
if HAVE_LIBPNG
libgd_test_programs += \
gd2/gd2_im2im \
gd2/gd2_read
endif
endif
endif
EXTRA_DIST += \
gd2/CMakeLists.txt \

View File

@ -1,9 +1,11 @@
if HAVE_LIBTIFF
if HAVE_LIBWEBP
if ENABLE_GD_FORMATS
libgd_test_programs += \
gdimagefile/gdnametest
endif
endif
endif
EXTRA_DIST += \
gdimagefile/CMakeLists.txt \

View File

@ -10,8 +10,13 @@ LIST(APPEND TESTS_FILES
bug00193
bug00338
bug00381_1
)
IF(ENABLE_GD_FORMATS)
LIST(APPEND TESTS_FILES
bug00381_2
)
ENDIF(ENABLE_GD_FORMATS)
ENDIF(PNG_FOUND)
ADD_GD_TESTS()

View File

@ -7,10 +7,14 @@ libgd_test_programs += \
png/bug00193 \
png/bug00338 \
png/bug00381_1 \
png/bug00381_2 \
png/png_im2im \
png/png_null \
png/png_resolution
if ENABLE_GD_FORMATS
libgd_test_programs += \
png/bug00381_2
endif
endif
EXTRA_DIST += \

View File

@ -71,6 +71,7 @@ build_autotools() {
--prefix=/usr/local \
--libdir=/usr/local/lib \
--enable-werror \
--enable-gd-formats \
--with-fontconfig \
--with-freetype \
--with-jpeg \
@ -100,6 +101,7 @@ build_cmake() {
-DBUILD_TEST=1
-DCMAKE_INSTALL_PREFIX=/usr/local
-DCMAKE_INSTALL_LIBDIR=/usr/local/lib
-DENABLE_GD_FORMATS=1
-DENABLE_FONTCONFIG=1
-DENABLE_FREETYPE=1
-DENABLE_JPEG=1