Blame configure.ac

Packit ed3af9
# Process this file with autoconf to produce a configure script.
Packit ed3af9
# Configure template for gd library
Packit ed3af9
Packit ed3af9
AC_PREREQ(2.64)
Packit ed3af9
Packit ed3af9
# We extract version numbers from src/versions.h
Packit ed3af9
define([gv],[perl config/getver.pl ]$1)
Packit ed3af9
Packit ed3af9
m4_define([gd_MAJOR],esyscmd(gv(MAJOR)))dnl
Packit ed3af9
m4_define([gd_MINOR],esyscmd(gv(MINOR)))dnl
Packit ed3af9
m4_define([gd_REVISION],esyscmd(gv(RELEASE)))dnl
Packit ed3af9
m4_define([gd_EXTRA],esyscmd(gv(EXTRA)))dnl
Packit ed3af9
m4_define([gd_PKG_VERSION],[gd_MAJOR.gd_MINOR.gd_REVISION]gd_EXTRA)]dnl
Packit ed3af9
Packit ed3af9
AC_INIT([GD], gd_PKG_VERSION, [https://github.com/libgd/libgd/issues], [libgd], [http://lib.gd])
Packit ed3af9
AC_CONFIG_SRCDIR([src/gd.c])
Packit ed3af9
AC_CONFIG_AUX_DIR(config)
Packit ed3af9
AC_CONFIG_MACRO_DIR([m4])
Packit ed3af9
AC_CANONICAL_HOST
Packit ed3af9
Packit ed3af9
# This is not used anywhere.  However, Makefile.netware searches
Packit ed3af9
# through configure for these definitions to find the version numbers.
Packit ed3af9
# (Assuming anyone still uses Netware, that should be changed to use
Packit ed3af9
# gd.h via getver.pl instead.)
Packit ed3af9
GDLIB_MAJOR=gd_MAJOR
Packit ed3af9
GDLIB_MINOR=gd_MINOR
Packit ed3af9
GDLIB_REVISION=gd_REVISION
Packit ed3af9
GDLIB_EXTRA=gd_EXTRA
Packit ed3af9
GDLIB_VERSION=gd_PKG_VERSION
Packit ed3af9
Packit ed3af9
AC_SUBST(GDLIB_MAJOR)
Packit ed3af9
AC_SUBST(GDLIB_MINOR)
Packit ed3af9
AC_SUBST(GDLIB_REVISION)
Packit ed3af9
AC_SUBST(GDLIB_EXTRA)
Packit ed3af9
AC_SUBST(GDLIB_VERSION)
Packit ed3af9
Packit ed3af9
# Dynamic library version information
Packit ed3af9
# See http://www.gnu.org/software/libtool/manual/libtool.html#Updating-version-info
Packit ed3af9
Packit ed3af9
GDLIB_LT_CURRENT=3
Packit ed3af9
dnl This is the version where the soname (current above) changes.  We use it
Packit ed3af9
dnl to reset the revision base back to zero.  It's a bit of a pain, but some
Packit ed3af9
dnl systems restrict the revision range below to [0..255] (like OS X).
Packit ed3af9
GDLIB_PREV_MAJOR=2
Packit ed3af9
GDLIB_PREV_MINOR=2
Packit ed3af9
dnl This isn't 100% correct, but it tends to be a close enough approximation
Packit ed3af9
dnl for how we manage the codebase.  It's rare to do a release that doesn't
Packit ed3af9
dnl modify the library since this project is centered around the library.
Packit ed3af9
GDLIB_LT_REVISION=$(( ((GDLIB_MAJOR - GDLIB_PREV_MAJOR) << 6) | ((GDLIB_MINOR - GDLIB_PREV_MINOR) << 3) | GDLIB_REVISION ))
Packit ed3af9
GDLIB_LT_AGE=0
Packit ed3af9
AC_SUBST(GDLIB_LT_CURRENT)
Packit ed3af9
AC_SUBST(GDLIB_LT_REVISION)
Packit ed3af9
AC_SUBST(GDLIB_LT_AGE)
Packit ed3af9
Packit ed3af9
#Expanded by tests later in this file. TBB 2.0.26
Packit ed3af9
#2.0.28: GIF is standard now. Doesn't depend on anything else,
Packit ed3af9
#so we always build it.
Packit ed3af9
FEATURES="GD_GIF GD_GIFANIM GD_OPENPOLYGON"
Packit ed3af9
AC_SUBST(FEATURES)
Packit ed3af9
Packit ed3af9
AM_INIT_AUTOMAKE([1.11 foreign dist-xz -Wall -Werror subdir-objects])
Packit ed3af9
AC_CONFIG_HEADERS([src/config.h:src/config.hin])
Packit ed3af9
Packit ed3af9
AM_PROG_AR
Packit ed3af9
AC_PROG_CC_STDC
Packit ed3af9
AM_PROG_CC_C_O
Packit ed3af9
AC_PROG_INSTALL
Packit ed3af9
AC_PROG_LIBTOOL
Packit ed3af9
AC_PROG_LN_S
Packit ed3af9
AC_PROG_MAKE_SET
Packit ed3af9
LT_INIT([win32-dll])
Packit ed3af9
PKG_PROG_PKG_CONFIG
Packit ed3af9
Packit ed3af9
dnl may be required for freetype and Xpm
Packit ed3af9
AC_PATH_X
Packit ed3af9
Packit ed3af9
if test -n "$x_includes" && test "x$x_includes" != xNONE ; then
Packit ed3af9
  CFLAGS="$CFLAGS -I$x_includes"
Packit ed3af9
fi
Packit ed3af9
if test -n "$x_libraries" && test "x$x_libraries" != xNONE ; then
Packit ed3af9
  LDFLAGS="$LDFLAGS -L$x_libraries"
Packit ed3af9
fi
Packit ed3af9
Packit ed3af9
dnl Keep in sync with cmake/modules/AC_HEADER_STDC.cmake.
Packit ed3af9
AC_HEADER_STDC
Packit ed3af9
AC_CHECK_HEADERS_ONCE(m4_flatten([
Packit ed3af9
	dirent.h
Packit ed3af9
	errno.h
Packit ed3af9
	inttypes.h
Packit ed3af9
	limits.h
Packit ed3af9
	stddef.h
Packit ed3af9
	stdint.h
Packit ed3af9
	stdlib.h
Packit ed3af9
	string.h
Packit ed3af9
	strings.h
Packit ed3af9
	unistd.h
Packit ed3af9
	sys/stat.h
Packit ed3af9
	sys/types.h
Packit ed3af9
]))
Packit ed3af9
Packit ed3af9
dnl if we're configuring on a system w/out gettext, don't fall over
Packit ed3af9
m4_ifndef([AM_ICONV],[m4_define([AM_ICONV],[:])])
Packit ed3af9
AM_ICONV
Packit ed3af9
# if test -n "$LIBICONV" ; then
Packit ed3af9
#   LIBS="$LIBS $LIBICONV"
Packit ed3af9
# fi
Packit ed3af9
Packit ed3af9
AC_CHECK_HEADERS(iconv.h,
Packit ed3af9
  [AC_MSG_CHECKING(whether iconv.h defines iconv_t)
Packit ed3af9
   AC_EGREP_HEADER([typedef.*iconv_t],iconv.h,
Packit ed3af9
     [AC_MSG_RESULT(yes)
Packit ed3af9
      AC_DEFINE(HAVE_ICONV_T_DEF, 1,
Packit ed3af9
                [Define if <iconv.h> defines iconv_t.])],
Packit ed3af9
      AC_MSG_RESULT(no))])
Packit ed3af9
Packit ed3af9
# Checks for typedefs, structures, and compiler characteristics.
Packit ed3af9
#AC_C_CONST
Packit ed3af9
#AC_TYPE_SIZE_T
Packit ed3af9
Packit ed3af9
# Checks for library functions.
Packit ed3af9
#AC_FUNC_ERROR_AT_LINE
Packit ed3af9
#AC_FUNC_MALLOC
Packit ed3af9
#AC_FUNC_REALLOC
Packit ed3af9
#AC_FUNC_VPRINTF
Packit ed3af9
#AC_CHECK_FUNCS([floor memset sqrt strchr strdup strtol])
Packit ed3af9
Packit ed3af9
dnl do we need to specify -lm explicitly?
Packit ed3af9
AC_CHECK_FUNC(sin,,[AC_CHECK_LIB(m,sin)])
Packit ed3af9
Packit ed3af9
AX_PTHREAD()
Packit ed3af9
AX_OPENMP()
Packit ed3af9
Packit ed3af9
dnl Helper macro for working with external libraries.
Packit ed3af9
dnl GD_LIB_CHECK([SYM], [FEATURE], [name], [...test...])
Packit ed3af9
dnl $1 - upper case symbol
Packit ed3af9
dnl $2 - GD feature name to track
Packit ed3af9
dnl $3 - lower case name for user
Packit ed3af9
dnl $4 - test for the feature
Packit ed3af9
dnl The test code should set gd_found_lib=yes to indicate success.
Packit ed3af9
m4_define([GD_LIB_CHECK], [dnl
Packit ed3af9
  dnl Export the flag for the user to leverage.  No other logic here.
Packit ed3af9
  AC_MSG_CHECKING([whether to support $3])
Packit ed3af9
  AC_ARG_WITH([$3],
Packit ed3af9
    [AS_HELP_STRING([--with-$3@<:@=DIR@:>@], [Support $3 (optionally in DIR)])],
Packit ed3af9
    [gd_with_lib=$withval],
Packit ed3af9
    [gd_with_lib=auto])
Packit ed3af9
  AC_MSG_RESULT([$gd_with_lib])
Packit ed3af9
Packit ed3af9
  gd_found_lib=no
Packit ed3af9
  if test "$gd_with_lib" != "no"; then
Packit ed3af9
    save_CPPFLAGS=$CPPFLAGS
Packit ed3af9
    save_LDFLAGS=$LDFLAGS
Packit ed3af9
    dnl Set up default libs/cflags vars based on the path if user gave us one.
Packit ed3af9
    gd_lib_ldflags=
Packit ed3af9
    gd_lib_cflags=
Packit ed3af9
    case $gd_with_lib in
Packit ed3af9
    yes|no|auto|"") ;;
Packit ed3af9
    *)
Packit ed3af9
      if test -d "$gd_with_lib/lib"; then
Packit ed3af9
        gd_lib_ldflags="-L$gd_with_lib/lib"
Packit ed3af9
        AS_VAR_APPEND([LDFLAGS], [" $gd_lib_ldflags"])
Packit ed3af9
      fi
Packit ed3af9
      if test -d "$gd_with_lib/include"; then
Packit ed3af9
        gd_lib_cflags="-I$gd_with_lib/include"
Packit ed3af9
        AS_VAR_APPEND([CPPFLAGS], [" $gd_lib_cflags"])
Packit ed3af9
      fi
Packit ed3af9
      ;;
Packit ed3af9
    esac
Packit ed3af9
    dnl Run the test for this feature.
Packit ed3af9
    $4
Packit ed3af9
    CPPFLAGS=$save_CPPFLAGS
Packit ed3af9
    LDFLAGS=$save_LDFLAGS
Packit ed3af9
Packit ed3af9
    if test "$gd_found_lib" = "yes"; then
Packit ed3af9
      AC_DEFINE([HAVE_$1], [1], [Define if you have $3])
Packit ed3af9
      AS_VAR_APPEND([FEATURES], [" GD_$2"])
Packit ed3af9
      dnl Merge the flags into the main LIBS/CPPFLAGS.
Packit ed3af9
      $1][_LIBS="$gd_lib_ldflags $][$1][_LIBS"
Packit ed3af9
      $1][_CFLAGS="$gd_lib_cflags $][$1][_CFLAGS"
Packit ed3af9
      AS_VAR_APPEND([LIBS], [" $][$1][_LIBS"])
Packit ed3af9
      AS_VAR_APPEND([CPPFLAGS], [" $][$1][_CFLAGS"])
Packit ed3af9
    elif test "$gd_with_lib" = "yes"; then
Packit ed3af9
      AC_MSG_ERROR([$3 requested but not found])
Packit ed3af9
    else
Packit ed3af9
      AC_MSG_NOTICE([Disabling support for $3])
Packit ed3af9
    fi
Packit ed3af9
  fi
Packit ed3af9
  AM_CONDITIONAL([HAVE_$1], test "$gd_found_lib" = yes)
Packit ed3af9
  gd_with_$1=$gd_found_lib
Packit ed3af9
])
Packit ed3af9
Packit ed3af9
dnl Helper macro for working with external libraries with pkg-config support.
Packit ed3af9
dnl GD_LIB_PKG_CHECK([SYM], [FEATURE], [name], [pkg-config module], [...fallback test...])
Packit ed3af9
dnl $1 - upper case symbol
Packit ed3af9
dnl $2 - GD feature name to track
Packit ed3af9
dnl $3 - lower case name for user
Packit ed3af9
dnl $4 - pkg-config module to look for
Packit ed3af9
dnl $5 - fallback test for the feature
Packit ed3af9
m4_define([GD_LIB_PKG_CHECK], [dnl
Packit ed3af9
  GD_LIB_CHECK([$1], [$2], [$3], [dnl
Packit ed3af9
    PKG_CHECK_MODULES([$1], [$4], [gd_found_lib=yes], [$5])
Packit ed3af9
  ])
Packit ed3af9
])
Packit ed3af9
Packit ed3af9
dnl Check for zlib support.
Packit ed3af9
GD_LIB_PKG_CHECK([LIBZ], [ZLIB], [zlib], [zlib], [dnl
Packit ed3af9
  AC_CHECK_LIB([z], [deflate], [dnl
Packit ed3af9
    AS_VAR_APPEND([LIBZ_LIBS], [" -lz"])
Packit ed3af9
    gd_found_lib=yes
Packit ed3af9
  ])
Packit ed3af9
])
Packit ed3af9
Packit ed3af9
dnl Check for libpng support.
Packit ed3af9
GD_LIB_PKG_CHECK([LIBPNG], [PNG], [png], [libpng], [
Packit ed3af9
  LIBPNG_CONFIG=$gd_with_lib/bin/libpng-config
Packit ed3af9
  if test -e "$LIBPNG_CONFIG"; then
Packit ed3af9
    LIBPNG_CFLAGS=`$LIBPNG_CONFIG --cflags`
Packit ed3af9
    LIBPNG_LIBS=`$LIBPNG_CONFIG --ldflags`
Packit ed3af9
    gd_found_lib=yes
Packit ed3af9
  fi
Packit ed3af9
])
Packit ed3af9
Packit ed3af9
dnl Check for FreeType support.
Packit ed3af9
GD_LIB_PKG_CHECK([LIBFREETYPE], [FREETYPE], [freetype], [freetype2 >= 9.8.3], [
Packit ed3af9
  FREETYPE_CONFIG=$gd_with_lib/bin/freetype-config
Packit ed3af9
  if test -e "$FREETYPE_CONFIG"; then
Packit ed3af9
    LIBFREETYPE_CFLAGS=`$FREETYPE_CONFIG --cflags`
Packit ed3af9
    LIBFREETYPE_LIBS=`$FREETYPE_CONFIG --libs`
Packit ed3af9
    gd_found_lib=yes
Packit ed3af9
  fi
Packit ed3af9
])
Packit ed3af9
if test "$gd_with_LIBFREETYPE" = "yes"; then
Packit ed3af9
  AC_DEFINE([HAVE_FT2BUILD_H], [1], [Define if you have the ft2build.h header.])
Packit ed3af9
fi
Packit ed3af9
Packit ed3af9
dnl Check for fontconfig support.
Packit ed3af9
GD_LIB_PKG_CHECK([LIBFONTCONFIG], [FONTCONFIG], [fontconfig], [fontconfig], [
Packit ed3af9
  AC_CHECK_LIB([fontconfig], [FcInit], [dnl
Packit ed3af9
    AS_VAR_APPEND([LIBFONTCONFIG_LIBS], [" -lfontconfig"])
Packit ed3af9
    gd_found_lib=yes
Packit ed3af9
  ])
Packit ed3af9
])
Packit ed3af9
Packit ed3af9
dnl Check for jpeg support.
Packit ed3af9
GD_LIB_CHECK([LIBJPEG], [JPEG], [jpeg], [
Packit ed3af9
  AC_CHECK_LIB([jpeg], [jpeg_set_defaults], [dnl
Packit ed3af9
    AS_VAR_APPEND([LIBJPEG_LIBS], [" -ljpeg"])
Packit ed3af9
    gd_found_lib=yes
Packit ed3af9
  ])
Packit ed3af9
])
Packit ed3af9
Packit ed3af9
dnl Check for libimagequant support.
Packit ed3af9
GD_LIB_CHECK([LIBIMAGEQUANT], [LIQ], [liq], [
Packit ed3af9
  AC_CHECK_HEADER([libimagequant.h], [
Packit ed3af9
    save_CFLAGS=$CFLAGS
Packit ed3af9
    CFLAGS="$CFLAGS $OPENMP_CFLAGS"
Packit ed3af9
    AC_CHECK_LIB([imagequant], [liq_attr_create_with_allocator], [dnl
Packit ed3af9
      AS_VAR_APPEND([LIBIMAGEQUANT_LIBS], [" -limagequant $OPENMP_CFLAGS"])
Packit ed3af9
      gd_found_lib=yes
Packit ed3af9
    ])
Packit ed3af9
    CFLAGS=$save_CFLAGS
Packit ed3af9
  ])
Packit ed3af9
])
Packit ed3af9
Packit ed3af9
dnl Check for xpm support.
Packit ed3af9
GD_LIB_PKG_CHECK([LIBXPM], [XPM], [xpm], [xpm], [
Packit ed3af9
  AC_CHECK_LIB([Xpm], [XpmReadFileToXpmImage], [dnl
Packit ed3af9
    AS_VAR_APPEND([LIBXPM_LIBS], [" -lXpm"])
Packit ed3af9
    gd_found_lib=yes
Packit ed3af9
  ])
Packit ed3af9
])
Packit ed3af9
Packit ed3af9
dnl Check for tiff support.
Packit ed3af9
GD_LIB_PKG_CHECK([LIBTIFF], [TIFF], [tiff], [libtiff-4], [
Packit ed3af9
  AC_CHECK_LIB([tiff], [TIFFClientOpen], [dnl
Packit ed3af9
    AS_VAR_APPEND([LIBTIFF_LIBS], [" -ltiff"])
Packit ed3af9
    gd_found_lib=yes
Packit ed3af9
  ])
Packit ed3af9
])
Packit ed3af9
Packit ed3af9
dnl Check for webp support.
Packit ed3af9
GD_LIB_CHECK([LIBWEBP], [WEBP], [webp], [
Packit ed3af9
  AC_CHECK_LIB([webp], [WebPGetInfo], [dnl
Packit ed3af9
    AS_VAR_APPEND([LIBWEBP_LIBS], [" -lwebp"])
Packit ed3af9
    gd_found_lib=yes
Packit ed3af9
  ])
Packit ed3af9
])
Packit ed3af9
Packit ed3af9
gl_VISIBILITY()
Packit ed3af9
CFLAGS="$CFLAGS $CFLAG_VISIBILITY"
Packit ed3af9
Packit ed3af9
MINGW_AC_WIN32_NATIVE_HOST()
Packit ed3af9
Packit ed3af9
if test "$mingw_cv_win32_host" = yes; then
Packit ed3af9
AC_DEFINE([BGDWIN32], [], [Define is you are building for Win32 API])
Packit ed3af9
fi
Packit ed3af9
Packit ed3af9
dnl Enable -Wall if possible.  Do it after all other tests.
Packit ed3af9
AX_CFLAGS_WARN_ALL
Packit ed3af9
Packit ed3af9
dnl Enable -Werror if possible.  Do it after all other tests.
Packit ed3af9
AC_ARG_ENABLE([werror], [AS_HELP_STRING([--enable-werror], [treat compile warnings as errors])])
Packit ed3af9
if test "$enable_werror" = "yes" || \
Packit ed3af9
   test "$GCC" = "yes" -a "$enable_werror" != "no" -a -d "$srcdir/.git"; then
Packit ed3af9
  CFLAGS="-Werror $CFLAGS"
Packit ed3af9
  CXXFLAGS="-Werror $CXXFLAGS"
Packit ed3af9
fi
Packit ed3af9
Packit ed3af9
dnl report configuration
Packit ed3af9
AC_MSG_RESULT([
Packit ed3af9
** Configuration summary for $PACKAGE $VERSION:
Packit ed3af9
Packit ed3af9
   Support for Zlib:                 $gd_with_LIBZ
Packit ed3af9
   Support for PNG library:          $gd_with_LIBPNG
Packit ed3af9
   Support for JPEG library:         $gd_with_LIBJPEG
Packit ed3af9
   Support for WebP library:         $gd_with_LIBWEBP
Packit ed3af9
   Support for TIFF library:         $gd_with_LIBTIFF
Packit ed3af9
   Support for Freetype 2.x library: $gd_with_LIBFREETYPE
Packit ed3af9
   Support for Fontconfig library:   $gd_with_LIBFONTCONFIG
Packit ed3af9
   Support for Xpm library:          $gd_with_LIBXPM
Packit ed3af9
   Support for liq library:          $gd_with_LIBIMAGEQUANT
Packit ed3af9
   Support for pthreads:             $ax_pthread_ok
Packit ed3af9
])
Packit ed3af9
Packit ed3af9
AC_CONFIG_FILES([Makefile
Packit ed3af9
                src/Makefile
Packit ed3af9
                tests/Makefile
Packit ed3af9
                config/Makefile
Packit ed3af9
                config/gdlib-config
Packit ed3af9
                config/gdlib.pc])
Packit ed3af9
Packit ed3af9
AC_OUTPUT