#! /bin/sh

prefix="@prefix@"
package="@PACKAGE@"
exec_prefix="@exec_prefix@"
exec_prefix_set=no
package_libdir="@libdir@"

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

Known values for OPTION are:

  --prefix=DIR		change XMLSEC prefix
  --exec-prefix=DIR	change XMLSEC executable prefix
  --libs		print library linking information
  --cflags		print pre-processor and compiler flags
  --crypto		print the default crypto library name
  --help		display this help and exit
  --version		output version information
  --crypto=LIB		configure with XMLSEC crypto library (one of the
			following: none default openssl nss gnutls gcrypt)
EOF

    exit $1
}


#
# first parse command line aruments
#
if [ $# -eq 0 ]
then
    usage 1 1>&2
fi

cflags=false
libs=false
if [ "z@XMLSEC_NO_CRYPTO_DYNAMIC_LOADING@" = "z1" ] ;
then
    crypto="default"
else
    crypto="none"
fi

while [ $# -gt 0 ]
do
    case "$1" in
    -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
    *) optarg= ;;
    esac

    case "$1" in
    --crypto=*)
	crypto=$optarg
	;;
	
    --prefix=*)
	prefix=$optarg
	if [ $exec_prefix_set = no ]
        then
	    exec_prefix=$optarg
	fi
	;;

    --prefix)
	echo $prefix
	;;

    --exec-prefix=*)
	exec_prefix=$optarg
	exec_prefix_set=yes
	;;

    --exec-prefix)
	echo $exec_prefix
	;;

    --version)
	echo @VERSION@
	exit 0
	;;
    
    --crypto)
	echo @XMLSEC_CRYPTO@
	exit 0
	;;
	
    --help)
	usage 0
	;;

    --cflags)
       	cflags=true
       	;;

    --libs)
       	libs=true
       	;;
    
    *)
	usage 1
	;;
    esac
    shift
done

#
# Get LibXML2 settings
#
the_xml_flags="`@LIBXML_CONFIG@ --cflags`"
the_xml_libs="`@LIBXML_CONFIG@ --libs`"

#
# Get LibXSLT settings
#
the_xslt_flags=""
the_xslt_libs=""
if test "@XMLSEC_NO_LIBXSLT@" = "0"; then 
    the_xslt_flags="`@LIBXSLT_CONFIG@ --cflags`"
    the_xslt_libs="`@LIBXSLT_CONFIG@ --libs`"
fi    

#
# Get crypto library settings
#
the_crypto_flags=""
the_crypto_libs=""
the_xmlsec_crypto_lib=""
case "$crypto" in
none)
    # no crypto, just the core xmlsec engine (useful when more
    # than one crypto engine i sused by application)
    if [ "z@XMLSEC_NO_CRYPTO_DYNAMIC_LOADING@" != "z1" ] ;
    then
	the_crypto_flags="-DXMLSEC_CRYPTO_DYNAMIC_LOADING=1 -DXMLSEC_CRYPTO=\\\"@XMLSEC_CRYPTO@\\\""
    fi
    ;;

default) 
    the_crypto_flags="@XMLSEC_CRYPTO_CFLAGS@ -DXMLSEC_CRYPTO=\\\"@XMLSEC_CRYPTO@\\\""
    the_crypto_libs="@XMLSEC_CRYPTO_LIBS@"
    the_xmlsec_crypto_lib="-l@XMLSEC_CRYPTO_LIB@"
    ;;
    
openssl)
    if test "@XMLSEC_NO_OPENSSL@" = "0"; then
        the_crypto_flags="@OPENSSL_CFLAGS@ -DXMLSEC_CRYPTO=\\\"openssl\\\""
	the_crypto_libs="@OPENSSL_LIBS@"
        the_xmlsec_crypto_lib="-l@OPENSSL_CRYPTO_LIB@"
    else
        echo "Error: the \"$crypto\" cryptographic library is not supported"
	usage 1
    fi
    ;;

gnutls)
    if test "@XMLSEC_NO_GNUTLS@" = "0"; then
        the_crypto_flags="@GNUTLS_CFLAGS@ -DXMLSEC_CRYPTO=\\\"gnutls\\\""
	the_crypto_libs="@GNUTLS_LIBS@"
        the_xmlsec_crypto_lib="-l@GNUTLS_CRYPTO_LIB@"
    else
        echo "Error: the \"$crypto\" cryptographic library is not supported"
	usage 1
    fi
    ;;

gcrypt)
    if test "@XMLSEC_NO_GCRYPT@" = "0"; then
        the_crypto_flags="@GCRYPT_CFLAGS@ -DXMLSEC_CRYPTO=\\\"gcrypt\\\""
	the_crypto_libs="@GCRYPT_LIBS@"
        the_xmlsec_crypto_lib="-l@GCRYPT_CRYPTO_LIB@"
    else
        echo "Error: the \"$crypto\" cryptographic library is not supported"
	usage 1
    fi
    ;;

nss)
    if test "@XMLSEC_NO_NSS@" = "0"; then
        the_crypto_flags="@NSS_CFLAGS@ -DXMLSEC_CRYPTO=\\\"nss\\\""
	the_crypto_libs="@NSS_LIBS@"
        the_xmlsec_crypto_lib="-l@NSS_CRYPTO_LIB@"
    else
        echo "Error: the \"$crypto\" cryptographic library is not supported"
	usage 1
    fi
    ;;
    
*)
    echo "Error: the \"$crypto\" cryptographic library is not supported"
    usage 1
    ;;
    
esac

#
# Assemble all the settings together
#
the_flags="$the_flags @XMLSEC_CORE_CFLAGS@ $the_xml_flags $the_xslt_flags $the_crypto_flags"
the_libs="$the_libs -L${package_libdir} @XMLSEC_CORE_LIBS@ $the_xmlsec_crypto_lib -lxmlsec1 $the_xml_libs $the_xslt_libs $the_crypto_libs"

if $cflags; then
    all_flags="$the_flags"
fi

if $libs; then
    all_flags="$all_flags $services $the_libs"
fi

if test -z "$all_flags" || test "x$all_flags" = "x "; then
    exit 1
fi

# Straight out any possible duplicates, but be careful to
# get `-lfoo -lbar -lbaz' for `-lfoo -lbaz -lbar -lbaz'
other_flags=
rev_libs=
for i in $all_flags; do
    case "$i" in
    # a library, save it for later, in reverse order
    -l*) rev_libs="$i $rev_libs" ;;
    *)
	case " $other_flags " in
	*\ $i\ *) ;;				# already there
	*) other_flags="$other_flags $i" ;;	# add it to output
        esac ;;
    esac
done

ord_libs=
for i in $rev_libs; do
    case " $ord_libs " in
    *\ $i\ *) ;;			# already there
    *) ord_libs="$i $ord_libs" ;;	# add it to output in reverse order
    esac
done

echo $other_flags $ord_libs

exit 0
