[Xastir-Dev] acinclude.m4 with ImageMagick-friendly patch

Jack Twilley jmt at twilley.org
Wed May 28 02:53:14 EDT 2003


WARNING: Unsanitized content follows.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

I've attached a patch for a new acinclude.m4 which contains a
replacement for the normal ImageMagick routine.  It's spammier but in
a good way -- which should help all the folks who run into trouble
detecting ImageMagick.

The new code checks for the presence of Magick-config, the config
script which describes what options are needed to build programs that
use the ImageMagick API.  Next, the ImageMagick version is detected,
with a warning for those who have old versions of the code.  After
that, the presence of each library is tested.  Once that is complete,
the headers are checked.  Only then is the compilation test performed.

Things I plan on changing:
 * use more macros for tests
 * check for symlinks (for .so files)

There's currently an abstract version of the "old version" test.  If
this gets checked in, I'll include the old version as a parameter to
be passed by the macro call so the old version would be changed in the
configure.ac file and not the acinclude.m4 file.

I'll commit this after the release, unless Curt thinks I should do it
early.

Here's the patch:

- --begin patch--
Index: acinclude.m4
===================================================================
RCS file: /cvsroot/xastir/xastir/acinclude.m4,v
retrieving revision 1.7
diff -u -c -a -w -r1.7 acinclude.m4
*** acinclude.m4	20 Mar 2003 22:29:00 -0000	1.7
- --- acinclude.m4	28 May 2003 06:52:39 -0000
***************
*** 173,179 ****
- --- 173,268 ----
  ])
  
  # JMT - this is pure evil and will not be edited at the present time
+ # JMT - I am taming the evil
  AC_DEFUN([XASTIR_CHECK_IMAGEMAGICK],
+ [
+ use_imagemagick="mu"
+ old_version="5.4.9"
+ AC_CHECK_PROG(magick_config, [Magick-config --version], yes, no)
+ if test "$magick_config" == "yes"; then
+   AC_MSG_CHECKING([ImageMagick version])
+   magick_version=`Magick-config --version`
+   magick_major=`echo $magick_version | cut -d '.' -f 1`
+   magick_minor=`echo $magick_version | cut -d '.' -f 2`
+   magick_patch=`echo $magick_version | cut -d '.' -f 3`
+   old_major=`echo $magick_version | cut -d '.' -f 1` 
+   old_minor=`echo $magick_version | cut -d '.' -f 2` 
+   old_patch=`echo $magick_version | cut -d '.' -f 3` 
+   if test "$magick_major" -lt "$old_major" || \
+      test "$magick_major" -eq "$old_major" -a "$magick_minor" -lt "$old_minor" || \
+      test "$magick_major" -eq "$old_major" -a "$magick_minor" -eq "$old_minor" -a "$magick_patch" -lt "$old_patch"; then 
+      magick_version="$magick_version, upgrade for full functionality"
+   fi 
+   AC_MSG_RESULT($magick_version)
+   magick_cflags=`Magick-config --cflags`
+   magick_cppflags=`Magick-config --cppflags`
+   magick_ldflags=`Magick-config --ldflags`
+   magick_libs=`Magick-config --libs`
+ 
+   # are all the libraries present
+   compressed_libs=`for dir in -L/usr/lib $magick_ldflags; do echo $dir | grep -- ^-L && echo $dir; done | sort -u | sed -e "s/^-L//"`
+   for lib in $magick_libs; do
+     if test "$use_imagemagick" == "mu"; then 
+       real_lib=`echo $lib | sed -e "s/^-l/lib/"`
+      libfound="no"
+       AC_MSG_CHECKING([for $real_lib])
+       for ext in so a; do
+         for dir in $compressed_libs; do
+           wholefile="$dir/$real_lib.$ext"
+           if test "$libfound" == "no" && (test -L $wholefile || test -e $wholefile); then
+             libfound=$wholefile
+           fi
+         done
+       done
+       if test "$libfound" != "no"; then
+         AC_MSG_RESULT([found at $wholefile])
+       else
+         AC_MSG_RESULT([not found])
+         use_imagemagick="no"
+       fi
+     fi
+   done
+ 
+   save_CFLAGS="$CFLAGS"
+   save_CPPFLAGS="$CPPFLAGS" 
+   save_CXXFLAGS="$CXXFLAGS" 
+   save_LDFLAGS="$LDFLAGS" 
+   save_LIBS="$LIBS" 
+ 
+   CFLAGS="$CFLAGS $magick_cflags"
+   CPPFLAGS="$CPPFLAGS $magick_cppflags"
+   LDFLAGS="$LDFLAGS $magick_ldflags"
+   LIBS="$magick_libs $LIBS"
+ 
+   # check for presence of header
+   if test "$use_imagemagick" == "mu"; then
+     AC_CHECK_HEADER(magick/api.h, , [use_imagemagick="no"
+ CFLAGS=$save_CFLAGS
+ CPPFLAGS=$save_CPPFLAGS 
+ CXXFLAGS=$save_CXXFLAGS 
+ LDFLAGS=$save_LDFLAGS 
+ LIBS=$save_LIBS])
+   fi
+   
+   # JMT - this is so so wrong
+   if test "$use_imagemagick" == "mu"; then
+     AC_CHECK_LIB([Magick], [WriteImage], [use_imagemagick="yes"
+ AC_DEFINE(HAVE_IMAGEMAGICK, 1, [Imagemagick image library])], [use_imagemagick="no"
+ CFLAGS=$save_CFLAGS
+ CPPFLAGS=$save_CPPFLAGS 
+ CXXFLAGS=$save_CXXFLAGS 
+ LDFLAGS=$save_LDFLAGS 
+ LIBS=$save_LIBS])
+   fi
+ else
+   use_imagemagick="no"
+ fi
+ AC_MSG_CHECKING([for ImageMagick])
+ AC_MSG_RESULT($use_imagemagick)
+ ])
+ 
+ # old test
+ AC_DEFUN([XASTIR_CHECK_IMAGEMAGICK_OLD],
  [
  
  # Check for ImageMagick 

- --end patch--

Jack.
- -- 
Jack Twilley
jmt at twilley dot org
http colon slash slash www dot twilley dot org slash tilde jmt slash
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (FreeBSD)

iD8DBQE+1FzhGPFSfAB/ezgRAsJeAJ47LPYXDztDbQ04mlSjgZCquG40nACgmv0+
aEVaiFYsKcDgKY37rSO8K/8=
=wITg
-----END PGP SIGNATURE-----



More information about the Xastir-dev mailing list