diff configure.in @ 9575:55ecaefb7d0f

Use pkg-config to configure GraphicsMagick++.
author David Grundberg <individ@acc.umu.se>
date Tue, 25 Aug 2009 14:03:30 +0200
parents be3ee885739b
children 8dc1531e2149
line wrap: on
line diff
--- a/configure.in	Wed Aug 26 17:45:31 2009 -0400
+++ b/configure.in	Tue Aug 25 14:03:30 2009 +0200
@@ -113,6 +113,10 @@
   '$(libexecdir)/octave/$(version)/site/oct/$(canonical_host_type)')
 OCTAVE_SET_DEFAULT(imagedir, '$(datadir)/octave/$(version)/imagelib')
 
+### Find pkg-config executable (sets $PKG_CONFIG)
+
+PKG_PROG_PKG_CONFIG
+
 ### Make configure args available for other uses.
 
 config_opts=$ac_configure_args
@@ -562,15 +566,56 @@
 LIBS="$save_LIBS"
 CPPFLAGS="$save_CPPFLAGS"
 
-# GraphicsMagick++
+### GraphicsMagick++
+
+warn_magick="GraphicsMagick++ library not found.  The imread function for reading image files will not be fully functional."
+
+MAGICK_CPPFLAGS=
+MAGICK_LDFLAGS=
+MAGICK_LIBS=
+
+PKG_CHECK_EXISTS([GraphicsMagick++], [
+  ## Make sure we only get -I, -L and -l flags. Some GraphicsMagick++
+  ## packages adds extra flags that are useful when building
+  ## GraphicsMagick++ extentions. These extra flags break the Octave build.
+  MAGICK_LDFLAGS=`$PKG_CONFIG --libs-only-L GraphicsMagick++`
+  MAGICK_LIBS=`$PKG_CONFIG --libs-only-l GraphicsMagick++`
+  MAGICK_CPPFLAGS=`$PKG_CONFIG --cflags-only-I GraphicsMagick++`
+
+  warn_magick="GraphicsMagick++ library fails tests.  The imread function for reading image files will not be fully functional."
 
-warn_magick=
-AC_CHECK_PROGS(MAGICK_CONFIG, [GraphicsMagick++-config GraphicsMagick-config])
-if test -z "$MAGICK_CONFIG"; then
-  warn_magick="GraphicsMagick++ config script not found.  Assuming GraphicsMagic++ library and header files are missing, so imread will not be fully functional"
+  save_CPPFLAGS="$CPPFLAGS"
+  save_LDFLAGS="$LDFLAGS"
+  save_LIBS="$LIBS"
+  CPPFLAGS="$CPPFLAGS $MAGICK_CPPFLAGS"
+  LDFLAGS="$LIBS $MAGICK_LDFLAGS"
+  LIBS="$LIBS $MAGICK_LIBS"
+  AC_LANG_PUSH(C++)
+    AC_CHECK_HEADER([Magick++.h], [
+      AC_MSG_CHECKING([for Magick::ColorRGB in Magick++.h])
+      AC_TRY_LINK([#include <Magick++.h>], [Magick::ColorRGB c;], [
+        AC_MSG_RESULT(yes)
+        warn_magick=
+      ], [
+        AC_MSG_RESULT(no)
+      ])
+    ])
+  AC_LANG_POP(C++)
+  CPPFLAGS="$save_CPPFLAGS"
+  LDFLAGS="$save_LDFLAGS"
+  LIBS="$save_LIBS"
+])
+
+if test -z "$warn_magick"; then
+  AC_DEFINE(HAVE_MAGICK, 1, [Define if GraphicsMagick++ is available.])
 else
-  AC_DEFINE(HAVE_MAGICK, 1, [Define if GraphicsMagick++ is available.])
+  MAGICK_CPPFLAGS=
+  MAGICK_LDFLAGS=
+  MAGICK_LIBS=
 fi
+AC_SUBST(MAGICK_CPPFLAGS)
+AC_SUBST(MAGICK_LDFLAGS)
+AC_SUBST(MAGICK_LIBS)
 
 # ---------------------------------------------------------------------
 
@@ -642,7 +687,6 @@
 # fontconfig library
 
 warn_fontconfig=""
-PKG_PROG_PKG_CONFIG
 if test -z "$warn_freetype"; then
   PKG_CHECK_MODULES(FONTCONFIG,[fontconfig],[
     have_fontconfig=yes
@@ -2024,6 +2068,10 @@
   GLPK CPPFLAGS:        $GLPK_CPPFLAGS
   GLPK LDFLAGS:         $GLPK_LDFLAGS
   GLPK libraries:       $GLPK_LIBS
+  GraphicsMagick++
+    CPPFLAGS:           $MAGICK_CPPFLAGS
+    LDFLAGS:            $MAGICK_LDFLAGS
+    libraries:          $MAGICK_LIBS
   HDF5 CPPFLAGS:        $HDF5_CPPFLAGS
   HDF5 LDFLAGS:         $HDF5_LDFLAGS
   HDF5 libraries:       $HDF5_LIBS
@@ -2046,7 +2094,6 @@
 
   Default pager:        $DEFAULT_PAGER
   gnuplot:              $GNUPLOT
-  Magick config:        $MAGICK_CONFIG
 
   Do internal array bounds checking:  $BOUNDS_CHECKING
   Build static libraries:             $STATIC_LIBS