## -*-sh-*-
## BEGIN of icu-config-bottom.
## Copyright (c) 2002-2007, International Business Machines Corporation and
## others. All Rights Reserved.

ICUUC_FILE=${libdir}/${ICULIBS_COMMON_LIB_NAME}
    
#  echo ENABLE RPATH $ENABLE_RPATH and RPATHLDFLAGS=${RPATH_LDFLAGS}
if [ "x$PKGDATA_MODE" = "x" ]; then
    PKGDATA_MODE=dll
fi

}

## The actual code of icu-config goes here.

ME=`basename "$0"`

allflags()
{
    echo "  --bindir               Print binary directory path (bin)"
    echo "  --cc                   Print C compiler used [CC]"
    echo "  --cflags               Print C compiler flags [CFLAGS]"
    echo "  --cflags-dynamic       Print additional C flags for"
    echo "                             building shared libraries."
    echo "  --cppflags             Print C Preprocessor flags [CPPFLAGS]"
    echo "  --cppflags-dynamic     Print additional C Preprocessor flags for"
    echo "                             building shared libraries."
    echo "  --cppflags-searchpath  Print only -I include directives  (-Iinclude)"
    echo "  --cxx                  Print C++ compiler used [CXX]"
    echo "  --cxxflags             Print C++ compiler flags [CXXFLAGS]"
    echo "  --cxxflags-dynamic     Print additional C++ flags for"
    echo "                             building shared libraries."
    echo "  --detect-prefix        Attempt to detect prefix based on PATH"
    echo "  --exec-prefix          Print prefix for executables (/bin)"
    echo "  --exists               Return with 0 status if ICU exists else fail"
    echo "  --help, -?, --usage    Print this message"
    echo "  --icudata              Print shortname of ICU data file (icudt21l)"
    echo "  --icudata-install-dir  Print path to install data to - use as --install option to pkgdata(1)"
    echo "  --icudata-mode         Print default ICU pkgdata mode (dll) - use as --mode option to pkgdata(1)."
    echo "  --icudatadir           Print path to packaged archive data. Can set as [ICU_DATA]"
    echo "  --invoke               Print commands to invoke an ICU program"
    echo "  --invoke=<prog>        Print commands to invoke an ICU program named <prog> (ex: genrb)" 
    echo "  --ldflags              Print -L search path and -l libraries to link with ICU [LDFLAGS].  This is for the data, uc (common), and i18n libraries only.  "
    echo "  --ldflags-layout       Print ICU layout engine link directive. Use in addition to --ldflags"
    echo "  --ldflags-libsonly     Same as --ldflags, but only the -l directives"
    echo "  --ldflags-searchpath   Print only -L (search path) directive"
    echo "  --ldflags-system       Print only system libs ICU links with (-lpthread, -lm)"
    echo "  --ldflags-icuio        Print ICU icuio link directive. Use in addition to --ldflags "
    echo "  --ldflags-obsolete     Print ICU obsolete link directive. Use in addition to --ldflags. (requires icuapps/obsolete to be built and installed.) "
    echo "  --mandir               Print manpage (man) path"
    echo "  --prefix               Print PREFIX to icu install (/usr/local)"
    echo "  --prefix=XXX           Set prefix to XXX for remainder of command"
    echo "  --sbindir              Print system binary path (sbin) "
    echo "  --shared-datadir       Print shared data (share) path. This is NOT the ICU data dir."
    echo "  --shlib-c              Print the command to compile and build C shared libraries with ICU"
    echo "  --shlib-cc             Print the command to compile and build C++ shared libraries with ICU"
    echo "  --sysconfdir           Print system config (etc) path"
    echo "  --unicode-version      Print version of Unicode data used in ICU ($UNICODE_VERSION)"
    echo "  --version              Print ICU version ($VERSION)"
    echo "  --incfile              Print path to Makefile.inc (for -O option of pkgdata)"
}

## Print the normal usage message
shortusage()
{
    echo "usage: ${ME} " `allflags | cut -c-25 | sed -e 's%.*%[ & ]%'`
}


usage()
{
    echo "${ME}: icu-config: ICU configuration helper script"
    echo
    echo "The most commonly used options will be --cflags, --cxxflags, --cppflags, and --ldflags."
    echo 'Example (in make):   CPFLAGS=$(shell icu-config --cppflags)'
    echo '                     LDFLAGS=$(shell icu-config --ldflags)'
    echo "                     (etc).."
    echo
    echo "Usage:"
    allflags

    echo 
    echo " [Brackets] show MAKE variable equivalents,  (parenthesis) show example output"
    echo
    echo "Copyright (c) 2002, International Business Machines Corporation and others. All Rights Reserved."
}

## Check the sanity of current variables
sanity()
{
    if [ ! -f ${ICUUC_FILE} ];
    then
	echo "### $ME: Can't find ${ICUUC_FILE} - ICU prefix is wrong."  1>&2
	echo "###      Try the --prefix= or --exec-prefix= options " 1>&2
	echo "###      or --detect-prefix"
	echo "### $ME: Exitting." 1>&2
	exit 2
    fi
}

## Main starts here.

if [ $# -lt 1 ]; then
    shortusage
    exit 1
fi


# Load our variables from autoconf
# ALWAYS load twice because of dependencies
loaddefs
loaddefs
sanity

while [ $# -gt 0 ];
do
    arg="$1"
    var=`echo $arg | sed -e 's/^[^=]*=//'`
#    echo "### processing $arg" 1>&2
    case "$arg" in

        # undocumented.
	--debug)
	    set -x
	    ;;

        --so)
            echo $SO
            ;;

	--bindir)
	    echo $bindir
	    ;;

	--libdir)
	    echo $libdir
	    ;;

	--exists)
	    sanity
	    ;;

	--sbindir)
	    echo $sbindir
	    ;;

	--invoke=*)
	    QUOT="\""
            CMD="${var}"

            # If it's not a locally executable command (1st choice) then 
            # search for it in the ICU directories. 
            if [ ! -x ${CMD} ]; then
                if [ -x ${bindir}/${var} ]; then
                    CMD="${bindir}/${var}"
                fi
                if [ -x ${sbindir}/${var} ]; then
                    CMD="${sbindir}/${var}"
                fi
            fi

	    echo "env ${QUOT}${LDLIBRARYPATH_ENVVAR}=${libdir}:"'${'"${LDLIBRARYPATH_ENVVAR}"'}'${QUOT} ${CMD}
	    ;;

	--invoke)
	    QUOT="\""
	    echo "env ${QUOT}${LDLIBRARYPATH_ENVVAR}=${libdir}:"'${'"${LDLIBRARYPATH_ENVVAR}"'}'${QUOT}
	    ;;

	--cflags)
	    echo $CFLAGS
	    ;;
	    
	--cc)
	    echo $CC
	    ;;
	    
	--cxx)
	    echo $CXX
	    ;;

	--cxxflags)
	    echo $CXXFLAGS
	    ;;

	--cppflags)
	    # Don't echo the -I. - it's unneeded.
	    echo $CPPFLAGS | sed -e 's/-I. //'
	    ;;

	--cppflags-searchpath)
	    echo -I${prefix}/include
	    ;;

	--cppflags-dynamic)
	    echo $SHAREDLIBCPPFLAGS
	    ;;

	--cxxflags-dynamic)
	    echo $SHAREDLIBCXXFLAGS
	    ;;

	--cflags-dynamic)
	    echo $SHAREDLIBCFLAGS
	    ;;

	--ldflags-system)
	    echo $LIBS
	    ;;

	--ldflags)
	    echo $LDFLAGS $ICULIBS $LIBS 
# $RPATH_LDFLAGS
	    ;;

	--ldflags-libsonly)
	    echo $ICULIBS_I18N $ICULIBS_COMMON $ICULIBS_DATA 
	    ;;

	--ldflags-icuio)
	    echo $ICULIBS_ICUIO
	    ;;

	--ldflags-obsolete)
	    echo $ICULIBS_OBSOLETE
	    ;;

	--ldflags-toolutil)
	    echo $ICULIBS_TOOLUTIL
	    ;;

	--ldflags-layout)
	    echo $ICULIBS_LAYOUT $ICULIBS_LAYOUTEX
	    ;;

	--ldflags-searchpath)
	    echo -L${libdir}
	    ;;

	--detect-prefix)
	    HERE=`echo $0 | sed -e "s/$ME//g"`
	    if [ -f $HERE/../lib/${ICULIBS_COMMON_LIB_NAME} ]; then
		prefix=$HERE/..
		echo "## Using --prefix=${prefix}" 1>&2
	    fi
	    loaddefs
	    loaddefs
	    sanity
	    ;;

	--exec-prefix)
	    echo $exec_prefix
	    ;;

	--prefix)
	    echo $prefix
	    ;;

	--prefix=*)
	    prefix=$var
	    loaddefs
	    loaddefs
	    sanity
	    ;;

	--sysconfdir)
	    echo $sysconfdir
	    ;;

	--mandir)
	    echo $mandir
	    ;;

	--shared-datadir)
	    echo $datadir
	    ;;

        --incfile)
	    echo $pkglibdir/Makefile.inc
	    ;;

	--icudata)
	    echo $ICUDATA_NAME
	    ;;

	--icudata-mode)
	    echo $PKGDATA_MODE
	    ;;

	--icudata-install-dir)
            echo $ICUPKGDATA_DIR
	    ;;
	    
	--icudatadir)
	    echo $ICUDATA_DIR
	    ;;

	--shlib-c)
	    echo $SHLIB_c
	    ;;

	--shlib-cc)
	    echo $SHLIB_cc
	    ;;

	--version)
            echo $VERSION
            ;;

        --unicode-version)
            echo $UNICODE_VERSION
            ;;

	--help)
	    usage
	    exit 0
	    ;;

	--usage)
	    usage
	    exit 0
	    ;;

#	--enable-rpath=*)
#	    ENABLE_RPATH=$var
#	    loaddefs
#	    ;;

	-?)
	    usage
	    exit 0
	    ;;

        *)
	    echo ${ME}: ERROR Unknown Option $arg 1>&2
            echo 1>&2
            shortusage 1>&2
	    echo "### $ME: Exitting." 1>&2
            exit 1;
            ;;
    esac
    shift
done

# Check once before we quit (will check last used prefix)
sanity
## END of icu-config-bottom

exit 0

