[go: up one dir, main page]

Menu

[c07709]: / config / xerces.m4  Maximize  Restore  History

Download this file

146 lines (126 with data), 4.5 kB

dnl @synopsis AX_MYSQL
dnl 
dnl This macro tries to find Xerces C++ API header and library locations.
dnl
dnl We define the following configure script flags:
dnl
dnl		--with-xerces: Give prefix for both library and headers, and try
dnl			to guess subdirectory names for each.  (e.g. Tack /lib and
dnl			/include onto given dir name, and other common schemes.)
dnl		--with-xerces-lib: Similar to --with-xerces, but for library only.
dnl		--with-xerces-include: Similar to --with-xerces, but for headers
dnl			only.
dnl
dnl @version 1.0, 2008/07/13
dnl @author Denis Arnaud <denis_arnaud@users.sourceforge.net>

AC_DEFUN([AX_XERCES_C],
[
	#
	# Set up configure script macros
	#
    AC_ARG_WITH(xerces,
      [ --with-xerces=PATH to Xerces C++ installation directory],
      [xerces_inc_check="$withval/include"
       xerces_lib_check="$withval/lib64 $withval/lib"
      ],
      [xerces_inc_check="/usr/include /usr/local/include /usr/local/xercesc/include /usr/xercesc/include /usr/pkg/include /nastools/xerces-c/include"
       xerces_lib_check="/usr/local/lib64 /usr/local/lib /usr/lib64 /usr/lib /usr/local/xercesc/lib64 /usr/local/xercesc/lib /usr/lib64/xercesc /usr/lib/xercesc /usr/xercesc/lib64 /usr/xercesc/lib /usr/pkg/lib64 /usr/pkg/lib /nastools/xerces-c/lib64 /nastools/xerces-c/lib"
      ]
    )

    AC_ARG_WITH(xerces-lib,
      [  --with-xerces-lib=PATH to Xerces C++ library installation],
      [xerces_lib_check="$with_xerces_lib"]
    )

    AC_ARG_WITH(xerces-include,
      [  --with-xerces-include=PATH to Xerces C++ header installation],
      [xerces_inc_check="$with_xerces_include"]
    )

	#
	# Look for Xerces C++ API library
	#
    XERCES_C_LIB="xerces-c"
	AC_MSG_CHECKING([for Xerces C++ library directory ])
	xerces_libdir=
    for m in $xerces_lib_check
    do
		if test -d "$m" && \
          (test -f "$m/lib$XERCES_C_LIB.so" || test -f "$m/lib$XERCES_C_LIB.a")
		then
          xerces_libdir=$m
          break
		fi
    done

    if test -z "$xerces_libdir"
    then
      AC_MSG_ERROR([Didn't find $XERCES_C_LIB library in '$xerces_lib_check'])
    fi

	case "$xerces_libdir" in
		/* ) ;;
		* )  AC_MSG_ERROR([The Xerces C++ library directory ($xerces_libdir) must be an absolute path.]) ;;
	esac

	AC_MSG_RESULT([yes ($xerces_libdir)])

	case "$xerces_libdir" in
	  /usr/lib) ;;
	  *) LDFLAGS="$LDFLAGS -L${xerces_libdir}" ;;
	esac

	#
	# Look for Xerces C++ API headers
	#
    AC_MSG_CHECKING([for Xerces C++ include directory: ])
    xerces_incdir=
	xerces_version_header=
    for m in $xerces_inc_check
    do
      if test -d "$m" && (test -f "$m/xercesc/sax/Parser.hpp" \
	  	 || test -f "$m/xercesc/util/XercesVersion.hpp")
        then
          xerces_incdir=$m
		  xerces_version_header=$m/xercesc/util/XercesVersion.hpp
          break
      fi
    done

	if test -z "$xerces_incdir"
	then
		AC_MSG_ERROR([Didn't find the Xerces C++ include dir in '$xerces_inc_check'])
	fi

	case "$xerces_incdir" in
		/* ) ;;
		* )  AC_MSG_ERROR([The Xerces C++ include directory ($xerces_incdir) must be an absolute path.]) ;;
	esac

	AC_MSG_RESULT([yes ($xerces_incdir)])

    no_xerces=""
    if test "x$xerces_incdir" = "x" -o "x$xerces_libdir" = "x"; then
      no_xerces=yes
    else
		xerces_version_major=`grep "^#define XERCES_VERSION_MAJOR" $xerces_version_header | cut -d" " -f3`
		xerces_version_minor=`grep "^#define XERCES_VERSION_MINOR" $xerces_version_header | cut -d" " -f3`
		xerces_version_revision=`grep "^#define XERCES_VERSION_REVISION" $xerces_version_header | cut -d" " -f3`
		XERCES_VERSION="$xerces_version_major.$xerces_version_minor.$xerces_version_revision"

		XERCES_CFLAGS="-I${xerces_incdir}"
		XERCES_LIBS="-L${xerces_libdir} -l${XERCES_C_LIB}"
    	AC_SUBST(XERCES_VERSION)
    	AC_SUBST(XERCES_CFLAGS)
    	AC_SUBST(XERCES_LIBS)


    	SAVED_CPPFLAGS="$CPPFLAGS"
    	SAVED_LDFLAGS="$LDFLAGS"
    	CPPFLAGS="$CPPFLAGS $XERCES_CFLAGS"
    	LDFLAGS="$LDFLAGS $XERCES_LIBS"

    	AC_MSG_CHECKING([that Xerces C++ programs can be built])
    	AC_COMPILE_IFELSE(
			[AC_LANG_PROGRAM(
				[[#include <xercesc/sax2/SAX2XMLReader.hpp>
              	#include <xercesc/sax2/XMLReaderFactory.hpp>
				]],
          		[[xercesc::SAX2XMLReader* aXMLReader_ptr = xercesc::XMLReaderFactory::createXMLReader();
				]]
        	)]
        	,
    		[AC_MSG_RESULT([yes])],
			[
			AC_MSG_ERROR([We could not compile a simple Xerces C++ example. See config.log.])
			]
      	)

		CPPFLAGS="$SAVED_CPPFLAGS"
		LDFLAGS="$SAVED_LDFLAGS"

    fi dnl no_xerces
  ]) dnl AX_XERCES_C