#! /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
  --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@
       	;;

    --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
