mirror of
https://github.com/php/php-src.git
synced 2025-08-18 23:18:56 +02:00
Required GD >= 2.1.0 or GD bundled, this allows us to remove most of the #ifdef
This commit is contained in:
parent
2fc17d83cb
commit
8a90aad35b
5 changed files with 81 additions and 492 deletions
146
ext/gd/config.m4
146
ext/gd/config.m4
|
@ -259,43 +259,33 @@ AC_DEFUN([PHP_GD_JISX0208],[
|
|||
])
|
||||
|
||||
AC_DEFUN([PHP_GD_CHECK_VERSION],[
|
||||
PHP_CHECK_LIBRARY(gd, gdImageString16, [AC_DEFINE(HAVE_LIBGD13, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdImagePaletteCopy, [AC_DEFINE(HAVE_LIBGD15, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdImageCreateFromPng, [AC_DEFINE(HAVE_GD_PNG, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdImageCreateFromGif, [AC_DEFINE(HAVE_GD_GIF_READ, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdImageGif, [AC_DEFINE(HAVE_GD_GIF_CREATE, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdImageWBMP, [AC_DEFINE(HAVE_GD_WBMP, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdImageCreateFromWebp, [AC_DEFINE(HAVE_GD_WEBP, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdImageCreateFromJpeg, [AC_DEFINE(HAVE_GD_JPG, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdImageCreateFromXpm, [AC_DEFINE(HAVE_GD_XPM, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdImageCreateFromGd2, [AC_DEFINE(HAVE_GD_GD2, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdImageCreateTrueColor, [AC_DEFINE(HAVE_LIBGD20, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdImageSetTile, [AC_DEFINE(HAVE_GD_IMAGESETTILE, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdImageEllipse, [AC_DEFINE(HAVE_GD_IMAGEELLIPSE, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdImageSetBrush, [AC_DEFINE(HAVE_GD_IMAGESETBRUSH, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdImageStringTTF, [AC_DEFINE(HAVE_GD_STRINGTTF, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdImageStringFT, [AC_DEFINE(HAVE_GD_STRINGFT, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdImageStringFTEx, [AC_DEFINE(HAVE_GD_STRINGFTEX, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdImageColorClosestHWB, [AC_DEFINE(HAVE_COLORCLOSESTHWB, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdImageColorResolve, [AC_DEFINE(HAVE_GDIMAGECOLORRESOLVE, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdImageGifCtx, [AC_DEFINE(HAVE_GD_GIF_CTX, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdCacheCreate, [AC_DEFINE(HAVE_GD_CACHE_CREATE, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdFontCacheShutdown, [AC_DEFINE(HAVE_GD_FONTCACHESHUTDOWN,1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdFreeFontCache, [AC_DEFINE(HAVE_GD_FREEFONTCACHE, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdFontCacheMutexSetup, [AC_DEFINE(HAVE_GD_FONTMUTEX, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdNewDynamicCtxEx, [AC_DEFINE(HAVE_GD_DYNAMIC_CTX_EX, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdImageConvolution, [AC_DEFINE(HAVE_GD_IMAGE_CONVOLUTION, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdImagePixelate, [AC_DEFINE(HAVE_GD_IMAGE_PIXELATE, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdImageFlipBoth, [AC_DEFINE(HAVE_GD_IMAGE_FLIP, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdImageCreateFromJpegEx,[AC_DEFINE(HAVE_GD_JPGEX, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdImageCreateFromXbm, [AC_DEFINE(HAVE_GD_XBM, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdSetErrorMethod, [AC_DEFINE(HAVE_LIBGD21, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdImageStringFT, [AC_DEFINE(HAVE_GD_FREETYPE, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
])
|
||||
|
||||
dnl
|
||||
dnl Main GD configure
|
||||
dnl
|
||||
|
||||
dnl
|
||||
dnl Common for both builtin and external GD
|
||||
dnl
|
||||
if test "$PHP_GD" != "no"; then
|
||||
dnl Various checks for GD features
|
||||
PHP_GD_ZLIB
|
||||
PHP_GD_TTSTR
|
||||
PHP_GD_VPX
|
||||
PHP_GD_JPEG
|
||||
PHP_GD_PNG
|
||||
PHP_GD_XPM
|
||||
PHP_GD_FREETYPE2
|
||||
PHP_GD_T1LIB
|
||||
PHP_GD_JISX0208
|
||||
fi
|
||||
|
||||
if test "$PHP_GD" = "yes"; then
|
||||
GD_MODULE_TYPE=builtin
|
||||
extra_sources="libgd/gd.c libgd/gd_gd.c libgd/gd_gd2.c libgd/gd_io.c libgd/gd_io_dp.c \
|
||||
|
@ -305,7 +295,7 @@ if test "$PHP_GD" = "yes"; then
|
|||
libgd/gdcache.c libgd/gdkanji.c libgd/wbmp.c libgd/gd_wbmp.c libgd/gdhelpers.c \
|
||||
libgd/gd_topal.c libgd/gd_gif_in.c libgd/xbm.c libgd/gd_gif_out.c libgd/gd_security.c \
|
||||
libgd/gd_filter.c libgd/gd_pixelate.c libgd/gd_arc.c libgd/gd_rotate.c libgd/gd_color.c \
|
||||
libgd/gd_transform.c libgd/gd_crop.c libgd/gd_interpolation.c libgd/gd_matrix.c"
|
||||
libgd/gd_transform.c libgd/gd_crop.c libgd/gd_interpolation.c libgd/gd_matrix.c"
|
||||
|
||||
dnl check for fabsf and floorf which are available since C99
|
||||
AC_CHECK_FUNCS(fabsf floorf)
|
||||
|
@ -313,41 +303,10 @@ dnl check for fabsf and floorf which are available since C99
|
|||
dnl PNG is required by GD library
|
||||
test "$PHP_PNG_DIR" = "no" && PHP_PNG_DIR=yes
|
||||
|
||||
dnl Various checks for GD features
|
||||
PHP_GD_ZLIB
|
||||
PHP_GD_TTSTR
|
||||
PHP_GD_JISX0208
|
||||
PHP_GD_JPEG
|
||||
PHP_GD_VPX
|
||||
PHP_GD_PNG
|
||||
PHP_GD_XPM
|
||||
PHP_GD_FREETYPE2
|
||||
PHP_GD_T1LIB
|
||||
|
||||
dnl These are always available with bundled library
|
||||
AC_DEFINE(HAVE_LIBGD, 1, [ ])
|
||||
AC_DEFINE(HAVE_LIBGD13, 1, [ ])
|
||||
AC_DEFINE(HAVE_LIBGD15, 1, [ ])
|
||||
AC_DEFINE(HAVE_LIBGD20, 1, [ ])
|
||||
AC_DEFINE(HAVE_LIBGD204, 1, [ ])
|
||||
AC_DEFINE(HAVE_LIBGD21, 1, [ ])
|
||||
AC_DEFINE(HAVE_GD_IMAGESETTILE, 1, [ ])
|
||||
AC_DEFINE(HAVE_GD_IMAGESETBRUSH, 1, [ ])
|
||||
AC_DEFINE(HAVE_GDIMAGECOLORRESOLVE, 1, [ ])
|
||||
AC_DEFINE(HAVE_COLORCLOSESTHWB, 1, [ ])
|
||||
AC_DEFINE(HAVE_GD_WBMP, 1, [ ])
|
||||
AC_DEFINE(HAVE_GD_GD2, 1, [ ])
|
||||
AC_DEFINE(HAVE_GD_PNG, 1, [ ])
|
||||
AC_DEFINE(HAVE_GD_XBM, 1, [ ])
|
||||
AC_DEFINE(HAVE_GD_BUNDLED, 1, [ ])
|
||||
AC_DEFINE(HAVE_GD_GIF_READ, 1, [ ])
|
||||
AC_DEFINE(HAVE_GD_GIF_CREATE, 1, [ ])
|
||||
AC_DEFINE(HAVE_GD_IMAGEELLIPSE, 1, [ ])
|
||||
AC_DEFINE(HAVE_GD_FONTCACHESHUTDOWN,1, [ ])
|
||||
AC_DEFINE(HAVE_GD_FONTMUTEX, 1, [ ])
|
||||
AC_DEFINE(HAVE_GD_DYNAMIC_CTX_EX, 1, [ ])
|
||||
AC_DEFINE(HAVE_GD_GIF_CTX, 1, [ ])
|
||||
AC_DEFINE(HAVE_GD_IMAGE_FLIP, 1, [ ])
|
||||
AC_DEFINE(HAVE_GD_PNG, 1, [ ])
|
||||
AC_DEFINE(HAVE_GD_CACHE_CREATE 1, [ ])
|
||||
|
||||
dnl Make sure the libgd/ is first in the include path
|
||||
GDLIB_CFLAGS="-DHAVE_LIBPNG"
|
||||
|
@ -362,7 +321,6 @@ dnl enable the support in bundled GD library
|
|||
|
||||
if test -n "$GD_JPEG_DIR"; then
|
||||
AC_DEFINE(HAVE_GD_JPG, 1, [ ])
|
||||
AC_DEFINE(HAVE_GD_JPGEX, 1, [ ])
|
||||
GDLIB_CFLAGS="$GDLIB_CFLAGS -DHAVE_LIBJPEG"
|
||||
fi
|
||||
|
||||
|
@ -372,8 +330,7 @@ dnl enable the support in bundled GD library
|
|||
fi
|
||||
|
||||
if test -n "$FREETYPE2_DIR"; then
|
||||
AC_DEFINE(HAVE_GD_STRINGFT, 1, [ ])
|
||||
AC_DEFINE(HAVE_GD_STRINGFTEX, 1, [ ])
|
||||
AC_DEFINE(HAVE_GD_FREETYPE, 1, [ ])
|
||||
AC_DEFINE(ENABLE_GD_TTF, 1, [ ])
|
||||
GDLIB_CFLAGS="$GDLIB_CFLAGS -DHAVE_LIBFREETYPE -DENABLE_GD_TTF"
|
||||
fi
|
||||
|
@ -387,12 +344,7 @@ else
|
|||
|
||||
if test "$PHP_GD" != "no"; then
|
||||
GD_MODULE_TYPE=external
|
||||
if test -n "$HAVE_LIBGD21"; then
|
||||
extra_sources="libgd/gd_compat.c"
|
||||
else
|
||||
extra_sources="gdcache.c libgd/gd_compat.c libgd/gd_filter.c libgd/gd_pixelate.c libgd/gd_arc.c \
|
||||
libgd/gd_rotate.c libgd/gd_color.c"
|
||||
fi
|
||||
extra_sources="libgd/gd_compat.c"
|
||||
|
||||
dnl Various checks for GD features
|
||||
PHP_GD_ZLIB
|
||||
|
@ -405,48 +357,29 @@ dnl Various checks for GD features
|
|||
PHP_GD_T1LIB
|
||||
|
||||
dnl Header path
|
||||
for i in include/gd1.3 include/gd include gd1.3 gd ""; do
|
||||
for i in include/gd include gd ""; do
|
||||
test -f "$PHP_GD/$i/gd.h" && GD_INCLUDE="$PHP_GD/$i"
|
||||
done
|
||||
|
||||
dnl Library path
|
||||
for i in $PHP_LIBDIR/gd1.3 $PHP_LIBDIR/gd $PHP_LIBDIR gd1.3 gd ""; do
|
||||
test -f "$PHP_GD/$i/libgd.$SHLIB_SUFFIX_NAME" || test -f "$PHP_GD/$i/libgd.a" && GD_LIB="$PHP_GD/$i"
|
||||
done
|
||||
|
||||
if test -n "$GD_INCLUDE" && test -n "$GD_LIB"; then
|
||||
PHP_ADD_LIBRARY_WITH_PATH(gd, $GD_LIB, GD_SHARED_LIBADD)
|
||||
AC_DEFINE(HAVE_LIBGD,1,[ ])
|
||||
PHP_GD_CHECK_VERSION
|
||||
elif test -z "$GD_INCLUDE"; then
|
||||
if test -z "$GD_INCLUDE"; then
|
||||
AC_MSG_ERROR([Unable to find gd.h anywhere under $PHP_GD])
|
||||
else
|
||||
AC_MSG_ERROR([Unable to find libgd.(a|so) anywhere under $PHP_GD])
|
||||
fi
|
||||
|
||||
dnl Library path
|
||||
|
||||
PHP_CHECK_LIBRARY(gd, gdSetErrorMethod,
|
||||
[
|
||||
PHP_ADD_LIBRARY_WITH_PATH(gd, $PHP_GD/$PHP_LIBDIR, GD_SHARED_LIBADD)
|
||||
AC_DEFINE(HAVE_LIBGD, 1, [ ])
|
||||
],[
|
||||
AC_MSG_ERROR([Unable to find libgd.(a|so) >= 2.1.0 anywhere under $PHP_GD])
|
||||
],[
|
||||
-L$GD_PHP/$PHP_LIBDIR
|
||||
])
|
||||
|
||||
PHP_GD_CHECK_VERSION
|
||||
|
||||
PHP_EXPAND_PATH($GD_INCLUDE, GD_INCLUDE)
|
||||
|
||||
if test -n "$HAVE_LIBGD21"; then
|
||||
AC_DEFINE(HAVE_LIBGD204, 1, [ ])
|
||||
else
|
||||
dnl
|
||||
dnl Check for gd 2.0.4 greater availability
|
||||
dnl
|
||||
old_CPPFLAGS=$CPPFLAGS
|
||||
CPPFLAGS=-I$GD_INCLUDE
|
||||
AC_TRY_COMPILE([
|
||||
#include <gd.h>
|
||||
#include <stdlib.h>
|
||||
], [
|
||||
gdIOCtx *ctx;
|
||||
ctx = malloc(sizeof(gdIOCtx));
|
||||
ctx->gd_free = 1;
|
||||
], [
|
||||
AC_DEFINE(HAVE_LIBGD204, 1, [ ])
|
||||
])
|
||||
CPPFLAGS=$old_CPPFLAGS
|
||||
fi
|
||||
|
||||
fi
|
||||
fi
|
||||
|
||||
|
@ -465,9 +398,6 @@ if test "$PHP_GD" != "no"; then
|
|||
AC_MSG_ERROR([GD build test failed. Please check the config.log for details.])
|
||||
], [ $GD_SHARED_LIBADD ], [char foobar () {}])
|
||||
else
|
||||
if test "$HAVE_LIBGD21" = "no"; then
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/libgd)
|
||||
fi
|
||||
GD_HEADER_DIRS="ext/gd/"
|
||||
GDLIB_CFLAGS="-I$GD_INCLUDE $GDLIB_CFLAGS"
|
||||
PHP_ADD_INCLUDE($GD_INCLUDE)
|
||||
|
|
407
ext/gd/gd.c
407
ext/gd/gd.c
File diff suppressed because it is too large
Load diff
|
@ -189,11 +189,7 @@ static void _php_image_output_ctx(INTERNAL_FUNCTION_PARAMETERS, int image_type,
|
|||
break;
|
||||
}
|
||||
|
||||
#if HAVE_LIBGD204
|
||||
ctx->gd_free(ctx);
|
||||
#else
|
||||
ctx->free(ctx);
|
||||
#endif
|
||||
|
||||
RETURN_TRUE;
|
||||
}
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
#else
|
||||
#include <php_config.h>
|
||||
#endif
|
||||
#if HAVE_LIBFREETYPE && !defined(HAVE_GD_CACHE_CREATE)
|
||||
#if HAVE_LIBFREETYPE && !defined(HAVE_GD_BUNDLED)
|
||||
|
||||
#include "gdcache.h"
|
||||
|
||||
|
|
|
@ -22,8 +22,6 @@
|
|||
#ifndef PHP_GD_H
|
||||
#define PHP_GD_H
|
||||
|
||||
#define HAVE_GDIMAGECREATEFROMPNG 1
|
||||
|
||||
#if HAVE_LIBFREETYPE
|
||||
# ifndef ENABLE_GD_TTF
|
||||
# define ENABLE_GD_TTF
|
||||
|
@ -69,10 +67,10 @@ extern zend_module_entry gd_module_entry;
|
|||
/* gd.c functions */
|
||||
PHP_MINFO_FUNCTION(gd);
|
||||
PHP_MINIT_FUNCTION(gd);
|
||||
#if HAVE_LIBT1 || HAVE_GD_FONTMUTEX
|
||||
#if HAVE_LIBT1
|
||||
PHP_MSHUTDOWN_FUNCTION(gd);
|
||||
#endif
|
||||
#if HAVE_GD_STRINGFT
|
||||
#if HAVE_GD_FREETYPE && HAVE_LIBFREETYPE
|
||||
PHP_RSHUTDOWN_FUNCTION(gd);
|
||||
#endif
|
||||
|
||||
|
@ -123,15 +121,12 @@ PHP_FUNCTION(imagegrabscreen);
|
|||
|
||||
PHP_FUNCTION(imagerotate);
|
||||
|
||||
#ifdef HAVE_GD_IMAGE_FLIP
|
||||
PHP_FUNCTION(imageflip);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_GD_BUNDLED
|
||||
PHP_FUNCTION(imageantialias);
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_GD_BUNDLED) || defined(HAVE_LIBGD21)
|
||||
PHP_FUNCTION(imagecrop);
|
||||
PHP_FUNCTION(imagecropauto);
|
||||
PHP_FUNCTION(imagescale);
|
||||
|
@ -139,7 +134,6 @@ PHP_FUNCTION(imageaffine);
|
|||
PHP_FUNCTION(imageaffinematrixget);
|
||||
PHP_FUNCTION(imageaffinematrixconcat);
|
||||
PHP_FUNCTION(imagesetinterpolation);
|
||||
#endif
|
||||
|
||||
PHP_FUNCTION(imagesetthickness);
|
||||
PHP_FUNCTION(imagecopymergegray);
|
||||
|
@ -157,7 +151,7 @@ PHP_FUNCTION(imagecreatefromwbmp);
|
|||
PHP_FUNCTION(imagecreatefromgd);
|
||||
PHP_FUNCTION(imagecreatefromgd2);
|
||||
PHP_FUNCTION(imagecreatefromgd2part);
|
||||
#if defined(HAVE_GD_XPM) && (defined(HAVE_GD_BUNDLED) || defined(HAVE_LIBGD21))
|
||||
#if defined(HAVE_GD_XPM)
|
||||
PHP_FUNCTION(imagecreatefromxpm);
|
||||
#endif
|
||||
|
||||
|
@ -208,10 +202,8 @@ PHP_FUNCTION(image2wbmp);
|
|||
|
||||
PHP_FUNCTION(imagecolormatch);
|
||||
|
||||
#if defined(HAVE_GD_BUNDLED) || defined(HAVE_LIBGD21)
|
||||
PHP_FUNCTION(imagelayereffect);
|
||||
PHP_FUNCTION(imagexbm);
|
||||
#endif
|
||||
|
||||
PHP_FUNCTION(imagefilter);
|
||||
PHP_FUNCTION(imageconvolution);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue