236 lines
7.4 KiB
Plaintext
236 lines
7.4 KiB
Plaintext
#########################################################
|
|
# 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
|
|
])
|
|
|