config.m4 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. dnl
  2. dnl Configure options
  3. dnl
  4. PHP_ARG_ENABLE([gd],
  5. [for GD support],
  6. [AS_HELP_STRING([--enable-gd],
  7. [Include GD support])])
  8. PHP_ARG_WITH([external-gd],
  9. [for external libgd],
  10. [AS_HELP_STRING([--with-external-gd],
  11. [Use external libgd])],
  12. [no],
  13. [no])
  14. if test -z "$PHP_AVIF"; then
  15. PHP_ARG_WITH([avif],
  16. [for libavif],
  17. [AS_HELP_STRING([--with-avif],
  18. [GD: Enable AVIF support (only for bundled libgd)])],
  19. [no],
  20. [no])
  21. fi
  22. if test -z "$PHP_WEBP"; then
  23. PHP_ARG_WITH([webp],
  24. [for libwebp],
  25. [AS_HELP_STRING([--with-webp],
  26. [GD: Enable WEBP support (only for bundled libgd)])],
  27. [no],
  28. [no])
  29. fi
  30. if test -z "$PHP_JPEG"; then
  31. PHP_ARG_WITH([jpeg],
  32. [for libjpeg],
  33. [AS_HELP_STRING([--with-jpeg],
  34. [GD: Enable JPEG support (only for bundled libgd)])],
  35. [no],
  36. [no])
  37. fi
  38. PHP_ARG_WITH([xpm],
  39. [for libXpm],
  40. [AS_HELP_STRING([--with-xpm],
  41. [GD: Enable XPM support (only for bundled libgd)])],
  42. [no],
  43. [no])
  44. PHP_ARG_WITH([freetype],
  45. [for FreeType 2],
  46. [AS_HELP_STRING([--with-freetype],
  47. [GD: Enable FreeType 2 support (only for bundled libgd)])],
  48. [no],
  49. [no])
  50. PHP_ARG_ENABLE([gd-jis-conv],
  51. [whether to enable JIS-mapped Japanese font support in GD],
  52. [AS_HELP_STRING([--enable-gd-jis-conv],
  53. [GD: Enable JIS-mapped Japanese font support (only for bundled libgd)])],
  54. [no],
  55. [no])
  56. dnl
  57. dnl Checks for the configure options
  58. dnl
  59. dnl zlib is always required
  60. AC_DEFUN([PHP_GD_ZLIB],[
  61. PKG_CHECK_MODULES([ZLIB], [zlib])
  62. PHP_EVAL_LIBLINE($ZLIB_LIBS, GD_SHARED_LIBADD)
  63. PHP_EVAL_INCLINE($ZLIB_CFLAGS)
  64. ])
  65. dnl libpng is always required
  66. AC_DEFUN([PHP_GD_PNG],[
  67. PKG_CHECK_MODULES([PNG], [libpng])
  68. PHP_EVAL_LIBLINE($PNG_LIBS, GD_SHARED_LIBADD)
  69. PHP_EVAL_INCLINE($PNG_CFLAGS)
  70. AC_DEFINE(HAVE_LIBPNG, 1, [ ])
  71. ])
  72. AC_DEFUN([PHP_GD_AVIF],[
  73. if test "$PHP_AVIF" != "no"; then
  74. PKG_CHECK_MODULES([AVIF], [libavif >= 0.8.2])
  75. PHP_EVAL_LIBLINE($AVIF_LIBS, GD_SHARED_LIBADD)
  76. PHP_EVAL_INCLINE($AVIF_CFLAGS)
  77. AC_DEFINE(HAVE_LIBAVIF, 1, [ ])
  78. AC_DEFINE(HAVE_GD_AVIF, 1, [ ])
  79. fi
  80. ])
  81. AC_DEFUN([PHP_GD_WEBP],[
  82. if test "$PHP_WEBP" != "no"; then
  83. PKG_CHECK_MODULES([WEBP], [libwebp >= 0.2.0])
  84. PHP_EVAL_LIBLINE($WEBP_LIBS, GD_SHARED_LIBADD)
  85. PHP_EVAL_INCLINE($WEBP_CFLAGS)
  86. AC_DEFINE(HAVE_LIBWEBP, 1, [ ])
  87. AC_DEFINE(HAVE_GD_WEBP, 1, [ ])
  88. fi
  89. ])
  90. AC_DEFUN([PHP_GD_JPEG],[
  91. if test "$PHP_JPEG" != "no"; then
  92. PKG_CHECK_MODULES([JPEG], [libjpeg])
  93. PHP_EVAL_LIBLINE($JPEG_LIBS, GD_SHARED_LIBADD)
  94. PHP_EVAL_INCLINE($JPEG_CFLAGS)
  95. AC_DEFINE(HAVE_LIBJPEG, 1, [ ])
  96. AC_DEFINE(HAVE_GD_JPG, 1, [ ])
  97. fi
  98. ])
  99. AC_DEFUN([PHP_GD_XPM],[
  100. if test "$PHP_XPM" != "no"; then
  101. PKG_CHECK_MODULES([XPM], [xpm])
  102. PHP_EVAL_LIBLINE($XPM_LIBS, GD_SHARED_LIBADD)
  103. PHP_EVAL_INCLINE($XPM_CFLAGS)
  104. AC_DEFINE(HAVE_XPM, 1, [ ])
  105. AC_DEFINE(HAVE_GD_XPM, 1, [ ])
  106. fi
  107. ])
  108. AC_DEFUN([PHP_GD_FREETYPE2],[
  109. if test "$PHP_FREETYPE" != "no"; then
  110. PKG_CHECK_MODULES([FREETYPE2], [freetype2], [FREETYPE2_FOUND=true])
  111. PHP_EVAL_INCLINE($FREETYPE2_CFLAGS)
  112. PHP_EVAL_LIBLINE($FREETYPE2_LIBS, GD_SHARED_LIBADD)
  113. AC_DEFINE(HAVE_LIBFREETYPE, 1, [ ])
  114. AC_DEFINE(HAVE_GD_FREETYPE, 1, [ ])
  115. fi
  116. ])
  117. AC_DEFUN([PHP_GD_JISX0208],[
  118. if test "$PHP_GD_JIS_CONV" = "yes"; then
  119. AC_DEFINE(USE_GD_JISX0208, 1, [ ])
  120. AC_DEFINE(JISX0208, 1, [ ])
  121. fi
  122. ])
  123. AC_DEFUN([PHP_GD_CHECK_VERSION],[
  124. PHP_CHECK_LIBRARY(gd, gdImageCreateFromPng, [AC_DEFINE(HAVE_GD_PNG, 1, [ ])], [], [ $GD_SHARED_LIBADD ])
  125. PHP_CHECK_LIBRARY(gd, gdImageCreateFromAvif, [AC_DEFINE(HAVE_GD_AVIF, 1, [ ])], [], [ $GD_SHARED_LIBADD ])
  126. PHP_CHECK_LIBRARY(gd, gdImageCreateFromWebp, [AC_DEFINE(HAVE_GD_WEBP, 1, [ ])], [], [ $GD_SHARED_LIBADD ])
  127. PHP_CHECK_LIBRARY(gd, gdImageCreateFromJpeg, [AC_DEFINE(HAVE_GD_JPG, 1, [ ])], [], [ $GD_SHARED_LIBADD ])
  128. PHP_CHECK_LIBRARY(gd, gdImageCreateFromXpm, [AC_DEFINE(HAVE_GD_XPM, 1, [ ])], [], [ $GD_SHARED_LIBADD ])
  129. PHP_CHECK_LIBRARY(gd, gdImageCreateFromBmp, [AC_DEFINE(HAVE_GD_BMP, 1, [ ])], [], [ $GD_SHARED_LIBADD ])
  130. PHP_CHECK_LIBRARY(gd, gdImageCreateFromTga, [AC_DEFINE(HAVE_GD_TGA, 1, [ ])], [], [ $GD_SHARED_LIBADD ])
  131. PHP_CHECK_LIBRARY(gd, gdImageStringFT, [AC_DEFINE(HAVE_GD_FREETYPE, 1, [ ])], [], [ $GD_SHARED_LIBADD ])
  132. PHP_CHECK_LIBRARY(gd, gdVersionString, [AC_DEFINE(HAVE_GD_LIBVERSION, 1, [ ])], [], [ $GD_SHARED_LIBADD ])
  133. PHP_CHECK_LIBRARY(gd, gdImageGetInterpolationMethod, [AC_DEFINE(HAVE_GD_GET_INTERPOLATION, 1, [ ])], [], [ $GD_SHARED_LIBADD ])
  134. ])
  135. dnl
  136. dnl Main GD configure
  137. dnl
  138. if test "$PHP_GD" != "no"; then
  139. if test "$PHP_EXTERNAL_GD" = "no"; then
  140. extra_sources="libgd/gd.c libgd/gd_gd.c libgd/gd_gd2.c libgd/gd_io.c libgd/gd_io_dp.c \
  141. libgd/gd_io_file.c libgd/gd_ss.c libgd/gd_io_ss.c libgd/gd_webp.c libgd/gd_avif.c \
  142. libgd/gd_png.c libgd/gd_jpeg.c libgd/gdxpm.c libgd/gdfontt.c libgd/gdfonts.c \
  143. libgd/gdfontmb.c libgd/gdfontl.c libgd/gdfontg.c libgd/gdtables.c libgd/gdft.c \
  144. libgd/gdcache.c libgd/gdkanji.c libgd/wbmp.c libgd/gd_wbmp.c libgd/gdhelpers.c \
  145. libgd/gd_topal.c libgd/gd_gif_in.c libgd/gd_xbm.c libgd/gd_gif_out.c libgd/gd_security.c \
  146. libgd/gd_filter.c libgd/gd_pixelate.c libgd/gd_rotate.c libgd/gd_color_match.c \
  147. libgd/gd_transform.c libgd/gd_crop.c libgd/gd_interpolation.c libgd/gd_matrix.c \
  148. libgd/gd_bmp.c libgd/gd_tga.c"
  149. dnl check for fabsf and floorf which are available since C99
  150. AC_CHECK_FUNCS(fabsf floorf)
  151. dnl These are always available with bundled library
  152. AC_DEFINE(HAVE_GD_BUNDLED, 1, [ ])
  153. AC_DEFINE(HAVE_GD_PNG, 1, [ ])
  154. AC_DEFINE(HAVE_GD_BMP, 1, [ ])
  155. AC_DEFINE(HAVE_GD_TGA, 1, [ ])
  156. dnl Various checks for GD features
  157. PHP_GD_ZLIB
  158. PHP_GD_PNG
  159. PHP_GD_AVIF
  160. PHP_GD_WEBP
  161. PHP_GD_JPEG
  162. PHP_GD_XPM
  163. PHP_GD_FREETYPE2
  164. PHP_GD_JISX0208
  165. PHP_NEW_EXTENSION(gd, gd.c $extra_sources, $ext_shared,, \\$(GD_CFLAGS))
  166. PHP_ADD_BUILD_DIR($ext_builddir/libgd)
  167. GD_CFLAGS="-I$ext_srcdir/libgd $GD_CFLAGS"
  168. GD_HEADER_DIRS="ext/gd/ ext/gd/libgd/"
  169. PHP_TEST_BUILD(foobar, [], [
  170. AC_MSG_ERROR([GD build test failed. Please check the config.log for details.])
  171. ], [ $GD_SHARED_LIBADD ], [char foobar () {}])
  172. else
  173. extra_sources="gd_compat.c"
  174. PKG_CHECK_MODULES([GDLIB], [gdlib >= 2.1.0])
  175. PHP_EVAL_LIBLINE($GDLIB_LIBS, GD_SHARED_LIBADD)
  176. PHP_EVAL_INCLINE($GDLIB_CFLAGS)
  177. AC_DEFINE(HAVE_LIBGD, 1, [ ])
  178. PHP_GD_CHECK_VERSION
  179. PHP_NEW_EXTENSION(gd, gd.c $extra_sources, $ext_shared)
  180. GD_HEADER_DIRS="ext/gd/"
  181. PHP_CHECK_LIBRARY(gd, gdImageCreate, [], [
  182. AC_MSG_ERROR([GD build test failed. Please check the config.log for details.])
  183. ], [ $GD_SHARED_LIBADD ])
  184. fi
  185. PHP_INSTALL_HEADERS([$GD_HEADER_DIRS])
  186. PHP_SUBST(GD_CFLAGS)
  187. PHP_SUBST(GDLIB_CFLAGS)
  188. PHP_SUBST(GDLIB_LIBS)
  189. PHP_SUBST(GD_SHARED_LIBADD)
  190. fi