#! /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
                        add --dynamic to print only shared libraries
  --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

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)
        cflags="@XML_INCLUDEDIR@ @XML_CFLAGS@"
       	;;

    --libtool-libs)
	if [ -r ${libdir}/@XML_LIBTOOLLIBS@ ]
	then
	    echo ${libdir}/@XML_LIBTOOLLIBS@
	fi
        ;;

    --modules)
       	echo @WITH_MODULES@
       	;;

    --libs)
        if [ "$2" = "--dynamic" ]; then
            shift
            libs="@XML_LIBS@"
        else
            libs="@XML_LIBS@ @XML_PRIVATE_LIBS@ @MODULE_PLATFORM_LIBS@"
        fi

        if [ "@XML_LIBDIR@" != "-L/usr/lib" -a "@XML_LIBDIR@" != "-L/usr/lib64" ]; then
            libs="@XML_LIBDIR@ $libs"
        fi

        libs="$libs @WIN32_EXTRA_LIBADD@"
        ;;

    *)
	usage
	exit 1
	;;
    esac
    shift
done

if test "$cflags" -o "$libs"; then
    echo $cflags $libs
fi

exit 0
