#!/bin/sh
#
# Configure options script for re-calling MagickCore compilation options
# required to use the MagickCore library.
#

prefix=@prefix@
exec_prefix=@exec_prefix@

usage="\
Usage: MagickCore-config [--cflags] [--cppflags] [--exec-prefix] [--ldflags] [--libs] [--prefix] [--version]"

if test $# -eq 0; then
      echo "${usage}" 1>&2
      echo "Example: gcc \`MagickCore-config --cflags --cppflags\` -o core core.c \`Magick-config --ldflags --libs\`" 1>&2
      exit 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
      ;;
    --prefix)
      echo $prefix
      ;;
    --exec-prefix=*)
      exec_prefix=$optarg
      ;;
    --exec-prefix)
      echo $exec_prefix
      ;;
    --version)
      echo '@PACKAGE_VERSION@ Q@QUANTUM_DEPTH@ @MAGICK_HDRI@'
      ;;
    --cflags)
      @PKG_CONFIG@ --cflags MagickCore-@MAGICK_MAJOR_VERSION@.@MAGICK_ABI_SUFFIX@
      ;;
    --cxxflags)
      @PKG_CONFIG@ --cflags MagickCore-@MAGICK_MAJOR_VERSION@.@MAGICK_ABI_SUFFIX@
      ;;
    --cppflags)
      @PKG_CONFIG@ --cflags MagickCore-@MAGICK_MAJOR_VERSION@.@MAGICK_ABI_SUFFIX@
      ;;
    --ldflags)
      @PKG_CONFIG@ --libs MagickCore-@MAGICK_MAJOR_VERSION@.@MAGICK_ABI_SUFFIX@
      ;;
    --libs)
      @PKG_CONFIG@ --libs MagickCore-@MAGICK_MAJOR_VERSION@.@MAGICK_ABI_SUFFIX@
      ;;
    --coder-path)
      echo "@CODER_PATH@"
      ;;
    --filter-path)
      echo "@FILTER_PATH@"
      ;;
    *)
      echo "${usage}" 1>&2
      exit 1
      ;;
  esac
  shift
done
