#!/bin/sh

prefix=@prefix@
exec_prefix=@exec_prefix@
exec_prefix_set=no
includedir=@includedir@

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

Generic options
  --version	output ActiveMQ-CPP version information.
  --help	display this help and exit.

Compilation support options
  --cflags	print pre-processor and compiler flags
  --libs	print library linking information

Install directories ActiveMQ-CPP was configured to
  --prefix[=DIR]
  --exec-prefix[=DIR]

EOF
    exit $1
}

if test $# -eq 0; then
    usage 1 1>&2
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
      if test $exec_prefix_set = no ; then
        exec_prefix=$optarg
      fi
      ;;
    --prefix)
      echo_prefix=yes
      ;;
    --exec-prefix=*)
      exec_prefix=$optarg
      exec_prefix_set=yes
      ;;
    --exec-prefix)
      echo_exec_prefix=yes
      ;;
    --version)
      echo @ACTIVEMQ_VERSION@
      ;;
    --help)
      usage 0
      ;;
    --cflags)
      echo_cflags=yes
      ;;
    --libs)
      echo_libs=yes
      ;;
    *)
      usage 1 1>&2
      ;;
  esac
  shift
done

if test "$echo_prefix" = "yes"; then
    echo $prefix
fi

if test "$echo_exec_prefix" = "yes"; then
    echo $exec_prefix
fi

if test "$echo_cflags" = "yes"; then
      if test "$includedir" != "/usr/include" ; then
            echo -I$includedir
      fi
fi

if test "$echo_libs" = "yes"; then
      if test @libdir@ != /usr/lib ; then
            my_linker_flags="-L@libdir@"
      fi
      echo ${my_linker_flags} -lactivemq-cpp
fi




