[Mono-list] Building mono on Win32 with ICU

George Kodinov gkodinov@openlinksw.co.uk
Tue, 04 Nov 2003 14:34:00 +0200


This is a multi-part message in MIME format.
--------------040505050400040509030602
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Hi again,

I've managed to fool mono on win32 to compile w/ ICU the following way :

- I've got the latest ICU Win32 binary from 
(ftp://www-126.ibm.com/pub/icu/2.6.1/icu-2.6.1-Win32_msvc6.zip).

- I've got the latest ICU source from 
(ftp://www-126.ibm.com/pub/icu/2.6.1/icu-2.6.1.zip).

- Installed the binary zip at c:\icu

- Unsing the ICU's 'configure' script I've produced a proto icu-config 
for CygWin

- Changed the names and the location of the ICU libraries from their 
cygwin names to the Win32 native names. This way I got the attached 
icu-config.

- Copied the so produced icu-config to c:\icu\bin and added c:\icu\bin 
to the PATH

- run the mono-build-win32.sh - it detected and compiled the ICU support 
just fine.

For anybody interested I'm attaching the modified icu-config. Just get 
the Win32 binary achive, unzip it to c:\icu, add the icu-config to 
c:\icu\bin and add the c:\icu\bin to your PATH.

It proves handy to copy the three ICU dlls referenced (icudt26l.dll, 
icuuc26.dll and icuin26.dll) to install\lib (next to the glib dlls) so 
you can safely remove the icu installation.

Best Regards,
George Kodinov

George Kodinov wrote:

> Hi,
>
> I've noted that the Win32 build script is not adding the ICU to the mix.
> Does anyone have some experience on building Mono with ICU on windows ?
> Does it worth trying at all ?
>
> Best Regards,
> George Kodinov
> _______________________________________________
> Mono-list maillist  -  Mono-list@lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-list


--------------040505050400040509030602
Content-Type: text/plain;
 name="icu-config"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="icu-config"

#!/bin/sh
## -*-sh-*-
#set -x
# BEGIN of icu-config-top
#******************************************************************************
#   Copyright (C) 1999-2002, International Business Machines
#   Corporation and others.  All Rights Reserved.
# $Revision: 1.1 $
#******************************************************************************
# This script is designed to aid configuration of ICU.
# rpath links a library search path right into the binaries.


### END of icu-config-top

## Zero out prefix.
execprefix=
prefix=


loaddefs()
{

# Following from ./config/mh-cygwin
# Generated automatically from Makefile.inc.in by configure.
## -*-makefile-*-
#******************************************************************************
#   Copyright (C) 1999-2003, International Business Machines
#   Corporation and others.  All Rights Reserved.
# $Revision: 1.35 $
#******************************************************************************
# This Makefile.inc is designed to be included into projects which make use
# of the ICU.

# CONTENTS OF THIS FILE
# 1). Base configuration information and linkage
# 2). Variables giving access to ICU tools
# 3). Host information
# 4). Compiler flags and settings 
# 5). Data Packaging directives
# 6). Include of platform make fragment (mh-* file)

##################################################################
#
#       *1*  base configuration information and linkage
#
##################################################################
# The PREFIX is the base of where ICU is installed.
# Inside this directory you should find  bin, lib, include/unicode, 
# etc.  If ICU is not installed in this directory, you must change the
# following line.  There should exist ${prefix}/include/unicode/utypes.h
# for example.
default_prefix="c:/icu"
if [ "x${prefix}" = "x" ]; then prefix="$default_prefix"; fi
exec_prefix="${prefix}"
libdir="${exec_prefix}/bin"
libexecdir="${exec_prefix}/libexec"
bindir="${exec_prefix}/bin"
datadir="${prefix}/share"
sbindir="${exec_prefix}/sbin"

# about the ICU version
VERSION="2.6.1"
UNICODE_VERSION="4"

# The prefix for ICU libraries, normally 'icu'
ICUPREFIX="icu"
PACKAGE="icu"
LIBICU="${ICUPREFIX}"

# Suffix at the end of libraries. Usually empty.
ICULIBSUFFIX="26"
# ICULIBSUFFIX_VERSION  is non-empty if it is to contain a library
# version. For example, if it is 21, it means libraries are named
# libicuuc21.so for example.

# rpath links a library search path right into the binaries.
## mh-files MUST NOT override RPATHLDFLAGS unless they provide
## equivalent '#SH#' lines for icu-config fixup
default_ENABLE_RPATH="NO"
if [ "x${ENABLE_RPATH}" = "x" ]; then ENABLE_RPATH="$default_ENABLE_RPATH"; fi
RPATHLDFLAGS="${LD_RPATH}${LD_RPATH_PRE}${libdir}"

# icu-config version of above 'if':
case "$ENABLE_RPATH" in 
[yY]*)
	ENABLE_RPATH=YES
	RPATHLDFLAGS="${LD_RPATH}${LD_RPATH_PRE}${libdir}"
	;;

[nN]*)
	ENABLE_RPATH=NO
	RPATHLDFLAGS=""
	;;

*)
	echo $0: Unknown --enable-rpath value ${ENABLE_RPATH} 1>&2
	exit 3
	;;
esac

### To link your application with ICU:
# 1. use LDFLAGS, CFLAGS, etc from above
# 2. link with ${ICULIBS}
# 3. optionally, add one or more of:
#    - ${ICULIBS_I18N}    - i18n library, formatting, etc.
#    - ${ICULIBS_LAYOUT}  - ICU layout library. 
#    - ${ICULIBS_USTDIO}  - ICU stdio equivalent library

ICULIBS_COMMON="-l${ICUPREFIX}uc${ICULIBSUFFIX}${ICULIBSUFFIX_VERSION}"
ICULIBS_DATA="-l${ICUPREFIX}dt${ICULIBSUFFIX}${ICULIBSUFFIX_VERSION}l"
ICULIBS_I18N="-l${ICUPREFIX}in${ICULIBSUFFIX}${ICULIBSUFFIX_VERSION}"
ICULIBS_TOOLUTIL="-l${ICUPREFIX}toolutil${ICULIBSUFFIX}${ICULIBSUFFIX_VERSION}"
ICULIBS_CTESTFW="-l${ICUPREFIX}ctestfw${ICULIBSUFFIX}${ICULIBSUFFIX_VERSION}"
ICULIBS_USTDIO="-licuio${ICULIBSUFFIX}${ICULIBSUFFIX_VERSION}"
ICULIBS_OBSOLETE="-l${ICUPREFIX}obsolete${ICULIBSUFFIX}${ICULIBSUFFIX_VERSION}"
ICULIBS_LAYOUT="-l${ICUPREFIX}le${ICULIBSUFFIX}${ICULIBSUFFIX_VERSION}"
ICULIBS_LAYOUTEX="-l${ICUPREFIX}lx${ICULIBSUFFIX}${ICULIBSUFFIX_VERSION}"
ICULIBS_BASE="${LIBS} -L${libdir}"

# for icu-config to test with
ICULIBS_COMMON_LIB_NAME="${LIBICU}uc${ICULIBSUFFIX}${ICULIBSUFFIX_VERSION}.${SO}"

# ICULIBS is the set of libraries your application should link
# with usually. Many applications will want to add ${ICULIBS_I18N} as well. 
ICULIBS="${ICULIBS_BASE} ${ICULIBS_I18N} ${ICULIBS_COMMON} ${ICULIBS_DATA} "
#ICULIBS="${ICULIBS_BASE} ${ICULIBS_COMMON} ${ICULIBS_DATA} "

##################################################################
#
#       *2*  access to ICU tools
#
##################################################################
# Environment variable to set a runtime search path
#   (Overridden when necessary in -mh files)
LDLIBRARYPATH_ENVVAR="LD_LIBRARY_PATH"

# Access to important ICU tools.
# Use as follows:  ${INVOKE} ${GENRB} arguments .. 
INVOKE="${LDLIBRARYPATH_ENVVAR}=${libdir}:$$${LDLIBRARYPATH_ENVVAR} ${LEAK_CHECKER}"
GENCCODE="${sbindir}/genccode"
GENCMN="${sbindir}/gencmn"
GENRB="${bindir}/genrb"
PKGDATA="${bindir}/pkgdata"

##################################################################
#
#       *3*  Information about the host
#
##################################################################

# Information about the host that 'configure' was run on.
host="i686-pc-cygwin"
host_alias="i686-pc-cygwin"
host_cpu="i686"
host_vendor="pc"
host_os="cygwin"
# Our platform canonical name (as determined by configure)
# this is a #define value (i.e. U_XXXX or XXXX)
platform="U_CYGWIN"

##################################################################
#
#       *4*  compiler flags and misc. options
#
##################################################################
AIX_SHLIB="makeC++SharedLib_r"
AR="/usr/bin/ar"
CC="gcc -mno-cygwin"
CFLAGS="-g ${THREADSCFLAGS} "
CPP="cpp -P -C"
CPPFLAGS="${THREADSCPPFLAGS} ${LIBCPPFLAGS} -I${prefix}/include"
CXX="c++ -mno-cygwin"
CXXFLAGS="-g ${THREADSCXXFLAGS} "
DEFAULT_MODE="dll"
DEFS="-DHAVE_CONFIG_H "
FFLAGS=""
INSTALL="/usr/bin/install -c"
INSTALL_DATA="${INSTALL} -m 644"
INSTALL_PROGRAM="${INSTALL}"
INSTALL_SCRIPT="${INSTALL_PROGRAM}"
LDFLAGS="${RPATHLDFLAGS}"
LIBS="-lpthread -lm  "
LIB_M=""
LIB_VERSION="26.1"
LIB_VERSION_MAJOR="26"
MKINSTALLDIRS="${SHELL} ${pkgdatadir}/mkinstalldirs"
RANLIB="ranlib"
RMV="rm -rf"
SHELL="/bin/sh"
SHLIB_c="${CC} ${DEFS} ${CPPFLAGS} ${CFLAGS} ${LDFLAGS} -shared"
SHLIB_cc="${CXX} ${DEFS} ${CPPFLAGS} ${CXXFLAGS} ${LDFLAGS} -shared"
U_IS_BIG_ENDIAN="0"
includedir="${prefix}/include"
infodir="${prefix}/info"
ld_rpath_suf=""
localstatedir="${prefix}/var"
mandir="${prefix}/man"
oldincludedir="/usr/include"
program_transform_name="s,x,x,"
sharedstatedir="${prefix}/com"
sysconfdir="${prefix}/etc"
INSTALL_L="${INSTALL_DATA}"

##################################################################
#
#       *5* packaging options and directories
#
##################################################################

pkgdatadir="${datadir}/${PACKAGE}${ICULIBSUFFIX}/${VERSION}"
pkglibdir="${libdir}/${PACKAGE}${ICULIBSUFFIX}/${VERSION}"

# The basename of the ICU data file (i.e. icudt21b )
ICUDATA_NAME="icudt26l"

# Defaults for pkgdata's mode and directories
# The default data dir changes depending on what packaging mode 
# is being used
PKGDATA_MODE="dll"
ICUDATA_DIR="${pkgdatadir}"
ICUPKGDATA_DIR="${ICUDATA_DIR}"
ICUDATA_DIR="${pkgdatadir}"
ICUPKGDATA_DIR="${libdir}"
ICUDATA_DIR="${pkglibdir}"
ICUPKGDATA_DIR="${ICUDATA_DIR}"

##################################################################
#
#       *6* Inclusion of platform make fragment (mh-* file)
#
##################################################################
# The mh- file ("make fragment") for the platform is included here. 
# It may override the above settings.
# It is put last so that the mh-file can override anything.

## -*-makefile-*-
## Cygwin-specific setup
## Copyright (c) 2001-2003, International Business Machines Corporation and
## others. All Rights Reserved.
##
## $Id: mh-cygwin,v 1.13 2003/08/08 23:53:43 grhoten-oss Exp $

## Commands to generate dependency files
GEN_DEPS_c="${CC} -E -MM ${DEFS} ${CPPFLAGS}"
GEN_DEPS_cc="${CXX} -E -MM ${DEFS} ${CPPFLAGS}"

## Flags for position independent code
SHAREDLIBCFLAGS=""
SHAREDLIBCXXFLAGS=""
SHAREDLIBCPPFLAGS="-DPIC"

## Additional flags when building libraries and with threads
LIBCPPFLAGS="-D_REENTRANT"
THREADSCPPFLAGS="-D_REENTRANT"

## Commands to make a shared library
SHLIB_c="${CC} ${DEFS} ${CPPFLAGS} ${CFLAGS} ${LDFLAGS} -shared"
SHLIB_cc="${CXX} ${DEFS} ${CPPFLAGS} ${CXXFLAGS} ${LDFLAGS} -shared"

## Compiler switch to embed a runtime search path
LD_RPATH=""
LD_RPATH_PRE="-Wl,-rpath,"

## Compiler switch to embed a library name
LD_SONAME="-Wl,-soname -Wl,${MIDDLE_SO_TARGET}"

## Shared object suffix
SO="dll"
## Non-shared intermediate object suffix
STATIC_O="o"
#LIBICU = ${ICUPREFIX}

## Link commands to link to ICU libs
LIBICUDT="-L${top_builddir}/stubdata/ -l${ICUPREFIX}data${ICULIBSUFFIX}${SO_TARGET_VERSION_MAJOR}"
LIBICUUC="-L${top_builddir}/common/ -l${ICUPREFIX}uc${ICULIBSUFFIX}${SO_TARGET_VERSION_MAJOR}"
LIBICUI18N="-L${top_builddir}/i18n/ -l${ICUPREFIX}i18n${ICULIBSUFFIX}${SO_TARGET_VERSION_MAJOR}"
LIBICULE="-L${top_builddir}/layout/ -l${ICUPREFIX}le${ICULIBSUFFIX}${SO_TARGET_VERSION_MAJOR}"
LIBICULX="-L${top_builddir}/layoutex/ -l${ICUPREFIX}lx${ICULIBSUFFIX}${SO_TARGET_VERSION_MAJOR}"
LIBCTESTFW="-L${top_builddir}/tools/ctestfw/ -l${ICUPREFIX}ctestfw${ICULIBSUFFIX}${SO_TARGET_VERSION_MAJOR}"
LIBICUTOOLUTIL="-L${top_builddir}/tools/toolutil/ -l${ICUPREFIX}toolutil${ICULIBSUFFIX}${SO_TARGET_VERSION_MAJOR}"
LIBUSTDIO="-L${top_builddir}/extra/ustdio/ -l${ICUPREFIX}io${ICULIBSUFFIX}${SO_TARGET_VERSION_MAJOR}"

## Compilation rules

## Dependency rules

## Versioned target for a shared library.
## FINAL_SO_TARGET=  ${basename $(SO_TARGET})${SO_TARGET_VERSION}${ICULIBSUFFIX}.${SO}
## MIDDLE_SO_TARGET= ${basename $(SO_TARGET})${SO_TARGET_VERSION_MAJOR}${ICULIBSUFFIX}.${SO}

## Versioned libraries rules

##  Bind internal references

# LDflags that pkgdata will use
BIR_LDFLAGS="-Wl,-Bsymbolic"

# CPPflags for genccode/gencmn
BIR_CPPFLAGS="-DU_HAVE_BIND_INTERNAL_REFERENCES"

# Dependencies [i.e. map files] for the final library
BIR_DEPS=""

# Environment variable to set a runtime search path
LDLIBRARYPATH_ENVVAR="PATH"

## End Cygwin-specific setup

## -*-sh-*-
## BEGIN of icu-config-bottom. $Revision: 1.9 $
## Copyright (c) 2002-2003, 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-ustdio       Print ICU ustdio 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-ustdio)
	    echo $ICULIBS_USTDIO
	    ;;

	--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)
	    case "$PKGDATA_MODE" in
		
		common)
		    echo "$pkgdatadir"
		    ;;

		dll)
		    echo "$libdir"
		    ;;

		*)
		    echo "## ${ME} Unknown pkgdata mode $PKGDATA_MODE" 1>&2
		    exit 4
		    ;;
	    esac
	    ;;
	    
	--icudatadir)
	    echo $pkgdatadir
	    ;;

	--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

# Rebuilt on Tue Nov 4 12:14:40 FLEST 2003

--------------040505050400040509030602--