#! /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]
  --exec-prefix=DIR	change libxml exec prefix [default $exec_prefix]
  --libs		print library linking information
  --libtool-libs        print linking information for use with libtool
  --cflags		print pre-processor and compiler flags
  --modules		module support enabled
  --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
	;;

    --exec-prefix=*)
      exec_prefix=$optarg
      libdir=$exec_prefix/lib
      ;;

    --exec-prefix)
      echo $exec_prefix
      ;;

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

    --help)
	usage 0
	;;

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

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

    --modules)
       	echo @WITH_MODULES@
       	;;

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