#! /bin/sh

prefix=@prefix@
exec_prefix=@exec_prefix@
includedir=@includedir@
libdir=@libdir@

usage()
{
    cat <<EOF
Usage: xml2-config [OPTION]

Known values for OPTION are:

  --prefix=DIR		change libxml prefix [default $prefix]
  --libs		print library linking information
  --libtool-libs        print linking information for use with libtool
  --cflags		print pre-processor and compiler flags
  --help		display this help and exit
  --version		output version information
EOF

    exit $1
}

if test $# -eq 0; then
    usage 1
fi

cflags=false
libs=false

while test $# -gt 0; do
    case "$1" in
    -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
    *) optarg= ;;
    esac

    case "$1" in
    --prefix=*)
	prefix=$optarg
	includedir=$prefix/include
	libdir=$prefix/lib
	;;

    --prefix)
	echo $prefix
	;;

    --version)
	echo @VERSION@
	exit 0
	;;

    --help)
	usage 0
	;;

    --cflags)
       	echo @XML_INCLUDEDIR@ @XML_CFLAGS@
       	;;

    --libtool-libs)
	echo ${libdir}/@XML_LIBTOOLLIBS@
        ;;

    --libs)
        if [ "`uname`" = "Linux" ]
	then
	    if [ "@XML_LIBDIR@" = "-L/usr/lib64" ]
	    then
		echo @XML_LIBS@ 
	    else
		echo @XML_LIBDIR@ @XML_LIBS@ 
	    fi
	else
	    echo @XML_LIBDIR@ @XML_LIBS@ 
	fi
       	;;

    *)
	usage
	exit 1
	;;
    esac
    shift
done

exit 0
