#!/bin/sh
# Copyright (C) 2000-2005 Open Source Telecom Corporation.
# Copyright (C) 2006-2008 David Sugar, Tycho Softworks.
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

ost_cv_dynloader="yes"      
modflags="-module -shared -avoid-version"
ccflags=" -D_GNU_SOURCE -I/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/include"
cclink="    -pthread"
ccload="-ldl"
ccstd=" -lz"
prefix="/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr"
exec_prefix="${prefix}"
libdir="-L${exec_prefix}/lib"

includedir="${prefix}/include"

usage()
{
	cat <<EOF
Usage: ccgnu2-config [OPTIONS]
Options:
	[--prefix[=DIR]]
	[--sysroot[=DIR]]
	[--exec-prefix[=DIR]]
	[--version]
	[--flags]
	[--libs]
	[--gnulibs]
	[--iolibs]
	[--extlibs]
	[--stdlibs]
	[--includes]
	[--module]
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
		includedir=$prefix/include
		libdir=$prefix/lib
		;;
	--sysroot=*)
		sysroot=$optarg
		prefix=$sysroot$prefix
		includedir=$sysroot$includedir
		libdir="-L$sysroot${exec_prefix}/lib"
		;;
	--prefix)
		echo /home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr
		;;
	--exec-prefix=*)
		exec_prefix=$optarg
		libdir=$exec_prefix/lib
		;;
	--exec-prefix)
		echo $exec_prefix
	;;
	--version)
		echo 1.8.1
		;;
	--flags)
		echo $ccflags
		;;
	--libs | --gnulibs)
		echo $libdir -lccgnu2 $ccload $cclink
		;;
	--cclibs)
		echo $cclink
		;;
	--iolibs)
		echo $libdir -lccgnu2 $ccload $cclink
		;;
	--stdlibs)
		echo $libdir -lccext2 -lccgnu2 $ccstd $ccload $cclink
		;;
	--extlibs)
		echo -lccext2 $ccstd
		;;
	--includes)
		echo -I$includedir 
		;;
	--dyn | --dso)
		echo $ost_cv_dynloader
		;;
	--modflags | --module)
		echo $modflags
		;;
	--help)
		usage 0
		;;
	*)
		usage 1 1>&2
		;;
	esac
	shift
done

