#! /bin/sh
#
# The idea to this kind of setup info script was stolen from numerous
# other packages, such as neon, libxml and gnome.
#
# $Id: xcurses-config.in,v 1.6 2007/11/07 23:33:07 wmcbrine Exp $
#

verdot=3.4

prefix=@prefix@
exec_prefix=@exec_prefix@
includedir=@includedir@/xcurses

usage()
{
    echo "Usage: xcurses-config [OPTION]"
    echo ""
    echo "Available values for OPTION include:"
    echo ""
    echo "  --help         display this help and exit"
    echo "  --cflags       pre-processor and compiler flags"
    echo "                 [-I$includedir]"
    echo "  --libs         library linking information"
    echo "                 [-L$prefix/lib -lXCurses @LDFLAGS@ @MH_XLIBS@ @MH_EXTRA_LIBS@"
    echo "  --prefix       PDCurses install prefix"
    echo "                 [$prefix]"
    echo "  --version      output version information"
    echo "                 [$verdot]"
    exit $1
}

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

while test $# -gt 0; do
    case "$1" in
    # this deals with options in the style
    # --option=value and extracts the value part
    # [not currently used]
    -*=*) value=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
    *) value= ;;
    esac

    case "$1" in
    --prefix)
       echo $prefix
       ;;

    --version)
       echo $verdot
       exit 0
       ;;

    --help)
       usage 0
       ;;

    --cflags)
       echo -I$includedir
       ;;

    --libs)
       echo -L$prefix/lib -lXCurses @LDFLAGS@ @MH_XLIBS@ @MH_EXTRA_LIBS@
       ;;

    *)
       usage
       exit 1
       ;;
    esac
    shift
done

exit 0
