1dnl 2dnl Configure options 3dnl 4PHP_ARG_ENABLE([gd], 5 [for GD support], 6 [AS_HELP_STRING([--enable-gd], 7 [Include GD support])]) 8 9PHP_ARG_WITH([external-gd], 10 [for external libgd], 11 [AS_HELP_STRING([--with-external-gd], 12 [Use external libgd])], 13 [no], 14 [no]) 15 16if test -z "$PHP_AVIF"; then 17 PHP_ARG_WITH([avif], 18 [for libavif], 19 [AS_HELP_STRING([--with-avif], 20 [GD: Enable AVIF support (only for bundled libgd)])], 21 [no], 22 [no]) 23fi 24 25if test -z "$PHP_WEBP"; then 26 PHP_ARG_WITH([webp], 27 [for libwebp], 28 [AS_HELP_STRING([--with-webp], 29 [GD: Enable WEBP support (only for bundled libgd)])], 30 [no], 31 [no]) 32fi 33 34if test -z "$PHP_JPEG"; then 35 PHP_ARG_WITH([jpeg], 36 [for libjpeg], 37 [AS_HELP_STRING([--with-jpeg], 38 [GD: Enable JPEG support (only for bundled libgd)])], 39 [no], 40 [no]) 41fi 42 43PHP_ARG_WITH([xpm], 44 [for libXpm], 45 [AS_HELP_STRING([--with-xpm], 46 [GD: Enable XPM support (only for bundled libgd)])], 47 [no], 48 [no]) 49 50PHP_ARG_WITH([freetype], 51 [for FreeType 2], 52 [AS_HELP_STRING([--with-freetype], 53 [GD: Enable FreeType 2 support (only for bundled libgd)])], 54 [no], 55 [no]) 56 57PHP_ARG_ENABLE([gd-jis-conv], 58 [whether to enable JIS-mapped Japanese font support in GD], 59 [AS_HELP_STRING([--enable-gd-jis-conv], 60 [GD: Enable JIS-mapped Japanese font support (only for bundled libgd)])], 61 [no], 62 [no]) 63 64dnl 65dnl Checks for the configure options 66dnl 67 68dnl libpng is always required 69AC_DEFUN([PHP_GD_PNG],[ 70 PKG_CHECK_MODULES([PNG], [libpng]) 71 PHP_EVAL_LIBLINE($PNG_LIBS, GD_SHARED_LIBADD) 72 PHP_EVAL_INCLINE($PNG_CFLAGS) 73 AC_DEFINE(HAVE_LIBPNG, 1, [ ]) 74]) 75 76AC_DEFUN([PHP_GD_AVIF],[ 77 if test "$PHP_AVIF" != "no"; then 78 PKG_CHECK_MODULES([AVIF], [libavif >= 0.8.2]) 79 PHP_EVAL_LIBLINE($AVIF_LIBS, GD_SHARED_LIBADD) 80 PHP_EVAL_INCLINE($AVIF_CFLAGS) 81 AC_DEFINE(HAVE_LIBAVIF, 1, [ ]) 82 AC_DEFINE(HAVE_GD_AVIF, 1, [ ]) 83 fi 84]) 85 86AC_DEFUN([PHP_GD_WEBP],[ 87 if test "$PHP_WEBP" != "no"; then 88 PKG_CHECK_MODULES([WEBP], [libwebp >= 0.2.0]) 89 PHP_EVAL_LIBLINE($WEBP_LIBS, GD_SHARED_LIBADD) 90 PHP_EVAL_INCLINE($WEBP_CFLAGS) 91 AC_DEFINE(HAVE_LIBWEBP, 1, [ ]) 92 AC_DEFINE(HAVE_GD_WEBP, 1, [ ]) 93 fi 94]) 95 96AC_DEFUN([PHP_GD_JPEG],[ 97 if test "$PHP_JPEG" != "no"; then 98 PKG_CHECK_MODULES([JPEG], [libjpeg]) 99 PHP_EVAL_LIBLINE($JPEG_LIBS, GD_SHARED_LIBADD) 100 PHP_EVAL_INCLINE($JPEG_CFLAGS) 101 AC_DEFINE(HAVE_LIBJPEG, 1, [ ]) 102 AC_DEFINE(HAVE_GD_JPG, 1, [ ]) 103 fi 104]) 105 106AC_DEFUN([PHP_GD_XPM],[ 107 if test "$PHP_XPM" != "no"; then 108 PKG_CHECK_MODULES([XPM], [xpm]) 109 PHP_EVAL_LIBLINE($XPM_LIBS, GD_SHARED_LIBADD) 110 PHP_EVAL_INCLINE($XPM_CFLAGS) 111 AC_DEFINE(HAVE_XPM, 1, [ ]) 112 AC_DEFINE(HAVE_GD_XPM, 1, [ ]) 113 fi 114]) 115 116AC_DEFUN([PHP_GD_FREETYPE2],[ 117 if test "$PHP_FREETYPE" != "no"; then 118 PKG_CHECK_MODULES([FREETYPE2], [freetype2], [FREETYPE2_FOUND=true]) 119 120 PHP_EVAL_INCLINE($FREETYPE2_CFLAGS) 121 PHP_EVAL_LIBLINE($FREETYPE2_LIBS, GD_SHARED_LIBADD) 122 AC_DEFINE(HAVE_LIBFREETYPE, 1, [ ]) 123 AC_DEFINE(HAVE_GD_FREETYPE, 1, [ ]) 124 fi 125]) 126 127AC_DEFUN([PHP_GD_JISX0208],[ 128 if test "$PHP_GD_JIS_CONV" = "yes"; then 129 AC_DEFINE(USE_GD_JISX0208, 1, [ ]) 130 AC_DEFINE(JISX0208, 1, [ ]) 131 fi 132]) 133 134dnl Build and run a program to determine if GD has support for the given 135dnl format. The first argument is the proper-noun-capitalized name of the 136dnl format -- basically the word Foo in gdImageCreateFromFoo -- such as 137dnl Png. If support for format Foo exists, the second argument (the name 138dnl of a constant) will be defined to 1. The reason for this charade is 139dnl that gd defines "junk" versions of each gdImageCreateFromFoo function 140dnl even when it does not support the Foo format. Those junk functions 141dnl display a warning but eventually return normally, making a simple link 142dnl or run test insufficient. 143AC_DEFUN([PHP_GD_CHECK_FORMAT], 144[AS_VAR_PUSHDEF([php_var], [php_cv_lib_gd_gdImageCreateFrom$1]) 145old_LIBS="${LIBS}" 146LIBS="${LIBS} ${GD_SHARED_LIBADD}" 147old_CFLAGS="${CFLAGS}" 148CFLAGS="${CFLAGS} ${GDLIB_CFLAGS}" 149AC_LANG_PUSH([C]) 150AC_CACHE_CHECK([for working gdImageCreateFrom$1 in libgd], [php_var], 151 [AC_RUN_IFELSE([AC_LANG_SOURCE([ 152#include <stdio.h> 153#include <unistd.h> 154#include <gd.h> 155 156/* A custom gdErrorMethod */ 157void exit1(int priority, const char *format, va_list args) { 158 _exit(1); 159} 160 161/* Override the default gd_error_method with one that 162 actually causes the program to return an error. */ 163int main(int argc, char** argv) { 164 m4_if([$1],[Xpm], 165 [char* f = "test.xpm"], 166 [FILE* f = NULL]); 167 gdSetErrorMethod(exit1); 168 gdImagePtr p = gdImageCreateFrom$1(f); 169 return 0; 170}])], 171 [AS_VAR_SET([php_var], [yes])], 172 [AS_VAR_SET([php_var], [no])], 173 [AS_VAR_SET([php_var], [no])])]) 174AS_VAR_IF([php_var], [yes], 175 [AC_DEFINE_UNQUOTED([$2], [1], 176 [Define to 1 if GD library has 'gdImageCreateFrom$1'.])]) 177AC_LANG_POP([C]) 178CFLAGS="${old_CFLAGS}" 179LIBS="${old_LIBS}" 180AS_VAR_POPDEF([php_var]) 181]) 182 183AC_DEFUN([PHP_GD_CHECK_VERSION],[ 184 PHP_GD_CHECK_FORMAT([Png], [HAVE_GD_PNG]) 185 PHP_GD_CHECK_FORMAT([Avif], [HAVE_GD_AVIF]) 186 PHP_GD_CHECK_FORMAT([Webp], [HAVE_GD_WEBP]) 187 PHP_GD_CHECK_FORMAT([Jpeg], [HAVE_GD_JPG]) 188 PHP_GD_CHECK_FORMAT([Xpm], [HAVE_GD_XPM]) 189 PHP_GD_CHECK_FORMAT([Bmp], [HAVE_GD_BMP]) 190 PHP_GD_CHECK_FORMAT([Tga], [HAVE_GD_TGA]) 191 PHP_CHECK_LIBRARY(gd, gdFontCacheShutdown, [AC_DEFINE(HAVE_GD_FREETYPE, 1, [ ])], [], [ $GD_SHARED_LIBADD ]) 192 PHP_CHECK_LIBRARY(gd, gdVersionString, [AC_DEFINE(HAVE_GD_LIBVERSION, 1, [ ])], [], [ $GD_SHARED_LIBADD ]) 193 PHP_CHECK_LIBRARY(gd, gdImageGetInterpolationMethod, [AC_DEFINE(HAVE_GD_GET_INTERPOLATION, 1, [ ])], [], [ $GD_SHARED_LIBADD ]) 194]) 195 196dnl 197dnl Main GD configure 198dnl 199 200if test "$PHP_GD" != "no"; then 201 202 if test "$PHP_EXTERNAL_GD" = "no"; then 203 extra_sources="libgd/gd.c libgd/gd_gd.c libgd/gd_gd2.c libgd/gd_io.c libgd/gd_io_dp.c \ 204 libgd/gd_io_file.c libgd/gd_ss.c libgd/gd_io_ss.c libgd/gd_webp.c libgd/gd_avif.c \ 205 libgd/gd_png.c libgd/gd_jpeg.c libgd/gdxpm.c libgd/gdfontt.c libgd/gdfonts.c \ 206 libgd/gdfontmb.c libgd/gdfontl.c libgd/gdfontg.c libgd/gdtables.c libgd/gdft.c \ 207 libgd/gdcache.c libgd/gdkanji.c libgd/wbmp.c libgd/gd_wbmp.c libgd/gdhelpers.c \ 208 libgd/gd_topal.c libgd/gd_gif_in.c libgd/gd_xbm.c libgd/gd_gif_out.c libgd/gd_security.c \ 209 libgd/gd_filter.c libgd/gd_pixelate.c libgd/gd_rotate.c libgd/gd_color_match.c \ 210 libgd/gd_transform.c libgd/gd_crop.c libgd/gd_interpolation.c libgd/gd_matrix.c \ 211 libgd/gd_bmp.c libgd/gd_tga.c" 212 213dnl These are always available with bundled library 214 AC_DEFINE(HAVE_GD_BUNDLED, 1, [ ]) 215 AC_DEFINE(HAVE_GD_PNG, 1, [ ]) 216 AC_DEFINE(HAVE_GD_BMP, 1, [ ]) 217 AC_DEFINE(HAVE_GD_TGA, 1, [ ]) 218 219dnl Various checks for GD features 220 PHP_SETUP_ZLIB([GD_SHARED_LIBADD]) 221 PHP_GD_PNG 222 PHP_GD_AVIF 223 PHP_GD_WEBP 224 PHP_GD_JPEG 225 PHP_GD_XPM 226 PHP_GD_FREETYPE2 227 PHP_GD_JISX0208 228 229 PHP_NEW_EXTENSION(gd, gd.c $extra_sources, $ext_shared,, \\$(GD_CFLAGS)) 230 PHP_ADD_BUILD_DIR($ext_builddir/libgd) 231 GD_CFLAGS="-Wno-strict-prototypes -I$ext_srcdir/libgd $GD_CFLAGS" 232 PHP_INSTALL_HEADERS([ext/gd], [php_gd.h libgd/]) 233 234 PHP_TEST_BUILD(foobar, [], [ 235 AC_MSG_ERROR([GD build test failed. Please check the config.log for details.]) 236 ], [ $GD_SHARED_LIBADD ], [char foobar(void) { return '\0'; }]) 237 238 else 239 extra_sources="gd_compat.c" 240 PKG_CHECK_MODULES([GDLIB], [gdlib >= 2.1.0]) 241 PHP_EVAL_LIBLINE($GDLIB_LIBS, GD_SHARED_LIBADD) 242 PHP_EVAL_INCLINE($GDLIB_CFLAGS) 243 AC_DEFINE(HAVE_LIBGD, 1, [ ]) 244 PHP_GD_CHECK_VERSION 245 246 PHP_NEW_EXTENSION(gd, gd.c $extra_sources, $ext_shared) 247 PHP_INSTALL_HEADERS([ext/gd], [php_gd.h]) 248 PHP_CHECK_LIBRARY(gd, gdImageCreate, [], [ 249 AC_MSG_ERROR([GD build test failed. Please check the config.log for details.]) 250 ], [ $GD_SHARED_LIBADD ]) 251 fi 252 253 PHP_SUBST(GD_CFLAGS) 254 PHP_SUBST(GDLIB_CFLAGS) 255 PHP_SUBST(GDLIB_LIBS) 256 PHP_SUBST(GD_SHARED_LIBADD) 257fi 258