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

Known values for OPTION are:

  --prefix              print libpng prefix
  --libs                print library linking information
  --cflags              print compiler flags
  --cppflags            print pre-processor flags
  --ldflags             print loader flags
  --rpath               print path to shared library
  --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

    --prefix)
        echo ${prefix}
        ;;

    --version)
        echo ${version}
        exit 0
        ;;

    --help)
        usage 0
        ;;

    --cflags)
        echo ${cflags}
        ;;

    --cppflags)
        echo ${cppflags}
        ;;

    --libs)
        echo ${libs}
        ;;

    --rpath)
        echo ${rpath}
        ;;

    --ldflags)
        echo ${ldflags}
        ;;

    *)
        usage
        exit 1
        ;;
    esac
    shift
done

exit 0
