#!/bin/sh

prefix=/usr
exec_prefix=${prefix}

bindir=${exec_prefix}/bin
sbindir=${exec_prefix}/sbin
libexecdir=${exec_prefix}/libexec
datadir=${prefix}/share
sysconfdir=${prefix}/etc
sharedstatedir=${prefix}/com
localstatedir=${prefix}/var
libdir=${exec_prefix}/lib
infodir=${prefix}/info
mandir=${prefix}/man
includedir=${prefix}/include

pkgdatadir=${datadir}/gnome-libs
pkglibdir=${libdir}/gnome-libs
pkgincludedir=${includedir}/gnome-libs

usage()
{
    exit_code=$1

    cat <<EOF
Usage: gnome-config [OPTION]... [LIBRARY]...

Generic options
  --version	output gnome version information
  --help	display this help and exit

Compilation support options
  --cflags	print pre-processor and compiler flags
  --libs	print library linking information
  --libs-only-L	only print the -L/-R part of --libs
  --libs-only-l only print the -l part of --libs

Install directories gnome-libs was configured to
  --prefix  --exec-prefix  --bindir  --sbindir  --libexecdir  --datadir
  --sysconfdir  --sharedstatedir  --localstatedir  --libdir  --infodir
  --mandir  --includedir

Known values for LIBRARY are:

    glib	(calls glib-config)
    idl         (to be used with orbit-idl)
    gnome
    gnomeui
    gnorba
    gtk		(calls gtk-config)
    gtkxmhtml	(only --libs)
    zvt		(only --libs)

If LIBRARY is none of these,
    
    ${libdir}/<LIBRARY>Conf.sh

is looked in for the necessary information.  Those currently installed 
appear to be:

EOF

    conf_shs=`cd ${libdir}; echo *Conf.sh`

    if test "x$conf_shs" = x || test "x$conf_shs" = 'x*Conf.sh'; then
	echo "    <NONE>"
    else
	# gnomeConf.sh is a placebo, in case the `echo' turns up some nasties
	set gnomeConf.sh $conf_shs

	for i
	do
	    case "$i" in
	    gnomeConf.sh) 
		# either the placebo or installed file, it doesn't matter
		# `gnome' is handled as a special case already
		;;
	    *Conf.sh) 
		# strip out the trailing Conf.sh
		echo "    $i" | sed -e 's/Conf\.sh$//'
		;;
	    *)
		# should not happen
		echo "*** ERROR: What is this? $i"
		exit_code=2
		;;
	    esac
	done
    fi

    exit $exit_code
}

if test $# -eq 0; then
    usage 1
fi

cflags=false
libs_L=false
libs_l=false

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

    case $1 in
    --version)
	echo gnome-libs 1.0.8
	exit 0
	;;
    --exec-prefix)
	echo $exec_prefix
	exit 0
	;;
    --prefix)
	echo $prefix
	exit 0
	;;
    --*dir)
	dirname=\$`echo $1 | sed -e 's,^--,,'`
	dirname=`eval echo $dirname`
	test -z "$dirname" && exit 1
	echo $dirname
	exit 0
	;;
    --help)
	usage 0
	;;
    --cflags)
       	cflags=true
       	;;
    --libs)
       	libs_L=true
	libs_l=true
       	;;
    --libs-only-L)
	libs_L=true
	;;
    --libs-only-l)
	libs_l=true
	;;
    --*)
	usage 1
	;;
    glib)
	the_libs="$the_libs `glib-config --libs`"
	the_flags="$the_flags `glib-config --cflags`"
	;;
    gtk)
	the_libs="$the_libs `gtk-config --libs`"
	the_flags="$the_flags `gtk-config --cflags`"
	;;
    gnome)
       	the_libs="$the_libs -L${libdir} -lgnome -lgnomesupport -L/usr/lib -lesd -laudiofile -lm -L/usr/lib -laudiofile -lm -ldb -L/usr/lib -lglib -ldl"
  	the_flags="$the_flags -I${includedir} -DNEED_GNOMESUPPORT_H -I${pkglibdir}/include -I/usr/X11R6/include -I/usr/lib/glib/include"
	;;
    gnomeui)
	the_libs="$the_libs -L${libdir} -lgnomeui -lart_lgpl -L/usr/lib -lgdk_imlib -L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk -rdynamic -lgmodule -lglib -ldl -lintl -lXext -lX11 -lm -lSM -lICE -L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk -rdynamic -lgmodule -lglib -ldl -lintl -lXext -lX11 -lm -lgnome -lgnomesupport -L/usr/lib -lesd -laudiofile -lm -L/usr/lib -laudiofile -lm -ldb -L/usr/lib -lglib -ldl"
	the_flags="$the_flags -I${includedir} -DNEED_GNOMESUPPORT_H -I${pkglibdir}/include -I/usr/X11R6/include -I/usr/lib/glib/include"
	;;
    gtkxmhtml)
	the_libs="$the_libs -L${libdir} -lgtkxmhtml -lXpm -ljpeg -lpng -lz -lz -lSM -lICE -L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk -rdynamic -lgmodule -lglib -ldl -lintl -lXext -lX11 -lm"
	;;
    gnorba)
        the_libs="$the_libs -L${libdir} -lgnorba -L/usr/lib -lORBitCosNaming -lORBit -lIIOP -lORBitutil -lglib -lm"
	the_flags="$the_flags -I${includedir} -DNEED_GNOMESUPPORT_H -I${pkglibdir}/include -I/usr/lib/glib/include -I/usr/include"
        ;;
    idl)
        the_flags="-I${datadir}/idl"
	;;
    zvt)
	the_libs="$the_libs -L${libdir} -lzvt  -lSM -lICE -L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk -rdynamic -lgmodule -lglib -ldl -lintl -lXext -lX11 -lm"
	;;
    *)
	cnf_sh=${libdir}/${1}Conf.sh
	if test -f ${cnf_sh}; then
	    . ${cnf_sh}
	    up_name=`echo $1 | tr a-z A-Z`
	    cnf_libdir=\$${up_name}_LIBDIR
	    cnf_libs=\$${up_name}_LIBS
	    cnf_flags=\$${up_name}_INCLUDEDIR
	    the_libs="$the_libs `eval echo $cnf_libdir` `eval echo $cnf_libs`"
	    the_flags="$the_flags `eval echo $cnf_flags`"
	else
	    echo Unknown library \`$1\' 1>&2
	fi
	;;
    esac
    shift
done

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

if $libs_L || $libs_l; then
    all_flags="$all_flags $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=
lib_L_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" ;;
    -L*|-R*)
	if $libs_L; then
	    case " $lib_L_flags " in
	    *\ $i\ *) ;;			# already there
	    *) lib_L_flags="$lib_L_flags $i" ;;	# add it to output
	    esac 
	fi;;
    *)
	case " $other_flags " in
	*\ $i\ *) ;;				# already there
	*) other_flags="$other_flags $i" ;;	# add it to output
        esac ;;
    esac
done

ord_libs=
if $libs_l; then
    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
fi

echo $other_flags $lib_L_flags $ord_libs

exit 0
