#! /bin/sh
#
# The idea to this kind of setup info script was stolen from numerous
# other packages, such as neon, libxml and gnome.
#
# $Id$
#
prefix=@prefix@
exec_prefix=@exec_prefix@
includedir=@includedir@

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

Available values for OPTION include:

  --cflags    pre-processor and compiler flags
  --feature   newline separated list of enabled features
  --help      display this help and exit
  --libs      library linking information
  --prefix    curl install prefix
  --version   output version information
EOF

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

    --feature)
	if test "@OPENSSL_ENABLED@" = "1"; then
          echo "SSL"
        fi
	if test "@KRB4_ENABLED@" = "1"; then
          echo "KRB4"
        fi
	if test "@IPV6_ENABLED@" = "1"; then
          echo "IPv6"
        fi
	;;

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

    --help)
	usage 0
	;;

    --cflags)
       	echo @CPPFLAGS@
       	;;

    --libs)
       	echo @LDFLAGS@ @LIBS@
       	;;

    *)
	usage
	exit 1
	;;
    esac
    shift
done

exit 0
