VTK Autoconf
Hopefully you can find the most updated AM_PATH_VTK macro which I wrote in the VtkPlot CVS repository; in case the link breaks, here it is the current version which I use:
dnl ======================================================================================
dnl Author: Francesco Montorsi
dnl RCS-ID: $Id: vtk.m4,v 1.1 2005/11/20 14:47:40 frm Exp $
dnl
dnl Implements the AM_OPTIONS_VTK, to add the --with-vtk=path option, and the
dnl AM_PATH_VTK macro used to detect VTK presence, location and version.
dnl ======================================================================================
dnl
dnl AM_OPTIONS_VTK
dnl ------------------------------------------------------------------------
dnl Adds the --with-vtk=path option to the configure options
dnl
AC_DEFUN([AM_OPTIONS_VTK],
[ AC_ARG_WITH([vtk], [AC_HELP_STRING([--with-vtk], [The prefix where VTK is installed (default is /usr/local)])], [with_vtk=$withval], [with_vtk="/usr/local"]) ])
dnl
dnl AM_PATH_VTK([minimum-version], [action-if-found], [action-if-not-found])
dnl ------------------------------------------------------------------------
dnl
dnl NOTE: [minimum-version] must be in the form [X.Y.Z]
dnl
AC_DEFUN([AM_PATH_VTK],
[ dnl do we want to check for VTK ? if $with_vtk = "yes" ; then
dnl in case user wrote --with-vtk=yes with_vtk="/usr/local" fi
if $with_vtk != "no" ; then
VTK_PREFIX="$with_vtk"
AC_CHECK_FILE([$VTK_PREFIX/include/vtk/vtkCommonInstantiator.h], [vtkFound="OK"]) AC_MSG_CHECKING([if VTK is installed in $VTK_PREFIX])
if -z "$vtkFound" ; then
dnl not found ! AC_MSG_RESULT([no]) $3
else
dnl found ! AC_MSG_RESULT([yes])
dnl these are the VTK libraries of a default build VTK_LIBS="-lvtkCommon -lvtkDICOMParser -lvtkexpat -lvtkFiltering -lvtkfreetype -lvtkftgl -lvtkGraphics -lvtkHybrid -lvtkImaging -lvtkIO -lvtkjpeg -lvtkpng -lvtkRendering -lvtktiff -lvtkzlib"
dnl set VTK c,cpp,ld flags VTK_CFLAGS="-I$VTK_PREFIX/include/vtk" VTK_CXXFLAGS="$VTK_CFLAGS" VTK_LDFLAGS="-L$VTK_PREFIX/lib/vtk $VTK_LIBS"
dnl now, eventually check version if -n "$1" ; then
dnl the version of VTK we need: maj=`echo $1 | sed 's/\(0-9*\).\(0-9*\).\(0-9*\)/\1/'` min=`echo $1 | sed 's/\(0-9*\).\(0-9*\).\(0-9*\)/\2/'` rel=`echo $1 | sed 's/\(0-9*\).\(0-9*\).\(0-9*\)/\3/'` AC_MSG_CHECKING([if VTK version is at least $maj.$min.$rel])
dnl in order to be able to compile the following test program, we need to add dnl to the current flags, the VTK settings... OLD_CFLAGS=$CFLAGS OLD_CXXFLAGS=$CXXFLAGS OLD_LDFLAGS=$LDFLAGS CFLAGS="$VTK_CFLAGS $CFLAGS" CXXFLAGS="$VTK_CXXFLAGS $CXXFLAGS" LDFLAGS="$VTK_LDFLAGS $LDFLAGS"
dnl check if the installed VTK is greater or not AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <vtk/vtkVersion.h>], [ printf("VTK version is: %d.%d.%d", VTK_MAJOR_VERSION, VTK_MINOR_VERSION, VTK_BUILD_VERSION); #if VTK_MAJOR_VERSION < $maj #error Installed VTK is too old ! #endif #if VTK_MINOR_VERSION < $min #error Installed VTK is too old ! #endif #if VTK_BUILD_VERSION < $rel #error Installed VTK is too old ! #endif ]) ], [vtkVersion="OK"])
if "$vtkVersion" = "OK" ; then AC_MSG_RESULT([yes]) $2 else AC_MSG_RESULT([no])
dnl restore all flags without VTK values CFLAGS=$OLD_CFLAGS CXXFLAGS=$OLD_CXXFLAGS LDFLAGS=$OLD_LDFLAGS $3 fi
else
dnl if we don't have to check for minimum version (because the user did not set that option), dnl then we can execute here the block action-if-found CFLAGS="$VTK_CFLAGS $CFLAGS" CXXFLAGS="$VTK_CXXFLAGS $CXXFLAGS" LDFLAGS="$VTK_LDFLAGS $LDFLAGS" $2 fi fi fi ])