# Process this file with autoconf to produce a configure script. # Configure template for gd library AC_PREREQ([2.69]) # We extract version numbers from src/versions.h define([gv],[config/getver.sh ]$1) m4_define([gd_MAJOR],esyscmd(gv(MAJOR)))dnl m4_define([gd_MINOR],esyscmd(gv(MINOR)))dnl m4_define([gd_REVISION],esyscmd(gv(RELEASE)))dnl m4_define([gd_EXTRA],esyscmd(gv(EXTRA)))dnl m4_define([gd_PKG_VERSION],[gd_MAJOR.gd_MINOR.gd_REVISION]gd_EXTRA)]dnl AC_INIT([GD], gd_PKG_VERSION, [https://github.com/libgd/libgd/issues], [libgd], [https://lib.gd]) AC_CONFIG_SRCDIR([src/gd.c]) AC_CONFIG_AUX_DIR(config) AC_CONFIG_MACRO_DIR([m4]) AC_CANONICAL_HOST dnl Keep the libtool version details in an external script so cmake can dnl access the values too. define([lt_gv], [config/getlib.sh ]$1) m4_define([gd_LT_CURRENT], esyscmd(lt_gv(CURRENT))) m4_define([gd_LT_REVISION], esyscmd(lt_gv(REVISION))) m4_define([gd_LT_AGE], esyscmd(lt_gv(AGE))) GDLIB_LT_CURRENT=gd_LT_CURRENT GDLIB_LT_REVISION=gd_LT_REVISION GDLIB_LT_AGE=gd_LT_AGE AC_SUBST(GDLIB_LT_CURRENT) AC_SUBST(GDLIB_LT_REVISION) AC_SUBST(GDLIB_LT_AGE) AC_SUBST(LIBS_PRIVATES) AC_SUBST(PKG_REQUIRES_PRIVATES) AM_INIT_AUTOMAKE([1.11 foreign dist-xz -Wall -Werror subdir-objects]) AC_CONFIG_HEADERS([src/config.h:src/config.hin]) AM_PROG_AR AC_PROG_CC_STDC AM_PROG_CC_C_O AC_PROG_INSTALL AC_PROG_LIBTOOL AC_PROG_LN_S AC_PROG_MAKE_SET LT_INIT([win32-dll]) PKG_PROG_PKG_CONFIG dnl may be required for freetype and Xpm AC_PATH_X if test -n "$x_includes" && test "x$x_includes" != xNONE ; then CFLAGS="$CFLAGS -I$x_includes" fi if test -n "$x_libraries" && test "x$x_libraries" != xNONE ; then LDFLAGS="$LDFLAGS -L$x_libraries" fi dnl Keep in sync with cmake/modules/AC_HEADER_STDC.cmake. AC_HEADER_STDC AC_CHECK_HEADERS_ONCE(m4_flatten([ dirent.h inttypes.h stdint.h strings.h unistd.h sys/stat.h sys/types.h ])) dnl if we're configuring on a system w/out gettext, don't fall over m4_ifndef([AM_ICONV],[m4_define([AM_ICONV],[:])]) AM_ICONV # if test -n "$LIBICONV" ; then # LIBS="$LIBS $LIBICONV" # fi AC_CHECK_HEADERS(iconv.h, [AC_MSG_CHECKING(whether iconv.h defines iconv_t) AC_EGREP_HEADER([typedef.*iconv_t],iconv.h, [AC_MSG_RESULT(yes) AC_DEFINE(HAVE_ICONV_T_DEF, 1, [Define if defines iconv_t.])], AC_MSG_RESULT(no))]) # Checks for typedefs, structures, and compiler characteristics. #AC_TYPE_SIZE_T # Checks for library functions. #AC_FUNC_ERROR_AT_LINE #AC_FUNC_MALLOC #AC_FUNC_REALLOC #AC_CHECK_FUNCS([floor memset sqrt strchr strdup strtol]) dnl do we need to specify -lm explicitly? 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([--enable-gd-formats], [Enable support for the legacy/testing gd image formats])], [gd_enable_gd_formats=$enableval], [gd_enable_gd_formats=no]) 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 dnl $2 - GD feature name to track dnl $3 - lower case name for user dnl $4 - test for the feature dnl The test code should set gd_found_lib=yes to indicate success. m4_define([_GD_LIB_CHECK], [dnl dnl Export the flag for the user to leverage. No other logic here. AC_MSG_CHECKING([whether to support $3]) AC_ARG_WITH([$3], [AS_HELP_STRING([--with-$3@<:@=DIR@:>@], [Support $3 (optionally in DIR)])], [gd_with_lib=$withval], [gd_with_lib=auto]) AC_MSG_RESULT([$gd_with_lib]) gd_found_lib=no gd_require_pkg_name="" if test "$gd_with_lib" != "no"; then save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS dnl Set up default libs/cflags vars based on the path if user gave us one. gd_lib_ldflags= gd_lib_cflags= case $gd_with_lib in yes|no|auto|"") ;; *) if test -d "$gd_with_lib/lib"; then gd_lib_ldflags="-L$gd_with_lib/lib" AS_VAR_APPEND([LDFLAGS], [" $gd_lib_ldflags"]) fi if test -d "$gd_with_lib/include"; then gd_lib_cflags="-I$gd_with_lib/include" AS_VAR_APPEND([CPPFLAGS], [" $gd_lib_cflags"]) fi ;; esac dnl Run the test for this feature. $4 CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS if test "$gd_found_lib" = "yes"; then AC_DEFINE([HAVE_$1], [1], [Define if you have $3]) dnl Merge the flags into the main LIBS/CPPFLAGS. $1][_LIBS="$gd_lib_ldflags $][$1][_LIBS" $1][_CFLAGS="$gd_lib_cflags $][$1][_CFLAGS" AS_VAR_APPEND([LIBS], [" $][$1][_LIBS"]) AS_VAR_APPEND([CPPFLAGS], [" $][$1][_CFLAGS"]) if test -z "$gd_require_pkg_name"; then AS_VAR_APPEND([LIBS_PRIVATES], [" $][$1][_LIBS"]) else AS_VAR_APPEND([PKG_REQUIRES_PRIVATES], [" $gd_require_pkg_name"]) fi elif test "$gd_with_lib" = "yes"; then AC_MSG_ERROR([$3 requested but not found]) else AC_MSG_NOTICE([Disabling support for $3]) fi fi AM_CONDITIONAL([HAVE_$1], test "$gd_found_lib" = yes) gd_with_$1=$gd_found_lib ]) dnl Helper to avoid repeating m4_tolower() a lot. m4_define([GD_LIB_CHECK], [_GD_LIB_CHECK([$1], [$2], m4_tolower([$2]), [$3])])dnl dnl Helper macro for working with external libraries with pkg-config support. dnl GD_LIB_PKG_CHECK([SYM], [FEATURE], [pkg-config module], [...fallback test...]) dnl $1 - upper case symbol dnl $2 - GD feature name to track dnl $3 - pkg-config module to look for dnl $4 - fallback test for the feature m4_define([GD_LIB_PKG_CHECK], [dnl GD_LIB_CHECK([$1], [$2], [dnl PKG_CHECK_MODULES([$1], [$3], [gd_found_lib=yes gd_require_pkg_name="$3"], [$4]) ]) ]) dnl Check for zlib support. GD_LIB_PKG_CHECK([LIBZ], [ZLIB], [zlib], [dnl AC_CHECK_LIB([z], [deflate], [dnl AS_VAR_APPEND([LIBZ_LIBS], [" -lz"]) gd_found_lib=yes ]) ]) dnl Check for libpng support. GD_LIB_PKG_CHECK([LIBPNG], [PNG], [libpng], [ LIBPNG_CONFIG=$gd_with_lib/bin/libpng-config AC_MSG_CHECKING([for $LIBPNG_CONFIG script]) if test -e "$LIBPNG_CONFIG"; then LIBPNG_CFLAGS=`$LIBPNG_CONFIG --cflags` LIBPNG_LIBS=`$LIBPNG_CONFIG --ldflags` AC_MSG_RESULT(yes) gd_found_lib=yes else AC_MSG_RESULT(no) fi ]) dnl Check for FreeType support. dnl NB: "9.8.3" corresponds to freetype-2.1.10. GD_LIB_PKG_CHECK([LIBFREETYPE], [FREETYPE], [freetype2 >= 9.8.3], [ FREETYPE_CONFIG=$gd_with_lib/bin/freetype-config AC_MSG_CHECKING([for $FREETYPE_CONFIG script]) if test -e "$FREETYPE_CONFIG"; then LIBFREETYPE_CFLAGS=`$FREETYPE_CONFIG --cflags` LIBFREETYPE_LIBS=`$FREETYPE_CONFIG --libs` AC_MSG_RESULT(yes) gd_found_lib=yes else AC_MSG_RESULT(no) fi ]) if test "$gd_with_LIBFREETYPE" = "yes"; then AC_DEFINE([HAVE_FT2BUILD_H], [1], [Define if you have the ft2build.h header.]) fi dnl Check for Raqm support. GD_LIB_PKG_CHECK([LIBRAQM], [RAQM], [raqm], [ AC_CHECK_LIB([raqm], [raqm_create], [dnl AS_VAR_APPEND([LIBRAQM_LIBS], [" -lraqm -lfreetype"]) gd_found_lib=yes ]) ]) dnl Check for fontconfig support. GD_LIB_PKG_CHECK([LIBFONTCONFIG], [FONTCONFIG], [fontconfig], [ AC_CHECK_LIB([fontconfig], [FcInit], [dnl AS_VAR_APPEND([LIBFONTCONFIG_LIBS], [" -lfontconfig"]) gd_found_lib=yes ]) ]) dnl Check for jpeg support. GD_LIB_PKG_CHECK([LIBJPEG], [JPEG], [libjpeg], [ AC_CHECK_LIB([jpeg], [jpeg_set_defaults], [dnl AS_VAR_APPEND([LIBJPEG_LIBS], [" -ljpeg"]) gd_found_lib=yes ]) ]) dnl Check for libimagequant support. GD_LIB_CHECK([LIBIMAGEQUANT], [LIQ], [ AC_CHECK_HEADER([libimagequant.h], [ save_CFLAGS=$CFLAGS CFLAGS="$CFLAGS $OPENMP_CFLAGS" AC_CHECK_LIB([imagequant], [liq_attr_create_with_allocator], [dnl AS_VAR_APPEND([LIBIMAGEQUANT_LIBS], [" -limagequant $OPENMP_CFLAGS"]) gd_found_lib=yes ]) CFLAGS=$save_CFLAGS ]) ]) dnl Check for xpm support. GD_LIB_PKG_CHECK([LIBXPM], [XPM], [xpm], [ AC_CHECK_LIB([Xpm], [XpmReadFileToXpmImage], [dnl AS_VAR_APPEND([LIBXPM_LIBS], [" -lXpm"]) gd_found_lib=yes ]) ]) dnl Check for tiff support. GD_LIB_PKG_CHECK([LIBTIFF], [TIFF], [libtiff-4], [ AC_CHECK_LIB([tiff], [TIFFClientOpen], [dnl AS_VAR_APPEND([LIBTIFF_LIBS], [" -ltiff"]) gd_found_lib=yes ]) ]) dnl Check for webp support. GD_LIB_PKG_CHECK([LIBWEBP], [WEBP], [libwebp >= 0.2.0], [ AC_CHECK_LIB([webp], [WebPGetInfo], [dnl AS_VAR_APPEND([LIBWEBP_LIBS], [" -lwebp"]) gd_found_lib=yes ]) ]) dnl Check for heif support. GD_LIB_PKG_CHECK([LIBHEIF], [HEIF], [libheif >= 1.7.0], [ AC_CHECK_LIB([heif], [heif_get_version], [dnl AS_VAR_APPEND([LIBHEIF_LIBS], [" -lheif"]) ]) ]) dnl Check for avif support. GD_LIB_PKG_CHECK([LIBAVIF], [AVIF], [libavif >= 0.8.2], [ AC_CHECK_LIB([avif], [avifVersion], [dnl AS_VAR_APPEND([LIBAVIF_LIBS], [" -lavif"]) gd_found_lib=yes ]) ]) gl_VISIBILITY() CFLAGS="$CFLAGS $CFLAG_VISIBILITY" MINGW_AC_WIN32_NATIVE_HOST() if test "$mingw_cv_win32_host" = yes; then AC_DEFINE([BGDWIN32], [], [Define is you are building for Win32 API]) fi dnl Enable -Wall if possible. Do it after all other tests. AX_CFLAGS_WARN_ALL dnl Enable -Werror if possible. Do it after all other tests. AC_ARG_ENABLE([werror], [AS_HELP_STRING([--enable-werror], [treat compile warnings as errors])]) if test "$enable_werror" = "yes" || \ test "$GCC" = "yes" -a "$enable_werror" != "no" -a -d "$srcdir/.git"; then CFLAGS="-Werror $CFLAGS" CXXFLAGS="-Werror $CXXFLAGS" fi 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 Support for WebP library: $gd_with_LIBWEBP Support for HEIF library: $gd_with_LIBHEIF Support for AVIF library: $gd_with_LIBAVIF Support for TIFF library: $gd_with_LIBTIFF Support for Freetype 2.x library: $gd_with_LIBFREETYPE Support for Fontconfig library: $gd_with_LIBFONTCONFIG Support for Xpm library: $gd_with_LIBXPM Support for liq library: $gd_with_LIBIMAGEQUANT Support for complex text: $gd_with_LIBRAQM Support for pthreads: $ax_pthread_ok ]) AC_CONFIG_FILES([Makefile src/Makefile tests/Makefile config/Makefile config/gdlib.pc]) AC_OUTPUT