######################################################### # Locate ImageMagick configuration program # ImageMagick has the config program: # bin/Wand-config # bin/MagickWand-config # # Sets # IM_WAND_BINARY # IM_IMAGEMAGICK_PREFIX # IM_IMAGEMAGICK_VERSION # IM_IMAGEMAGICK_VERSION_MASK # IM_USE_PKG_CONFIG # # Usage: # IM_FIND_IMAGEMAGICK (MINIMUM_VERSION, EXTRA_SEARCH_PREFIX) # # Note: # IM_PREFIX - the directory reported by `MagickWand-config --prefix` # IM_IMAGEMAGICK_PREFIX - the user specified location to use # ######################################################### dnl dnl PHP_EVAL_LIBLINE(libline, SHARED-LIBADD) dnl dnl Use this macro, if you need to add libraries and or library search dnl paths to the PHP build system which are only given in compiler dnl notation. dnl AC_DEFUN([IM_EVAL_LIBLINE_DEFER],[ for ac_i in $1; do case $ac_i in -pthread[)] if test "$ext_shared" = "yes"; then $2="[$]$2 -pthread" else PHP_RUN_ONCE(EXTRA_LDFLAGS, [$ac_i], [EXTRA_LDFLAGS="$EXTRA_LDFLAGS $ac_i"]) fi ;; -l*[)] ac_ii=`echo $ac_i|cut -c 3-` PHP_ADD_LIBRARY_DEFER($ac_ii,1,$2) ;; -L*[)] ac_ii=`echo $ac_i|cut -c 3-` PHP_ADD_LIBPATH_DEFER($ac_ii,$2) ;; esac done ]) AC_DEFUN([IM_FIND_IMAGEMAGICK],[ # # Variables passed in # IM_MINIMUM_VERSION=$1 IM_EXTRA_SEARCH_PREFIX=$2 AC_PATH_PROG(PKG_CONFIG, pkg-config, no) if test "x$PKG_CONFIG" = "xno"; then AC_MSG_RESULT([pkg-config not found]) AC_MSG_ERROR([Please reinstall the pkg-config distribution]) fi if test -z "$AWK"; then AC_MSG_ERROR([awk not found]) fi AC_MSG_CHECKING(ImageMagick MagickWand API configuration program) if test "$IM_EXTRA_SEARCH_PREFIX" != "yes"; then for i in "$IM_EXTRA_SEARCH_PREFIX" /usr/local /usr /usr/sbin /opt /opt/local /opt/homebrew; do AC_MSG_CHECKING([Testing ${i}/bin/MagickWand-config]) if test -r "${i}/bin/MagickWand-config"; then IM_WAND_BINARY="${i}/bin/MagickWand-config" IM_IMAGEMAGICK_PREFIX=$i AC_MSG_RESULT([It exists]) break fi AC_MSG_RESULT([Doesn't exist]) AC_MSG_CHECKING([Testing ${i}/bin/Wand-config]) if test -r "${i}/bin/Wand-config"; then IM_WAND_BINARY="${i}/bin/Wand-config" IM_IMAGEMAGICK_PREFIX=$i AC_MSG_RESULT([It exists]) break fi AC_MSG_RESULT([Doesn't exist]) done else for i in /usr/local /usr /usr/sbin /opt /opt/local /opt/homebrew; do AC_MSG_CHECKING([Testing ${i}/bin/MagickWand-config]) if test -r "${i}/bin/MagickWand-config"; then IM_WAND_BINARY="${i}/bin/MagickWand-config" IM_IMAGEMAGICK_PREFIX=$i AC_MSG_RESULT([It exists]) break fi if test -r "${i}/bin/Wand-config"; then IM_WAND_BINARY="${i}/bin/Wand-config" IM_IMAGEMAGICK_PREFIX=$i AC_MSG_RESULT([It exists]) break fi AC_MSG_RESULT([Doesn't exist]) done fi IM_USE_PKG_CONFIG=0 if test "x" = "x$IM_WAND_BINARY"; then if eval '$PKG_CONFIG --exists MagickWand'; then IM_USE_PKG_CONFIG=1 IM_WAND_BINARY=$PKG_CONFIG else AC_MSG_ERROR(not found. Please provide a path to MagickWand-config or Wand-config program.) fi fi AC_MSG_RESULT([found in $IM_WAND_BINARY]) # This is used later for cflags and libs export PKG_CONFIG_PATH="${IM_IMAGEMAGICK_PREFIX}/${PHP_LIBDIR}/pkgconfig" # Check version # if test "$IM_USE_PKG_CONFIG" = "1"; then IM_IMAGEMAGICK_VERSION=`$IM_WAND_BINARY --modversion MagickWand` else IM_IMAGEMAGICK_VERSION=`$IM_WAND_BINARY --version` fi IM_IMAGEMAGICK_VERSION_MASK=`echo $IM_IMAGEMAGICK_VERSION | $AWK 'BEGIN { FS = "."; } { printf "%d", ($[1] * 1000 + $[2]) * 1000 + $[3];}'` IM_MIMIMUM_VERSION_MASK=`echo $IM_MINIMUM_VERSION | $AWK 'BEGIN { FS = "."; } { printf "%d", ($[1] * 1000 + $[2]) * 1000 + $[3];}'` AC_MSG_CHECKING(if ImageMagick version is at least $IM_MINIMUM_VERSION) if test "$IM_IMAGEMAGICK_VERSION_MASK" -ge $IM_MIMIMUM_VERSION_MASK; then AC_MSG_RESULT(found version $IM_IMAGEMAGICK_VERSION) else AC_MSG_ERROR(no. You need at least ImageMagick version $IM_MINIMUM_VERSION to use this extension.) fi # Potential locations for the header # include/wand/magick-wand.h # include/ImageMagick/wand/MagickWand.h # include/ImageMagick-6/wand/MagickWand.h # include/ImageMagick-7/MagickWand/MagickWand.h AC_MSG_CHECKING(for MagickWand.h or magick-wand.h header) if test "$IM_USE_PKG_CONFIG" = "1"; then IM_PREFIX=`$IM_WAND_BINARY --variable prefix MagickWand` else IM_PREFIX=`$IM_WAND_BINARY --prefix` fi IM_MAJOR_VERSION=`echo $IM_IMAGEMAGICK_VERSION | $AWK 'BEGIN { FS = "."; } {print $[1]}'` # Try the header formats from newest to oldest if test -r "${IM_IMAGEMAGICK_PREFIX}/include/ImageMagick-${IM_MAJOR_VERSION}/MagickWand/MagickWand.h"; then IM_INCLUDE_FORMAT="MagickWand/MagickWand.h" IM_HEADER_STYLE="SEVEN" AC_DEFINE([IM_MAGICKWAND_HEADER_STYLE_SEVEN], [1], [ImageMagick 7.x style header]) AC_MSG_RESULT([user location ${IM_IMAGEMAGICK_PREFIX}/include/ImageMagick-${IM_MAJOR_VERSION}/MagickWand/MagickWand.h]) elif test -r "${IM_IMAGEMAGICK_PREFIX}/include/ImageMagick-${IM_MAJOR_VERSION}/wand/MagickWand.h"; then IM_INCLUDE_FORMAT="wand/MagickWand.h" IM_HEADER_STYLE="SIX" AC_DEFINE([IM_MAGICKWAND_HEADER_STYLE_SIX], [1], [ImageMagick 6.x style header]) AC_MSG_RESULT([user location ${IM_IMAGEMAGICK_PREFIX}/include/ImageMagick-${IM_MAJOR_VERSION}/wand/MagickWand.h]) elif test -r "${IM_PREFIX}/include/ImageMagick-${IM_MAJOR_VERSION}/MagickWand/MagickWand.h"; then IM_INCLUDE_FORMAT="MagickWand/MagickWand.h" IM_HEADER_STYLE="SEVEN" AC_DEFINE([IM_MAGICKWAND_HEADER_STYLE_SEVEN], [1], [ImageMagick 7.x style header]) AC_MSG_RESULT([${IM_PREFIX}/include/ImageMagick-${IM_MAJOR_VERSION}/MagickWand/MagickWand.h]) elif test -r "${IM_PREFIX}/include/ImageMagick-${IM_MAJOR_VERSION}/wand/MagickWand.h"; then IM_INCLUDE_FORMAT="wand/MagickWand.h" IM_HEADER_STYLE="SIX" AC_DEFINE([IM_MAGICKWAND_HEADER_STYLE_SIX], [1], [ImageMagick 6.x style header]) AC_MSG_RESULT([${IM_PREFIX}/include/ImageMagick-${IM_MAJOR_VERSION}/wand/MagickWand.h]) elif test -r "${IM_PREFIX}/include/ImageMagick/wand/MagickWand.h"; then IM_INCLUDE_FORMAT="wand/MagickWand.h" IM_HEADER_STYLE="SIX" AC_DEFINE([IM_MAGICKWAND_HEADER_STYLE_SIX], [1], [ImageMagick 6.x style header]) AC_MSG_RESULT([${IM_PREFIX}/include/ImageMagick/wand/MagickWand.h]) elif test -r "${IM_PREFIX}/include/ImageMagick/wand/magick-wand.h"; then IM_INCLUDE_FORMAT="wand/magick-wand.h" IM_HEADER_STYLE="OLD" AC_DEFINE([IM_MAGICKWAND_HEADER_STYLE_OLD], [1], [ImageMagick old style header]) AC_MSG_RESULT([${IM_PREFIX}/include/wand/magick-wand.h]) else AC_MSG_ERROR([Unable to find MagickWand.h or magick-wand.h header]) fi # # The cflags and libs # if test "$IM_USE_PKG_CONFIG" = "1"; then IM_IMAGEMAGICK_LIBS=`$IM_WAND_BINARY --libs MagickWand` IM_IMAGEMAGICK_CFLAGS=`$IM_WAND_BINARY --cflags MagickWand` else IM_IMAGEMAGICK_LIBS=`$IM_WAND_BINARY --libs` IM_IMAGEMAGICK_CFLAGS=`$IM_WAND_BINARY --cflags` fi export IM_IMAGEMAGICK_PREFIX export IM_WAND_BINARY export IM_IMAGEMAGICK_VERSION export IM_IMAGEMAGICK_VERSION_MASK export IM_INCLUDE_FORMAT export IM_HEADER_STYLE export IM_USE_PKG_CONFIG export IM_IMAGEMAGICK_LIBS export IM_IMAGEMAGICK_CFLAGS ])