summaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2015-11-23 19:06:46 -0500
committerMike Frysinger <vapier@gentoo.org>2015-11-23 19:06:46 -0500
commita4f5d5d64e4000d97a71eb708e0eab1020184557 (patch)
tree8bbf44e1c72f5c26baf49a01cbe58408c8086a9a /configure.ac
parenta9205e50c3f45336164b67615e537fa856e028a9 (diff)
downloadlibgd-a4f5d5d64e4000d97a71eb708e0eab1020184557.tar.gz
configure: unify library tests
The various code paths were inconsistent in how they handled user flags. Create common macros and rebase all the library checks on top of those so we know they all stay in sync.
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac409
1 files changed, 132 insertions, 277 deletions
diff --git a/configure.ac b/configure.ac
index 0e7e151..0c473a8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -105,272 +105,148 @@ AC_CHECK_HEADERS(iconv.h,
dnl do we need to specify -lm explicitly?
AC_CHECK_FUNC(sin,,[AC_CHECK_LIB(m,sin)])
-dnl zlib is required
-AC_ARG_WITH([zlib],
- [AS_HELP_STRING([--with-zlib@<:@=DIR@:>@], [where to find the zlib library])])
-if test "$with_zlib" != no; then
- AC_CHECK_LIB(z,deflate,
- [LIBS="-lz $LIBS"
- AC_DEFINE(HAVE_LIBZ, 1, [Define if you have zlib.])
- with_zlib=yes],
- [AC_MSG_WARN([zlib is required - see http://www.gzip.org/zlib/])
- with_zlib=no])
-fi
-AM_CONDITIONAL([HAVE_LIBZ], test "$with_zlib" = yes)
-
-dnl libpng is required
-AC_ARG_WITH([png],
- [AS_HELP_STRING([--with-png@<:@=DIR@:>@], [where to find the png library])])
-
-case $with_png in
-no) ;;
-yes|"")
- PKG_CHECK_MODULES([LIBPNG], libpng, [
- with_png=yes
- ],[
- if test "$with_png" = yes; then
- AC_MSG_ERROR([png support requested, but not found - see http://www.libpng.org/pub/png/])
+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
+ 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])
+ AS_VAR_APPEND([FEATURES], [" GD_$2"])
+ 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"])
+ elif test "$gd_with_lib" = "yes"; then
+ AC_MSG_ERROR([$3 requested but not found])
+ else
+ AC_MSG_NOTICE([Disabling support for $3])
fi
- with_png=no
+ fi
+ AM_CONDITIONAL([HAVE_$1], test "$gd_found_lib" = yes)
+ gd_with_$1=$gd_found_lib
+])
+
+dnl Helper macro for working with external libraries with pkg-config support.
+dnl GD_LIB_PKG_CHECK([SYM], [FEATURE], [name], [pkg-config module], [...fallback test...])
+dnl $1 - upper case symbol
+dnl $2 - GD feature name to track
+dnl $3 - lower case name for user
+dnl $4 - pkg-config module to look for
+dnl $5 - fallback test for the feature
+m4_define([GD_LIB_PKG_CHECK], [dnl
+ GD_LIB_CHECK([$1], [$2], [$3], [dnl
+ PKG_CHECK_MODULES([$1], [$4], [gd_found_lib=yes], [$5])
])
- ;;
-*)
- AC_MSG_CHECKING([libpng-config script])
- LIBPNG_CONFIG=$with_png/bin/libpng-config
+])
+
+dnl Check for zlib support.
+GD_LIB_PKG_CHECK([LIBZ], [ZLIB], [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], [png], [libpng], [
+ LIBPNG_CONFIG=$gd_with_lib/bin/libpng-config
if test -e "$LIBPNG_CONFIG"; then
LIBPNG_CFLAGS=`$LIBPNG_CONFIG --cflags`
LIBPNG_LIBS=`$LIBPNG_CONFIG --ldflags`
- with_png=yes
- AC_MSG_RESULT([$LIBPNG_CONFIG, cflags: $LIBPNG_CFLAGS, libs: $LIBPNG_LIBS])
- else
- AC_MSG_ERROR([png support requested, but not found at requested location: $LIBPNG_CONFIG])
+ gd_found_lib=yes
fi
- ;;
-esac
-if test "$with_png" != no; then
- CPPFLAGS="$CPPFLAGS $LIBPNG_CFLAGS"
- LIBS="$LIBS $LIBPNG_LIBS"
- FEATURES="GD_PNG $FEATURES"
- AC_DEFINE(HAVE_LIBPNG, 1, [Define if you have the png library.])
-fi
-AM_CONDITIONAL([HAVE_LIBPNG], test "$with_png" = yes)
-
-dnl FreeType configure tests snarfed from libwmf ..
-AC_ARG_WITH([freetype],
- [AS_HELP_STRING([--with-freetype@<:@=DIR@:>@], [where to find the freetype 2.x library])])
-
-case $with_freetype in
-no) ;;
-yes|"")
- dnl All freetype2 versions are numerically much larger than the actual
- dnl version number you see in the tarball. This is because the number
- dnl corresponds to the shared library version rather than the release.
- dnl 9.8.3 is the version that freetype2-2.1.10 used.
- PKG_CHECK_MODULES([LIBFREETYPE], [freetype2 >= 9.8.3], [
- with_freetype=yes
- ],[
- if test "$with_freetype" = yes; then
- AC_MSG_ERROR([freetype support requested, but not found])
- fi
- with_freetype=no
- ])
- ;;
-*)
- FREETYPE_CONFIG=$with_freetype/bin/freetype-config
+])
+
+dnl Check for FreeType support.
+GD_LIB_PKG_CHECK([LIBFREETYPE], [FREETYPE], [freetype], [freetype2 >= 9.8.3], [
+ FREETYPE_CONFIG=$gd_with_lib/bin/freetype-config
if test -e "$FREETYPE_CONFIG"; then
LIBFREETYPE_CFLAGS=`$FREETYPE_CONFIG --cflags`
LIBFREETYPE_LIBS=`$FREETYPE_CONFIG --libs`
- with_freetype=yes
- else
- AC_MSG_ERROR([freetype support requested, but not found: $FREETYPE_CONFIG])
+ gd_found_lib=yes
fi
- ;;
-esac
-if test "$with_freetype" = yes; then
- CPPFLAGS="$CPPFLAGS $LIBFREETYPE_CFLAGS"
- LIBS="$LIBS $LIBFREETYPE_LIBS"
- FEATURES="GD_FREETYPE $FEATURES"
- AC_DEFINE(HAVE_LIBFREETYPE, 1, [Define if you have the freetype library.])
- AC_DEFINE(HAVE_FT2BUILD_H, 1, [Define if you have the ft2build.h header.])
+])
+if test "$gd_with_LIBFREETYPE" = "yes"; then
+ AC_DEFINE([HAVE_FT2BUILD_H], [1], [Define if you have the ft2build.h header.])
fi
-AM_CONDITIONAL([HAVE_LIBFREETYPE], test "$with_freetype" = yes)
-
-dnl check for libfontconfig by default
-AC_ARG_WITH([fontconfig],
- [AS_HELP_STRING([--with-fontconfig@<:@=DIR@:>@], [where to find the fontconfig library])])
-
-case $with_fontconfig in
-no) ;;
-yes|"")
- PKG_CHECK_MODULES([LIBFONTCONFIG], fontconfig, [with_fontconfig=yes],
- [
- if test "$with_fontconfig" = yes; then
- AC_MSG_ERROR([fontconfig support requested, but not found])
- fi
- with_fontconfig=no
+
+dnl Check for fontconfig support.
+GD_LIB_PKG_CHECK([LIBFONTCONFIG], [FONTCONFIG], [fontconfig], [fontconfig], [
+ AC_CHECK_LIB([fontconfig], [FcInit], [dnl
+ AS_VAR_APPEND([LIBFONTCONFIG_LIBS], [" -lfontconfig"])
+ gd_found_lib=yes
])
- ;;
-*)
- save_LIBS="$LIBS"
- save_CPPFLAGS="$CPPFLAGS"
-
- if test -d "$with_fontconfig"; then
- LIBFONTCONFIG_CFLAGS="-I$with_fontconfig/include"
- LIBFONTCONFIG_LIBS="-L$with_fontconfig/lib"
- fi
+])
- CPPFLAGS="$CPPFLAGS $LIBFONTCONFIG_CFLAGS"
- LIBS="$LIBS $LIBFONTCONFIG_LIBS"
-
- AC_CHECK_LIB(fontconfig, FcInit,
- [
- LIBFONTCONFIG_LIBS="$LIBFONTCONFIG_LIBS -lfontconfig"
- with_fontconfig=yes
- ],[
- if test "$with_fontconfig" != ""; then
- AC_MSG_ERROR([fontconfig support requested, but not found])
- else
- with_fontconfig=no
- fi
- ])
-
- CPPFLAGS="$save_CPPFLAGS"
- LIBS="$save_LIBS"
- ;;
-esac
-
-if test "$with_fontconfig" != no; then
- CPPFLAGS="$CPPFLAGS $LIBFONTCONFIG_CFLAGS"
- LIBS="$LIBS $LIBFONTCONFIG_LIBS -lfontconfig"
- FEATURES="GD_FONTCONFIG $FEATURES"
- AC_DEFINE(HAVE_LIBFONTCONFIG, 1, [ Define if you have the fontconfig library. ])
-fi
-AM_CONDITIONAL([HAVE_LIBFONTCONFIG], test "$with_fontconfig" = yes)
-
-dnl check for libjpeg by default
-AC_ARG_WITH([jpeg],
- [AS_HELP_STRING([--with-jpeg@<:@=DIR@:>@], [where to find the jpeg library])],
- [if test -d "$withval"; then
- LDFLAGS="$LDFLAGS -L$withval/lib"
- CFLAGS="$CFLAGS -I$withval/include"
- fi],
- withval=yes)
-
-if test "$withval" != no; then
- AC_CHECK_LIB(jpeg,jpeg_set_defaults,
- [LIBS="-ljpeg $LIBS"
- FEATURES="GD_JPEG $FEATURES"
- AC_DEFINE(HAVE_LIBJPEG, 1, [ Define if you have the jpeg library. ])])
-else
- ac_cv_lib_jpeg_jpeg_set_defaults=no
-fi
-AM_CONDITIONAL([HAVE_LIBJPEG], test "$ac_cv_lib_jpeg_jpeg_set_defaults" = yes)
-
-dnl check for libXpm by default
-AC_ARG_WITH([xpm],
- [AS_HELP_STRING([--with-xpm@<:@=DIR@:>@], [where to find the xpm library])])
-
-case $with_xpm in
-no) ;;
-yes|"")
- PKG_CHECK_MODULES([LIBXPM], xpm, [with_xpm=yes],
- [
- if test "$with_xpm" = yes; then
- AC_MSG_ERROR([Xpm support requested, but not found])
- fi
- with_xpm=no
+dnl Check for jpeg support.
+GD_LIB_CHECK([LIBJPEG], [JPEG], [jpeg], [
+ AC_CHECK_LIB([jpeg], [jpeg_set_defaults], [dnl
+ AS_VAR_APPEND([LIBJPEG_LIBS], [" -ljpeg"])
+ gd_found_lib=yes
])
- ;;
-*)
- save_LIBS="$LIBS"
- save_CPPFLAGS="$CPPFLAGS"
-
- if test -d "$with_xpm"; then
- LIBXPM_CFLAGS="-I$with_xpm/include"
- LIBXPM_LIBS="-L$with_xpm/lib -lXpm"
- fi
+])
- CPPFLAGS="$CPPFLAGS $LIBXPM_CFLAGS"
- LIBS="$LIBS $LIBXPM_LIBS"
+dnl Check for xpm support.
+GD_LIB_PKG_CHECK([LIBXPM], [XPM], [xpm], [xpm], [
+ AC_CHECK_LIB([Xpm], [XpmReadFileToXpmImage], [dnl
+ AS_VAR_APPEND([LIBXPM_LIBS], [" -lXpm"])
+ gd_found_lib=yes
+ ])
+])
- AC_CHECK_LIB(Xpm,XpmReadFileToXpmImage,
- [
- if test -z "$LIBXPM_LIBS"; then
- LIBXPM_LIBS="-lXpm"
- fi
- with_xpm=yes
- ],[
- if test "$with_xpm" != ""; then
- AC_MSG_ERROR([Xpm support requested, but not found])
- else
- with_xpm=no
- fi
- ])
-
- CPPFLAGS="$save_CPPFLAGS"
- LIBS="$save_LIBS"
- ;;
-esac
-
-if test "$with_xpm" != no; then
- CPPFLAGS="$CPPFLAGS $LIBXPM_CFLAGS"
- LIBS="$LIBS $LIBXPM_LIBS"
- FEATURES="GD_XPM $FEATURES"
- AC_DEFINE(HAVE_LIBXPM, 1, [ Define if you have the Xpm library. ])
-fi
-AM_CONDITIONAL([HAVE_LIBXPM], test "$with_xpm" = yes)
-
-dnl check for libtiff by default
-AC_ARG_WITH([tiff],
- [AS_HELP_STRING([--with-tiff@<:@=DIR@:>@], [where to find the tiff library])])
-
-case $with_tiff in
-no) ;;
-yes|"")
- PKG_CHECK_MODULES([LIBTIFF], libtiff-4, [with_tiff=yes],
- [
- if test "$with_tiff" = yes; then
- AC_MSG_ERROR([TIFF support requested, but not found])
- fi
- with_tiff=no
+dnl Check for tiff support.
+GD_LIB_PKG_CHECK([LIBTIFF], [TIFF], [tiff], [libtiff-4], [
+ AC_CHECK_LIB([tiff], [TIFFClientOpen], [dnl
+ AS_VAR_APPEND([LIBTIFF_LIBS], [" -ltiff"])
+ gd_found_lib=yes
])
- ;;
-*)
- save_CPPFLAGS="$CPPFLAGS"
- save_LIBS="$LIBS"
-
- if test -d "$with_tiff"; then
- LIBTIFF_CFLAGS="-I$with_tiff/include"
- LIBTIFF_LIBS="-L$with_tiff/lib"
- fi
+])
- CPPFLAGS="$CPPFLAGS $LIBTIFF_CFLAGS"
- LIBS="$LIBS $LIBTIFF_LIBS"
-
- AC_CHECK_LIB(tiff,TIFFClientOpen,
- [
- LIBTIFF_LIBS="$LIBTIFF_LIBS -ltiff"
- with_tiff=yes
- ],[
- if test "$with_tiff" != ""; then
- AC_MSG_ERROR([tiff support requested, but not found])
- else
- with_tiff=no
- fi
- ])
-
- CPPFLAGS="$save_CPPFLAGS"
- LIBS="$save_LIBS"
- ;;
-esac
-
-if test "$with_tiff" != no; then
- CPPFLAGS="$CPPFLAGS $LIBTIFF_CFLAGS"
- LIBS="$LIBS $LIBTIFF_LIBS"
- FEATURES="GD_TIFF $FEATURES"
- AC_DEFINE(HAVE_LIBTIFF, 1, [ Define if you have the Tiff library. ])
-fi
-AM_CONDITIONAL([HAVE_LIBTIFF], test "$with_tiff" = yes)
+dnl Check for webp support.
+GD_LIB_CHECK([LIBWEBP], [WEBP], [webp], [
+ AC_CHECK_LIB([webp], [WebPGetInfo], [dnl
+ AS_VAR_APPEND([LIBWEBP_LIBS], [" -lwebp"])
+ gd_found_lib=yes
+ ])
+])
gl_VISIBILITY()
CFLAGS="$CFLAGS $CFLAG_VISIBILITY"
@@ -383,39 +259,18 @@ if test "$mingw_cv_win32_host" = yes; then
AC_DEFINE([BGDWIN32], [], [Define is you are building for Win32 API])
fi
-
-dnl check for libwebp by default
-AC_ARG_WITH([webp],
- [AS_HELP_STRING([--with-webp@<:@=DIR@:>@], [where to find the webp library])],
- [if test -d "$withval"; then
- LDFLAGS="$LDFLAGS -L$withval/lib"
- CFLAGS="$CFLAGS -I$withval/include"
- fi],
- withval=yes)
-
-if test "$withval" != no; then
- AC_CHECK_LIB(webp,WebPGetInfo,
- [LIBS="-lwebp $LIBS"
- FEATURES="GD_WEBP $FEATURES"
- AC_DEFINE(HAVE_LIBWEBP, 1, [ Define if you have the webp library. ])])
- with_webp=yes
-else
- with_webp=no
-fi
-AM_CONDITIONAL([HAVE_LIBWEBP], test "$with_webp" = yes)
-
dnl report configuration
AC_MSG_RESULT([
** Configuration summary for $PACKAGE $VERSION:
- Support for Zlib: $with_zlib
- Support for PNG library: $with_png
- Support for JPEG library: $ac_cv_lib_jpeg_jpeg_set_defaults
- Support for WebP library: $with_webp
- Support for TIFF library: $with_tiff
- Support for Freetype 2.x library: $with_freetype
- Support for Fontconfig library: $with_fontconfig
- Support for Xpm library: $with_xpm
+ 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 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 pthreads: $ax_pthread_ok
])