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