This commit was manufactured by cvs2svn to create tag
'release-2-8-d03'.
X-SVN-Rev: 14405
diff --git a/.cvsignore b/.cvsignore
new file mode 100644
index 0000000..45e1a6b
--- /dev/null
+++ b/.cvsignore
@@ -0,0 +1,5 @@
+build
+*-stamp
+bin
+include
+lib
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..b482bf4
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,67 @@
+* text=auto !eol
+
+*.c text !eol
+*.cc text !eol
+*.classpath text !eol
+*.cpp text !eol
+*.css text !eol
+*.dsp text !eol
+*.dsw text !eol
+*.filters text !eol
+*.h text !eol
+*.htm text !eol
+*.html text !eol
+*.in text !eol
+*.java text !eol
+*.launch text !eol
+*.mak text !eol
+*.md text !eol
+*.MF text !eol
+*.mk text !eol
+*.pl text !eol
+*.pm text !eol
+*.project text !eol
+*.properties text !eol
+*.py text !eol
+*.rc text !eol
+*.sh text eol=lf
+*.sln text !eol
+*.stub text !eol
+*.txt text !eol
+*.ucm text !eol
+*.vcproj text !eol
+*.vcxproj text !eol
+*.xml text !eol
+*.xsl text !eol
+*.xslt text !eol
+Makefile text !eol
+configure text !eol
+LICENSE text !eol
+README text !eol
+
+*.bin -text
+*.brk -text
+*.cnv -text
+*.icu -text
+*.res -text
+*.nrm -text
+*.spp -text
+*.tri2 -text
+
+source/data/brkitr/thaidict.brk -text
+source/data/unidata/UCARules.txt -text
+source/samples/ucnv/data02.bin -text
+source/test/testdata/importtest.bin -text
+source/test/testdata/iscii.bin -text
+source/test/testdata/testdata_icu26_testtypes.res -text
+source/test/testdata/testdata_icu26e_testtypes.res -text
+source/test/testdata/uni-text.bin -text
+
+# The following file types are stored in Git-LFS.
+*.jar filter=lfs diff=lfs merge=lfs -text
+*.dat filter=lfs diff=lfs merge=lfs -text
+*.zip filter=lfs diff=lfs merge=lfs -text
+*.gz filter=lfs diff=lfs merge=lfs -text
+*.bz2 filter=lfs diff=lfs merge=lfs -text
+*.gif filter=lfs diff=lfs merge=lfs -text
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..d990ddb
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,339 @@
+/*-stamp
+/bin
+/build
+debian/*.debhelper
+debian/*.substvars
+debian/*files
+debian/*libicu[0-9]*
+debian/control
+debian/docs
+debian/icu
+debian/icu-data
+debian/icu-doc
+debian/icu-i18ndata
+debian/icu-locales
+debian/icu.postinst
+debian/icu.prerm
+debian/libicu-dev
+debian/postinst
+debian/prerm
+debian/tmp
+/include
+/lib
+source/Makefile
+source/README
+source/allinone/*.ncb
+source/allinone/*.opt
+source/allinone/*.suo
+source/allinone/all/*.plg
+source/common/*.ao
+source/common/*.d
+source/common/*.plg
+source/common/Debug
+source/common/Makefile
+source/common/Release
+source/common/icucfg.h
+source/common/libicu*.*
+source/common/unicode/platform.h
+source/config.cache
+source/config.log
+source/config.status
+source/config/Makefile.inc
+source/config/icu-config
+source/data/*.plg
+source/data/Makefile
+source/data/icupkg.inc
+source/data/out
+source/extra/Makefile
+source/extra/scrptrun/Makefile
+source/extra/uconv/*.d
+source/extra/uconv/Debug
+source/extra/uconv/Makefile
+source/extra/uconv/Release
+source/extra/uconv/pkgdata.inc
+source/extra/uconv/pkgdatain.txt
+source/extra/uconv/resources/*.res
+source/extra/uconv/uconv
+source/extra/uconv/uconv.1
+source/extra/uconv/uconv.ncb
+source/extra/uconv/uconv.opt
+source/extra/uconv/uconv.plg
+source/extra/uconv/uconvmsg
+source/extra/ustdio/*.d
+source/extra/ustdio/Debug
+source/extra/ustdio/Makefile
+source/extra/ustdio/Release
+source/extra/ustdio/libicuio.*
+source/i18n/*.ao
+source/i18n/*.d
+source/i18n/*.plg
+source/i18n/Debug
+source/i18n/Makefile
+source/i18n/Release
+source/i18n/libicu*.*
+source/icudefs.mk
+source/layout/*.d
+source/layout/*.pdb
+source/layout/Debug
+source/layout/Makefile
+source/layout/Release
+source/layout/libicule.*
+source/layout/tmp
+source/layoutex/*.d
+source/layoutex/*.pdb
+source/layoutex/Debug
+source/layoutex/Makefile
+source/layoutex/Release
+source/layoutex/libicu*.*
+source/samples/Makefile
+source/samples/cal/*.d
+source/samples/cal/*.pdb
+source/samples/cal/Debug
+source/samples/cal/Makefile
+source/samples/cal/Release
+source/samples/cal/icucal
+source/samples/date/*.d
+source/samples/date/*.pdb
+source/samples/date/Debug
+source/samples/date/Makefile
+source/samples/date/Release
+source/samples/date/icudate
+source/samples/layout/*.d
+source/samples/layout/*.pdb
+source/samples/layout/.#*
+source/samples/layout/Debug
+source/samples/layout/Makefile
+source/samples/layout/Release
+source/samples/layout/tmp
+source/stubdata/*.ao
+source/stubdata/*.d
+source/stubdata/*.plg
+source/stubdata/Debug
+source/stubdata/Makefile
+source/stubdata/Release
+source/stubdata/libicu*.*
+source/stubdata/stubdatabuilt.txt
+source/test/Makefile
+source/test/cintltst/*.d
+source/test/cintltst/*.plg
+source/test/cintltst/Debug
+source/test/cintltst/Makefile
+source/test/cintltst/Release
+source/test/cintltst/cintltst
+source/test/collperf/Makefile
+source/test/ieeetest/*.d
+source/test/ieeetest/*.plg
+source/test/ieeetest/Debug
+source/test/ieeetest/Makefile
+source/test/ieeetest/Release
+source/test/ieeetest/ieeetest
+source/test/intltest/*.d
+source/test/intltest/*.plg
+source/test/intltest/Debug
+source/test/intltest/Makefile
+source/test/intltest/Release
+source/test/intltest/intltest
+source/test/iotest/*.d
+source/test/iotest/*.ncb
+source/test/iotest/*.opt
+source/test/iotest/*.plg
+source/test/iotest/Debug
+source/test/iotest/Makefile
+source/test/iotest/Release
+source/test/letest/*.d
+source/test/letest/*.pdb
+source/test/letest/.#*
+source/test/letest/Debug
+source/test/letest/Makefile
+source/test/letest/Release
+source/test/letest/tmp
+source/test/testdata/Makefile
+source/test/testdata/out
+source/test/testmap/*.d
+source/test/testmap/Debug
+source/test/testmap/Makefile
+source/test/testmap/Release
+source/test/testmap/testmap
+source/test/testmap/testmap.plg
+source/test/thaitest/Makefile
+source/test/threadtest/Makefile
+source/tools/*.d
+source/tools/*.pdb
+source/tools/*.plg
+source/tools/Debug
+source/tools/Makefile
+source/tools/Release
+source/tools/ctestfw/*.d
+source/tools/ctestfw/*.pdb
+source/tools/ctestfw/Debug
+source/tools/ctestfw/Makefile
+source/tools/ctestfw/Release
+source/tools/ctestfw/libicuctestfw*
+source/tools/ctestfw/pkgdata
+source/tools/ctestfw/tmp
+source/tools/dumpce/*.css
+source/tools/dumpce/*.d
+source/tools/dumpce/*.html
+source/tools/dumpce/*.o
+source/tools/dumpce/Makefile
+source/tools/dumpce/dumpce
+source/tools/genbrk/*.d
+source/tools/genbrk/*.pdb
+source/tools/genbrk/*.plg
+source/tools/genbrk/Debug
+source/tools/genbrk/Makefile
+source/tools/genbrk/Release
+source/tools/genbrk/genbrk
+source/tools/genccode/*.d
+source/tools/genccode/*.pdb
+source/tools/genccode/*.plg
+source/tools/genccode/Debug
+source/tools/genccode/Makefile
+source/tools/genccode/Release
+source/tools/genccode/genccode
+source/tools/genccode/genccode.8
+source/tools/genccode/tmp
+source/tools/gencmn/*.d
+source/tools/gencmn/*.pdb
+source/tools/gencmn/*.plg
+source/tools/gencmn/Debug
+source/tools/gencmn/Makefile
+source/tools/gencmn/Release
+source/tools/gencmn/decmn
+source/tools/gencmn/decmn.[0-9]
+source/tools/gencmn/decmn_win32_Debug
+source/tools/gencmn/decmn_win32_Release
+source/tools/gencmn/gencmn
+source/tools/gencmn/gencmn.[0-9]
+source/tools/gencnval/*.d
+source/tools/gencnval/*.pdb
+source/tools/gencnval/Debug
+source/tools/gencnval/Makefile
+source/tools/gencnval/Release
+source/tools/gencnval/convrtrs.txt.[0-9]
+source/tools/gencnval/gencnval
+source/tools/gencnval/gencnval.[0-9]
+source/tools/gencnval/tmp
+source/tools/gennames/*.d
+source/tools/gennames/*.pdb
+source/tools/gennames/Debug
+source/tools/gennames/Makefile
+source/tools/gennames/Release
+source/tools/gennames/gennames
+source/tools/gennames/gennames.8
+source/tools/gennames/tmp
+source/tools/gennorm/*.d
+source/tools/gennorm/*.pdb
+source/tools/gennorm/*.plg
+source/tools/gennorm/Debug
+source/tools/gennorm/Makefile
+source/tools/gennorm/Release
+source/tools/gennorm/gennorm
+source/tools/gennorm/gennorm.[0-9]
+source/tools/gennorm/tmp
+source/tools/genpname/*.d
+source/tools/genpname/*.pdb
+source/tools/genpname/*.plg
+source/tools/genpname/Debug
+source/tools/genpname/Makefile
+source/tools/genpname/Release
+source/tools/genpname/genpname
+source/tools/genprops/*.d
+source/tools/genprops/*.pdb
+source/tools/genprops/Debug
+source/tools/genprops/Makefile
+source/tools/genprops/Release
+source/tools/genprops/genprops
+source/tools/genprops/genprops.[0-9]
+source/tools/genprops/tmp
+source/tools/genrb/*.d
+source/tools/genrb/*.pdb
+source/tools/genrb/*.plg
+source/tools/genrb/Debug
+source/tools/genrb/Makefile
+source/tools/genrb/Release
+source/tools/genrb/derb
+source/tools/genrb/derb.[0-9]
+source/tools/genrb/derb_*
+source/tools/genrb/genjp/Debug
+source/tools/genrb/genjp/genjp.ncb
+source/tools/genrb/genjp/genjp.opt
+source/tools/genrb/genjp/genjp.plg
+source/tools/genrb/genjp/genjp.positions
+source/tools/genrb/genrb
+source/tools/genrb/genrb.[0-9]
+source/tools/genrb/tmp
+source/tools/gensprep/*.d
+source/tools/gensprep/*.pdb
+source/tools/gensprep/Debug
+source/tools/gensprep/Makefile
+source/tools/gensprep/Release
+source/tools/gensprep/gensprep
+source/tools/gensprep/gensprep.8
+source/tools/gensprep/gensprep.plg
+source/tools/gentest/*.d
+source/tools/gentest/*.pdb
+source/tools/gentest/Debug
+source/tools/gentest/Makefile
+source/tools/gentest/Release
+source/tools/gentest/gentest
+source/tools/gentest/pkgdata
+source/tools/gentest/tmp
+source/tools/gentz/*.d
+source/tools/gentz/*.pdb
+source/tools/gentz/*.plg
+source/tools/gentz/Debug
+source/tools/gentz/Makefile
+source/tools/gentz/Release
+source/tools/gentz/gentz
+source/tools/gentz/gentz.[0-9]
+source/tools/gentz/tmp
+source/tools/genuca/*.d
+source/tools/genuca/*.pdb
+source/tools/genuca/Debug
+source/tools/genuca/Makefile
+source/tools/genuca/Release
+source/tools/genuca/genuca
+source/tools/genuca/genuca.8
+source/tools/genuca/tmp
+source/tools/icupkg.inc
+source/tools/icuswap/*.d
+source/tools/icuswap/*.ncb
+source/tools/icuswap/*.opt
+source/tools/icuswap/*.pdb
+source/tools/icuswap/*.plg
+source/tools/icuswap/Debug
+source/tools/icuswap/Makefile
+source/tools/icuswap/Release
+source/tools/icuswap/icuswap
+source/tools/icuswap/icuswap.[0-9]
+source/tools/icuswap/tmp
+source/tools/makeconv/*.d
+source/tools/makeconv/*.pdb
+source/tools/makeconv/*.plg
+source/tools/makeconv/Debug
+source/tools/makeconv/Makefile
+source/tools/makeconv/Release
+source/tools/makeconv/makeconv
+source/tools/makeconv/makeconv.[0-9]
+source/tools/makeconv/tmp
+source/tools/pkgdata/*.d
+source/tools/pkgdata/*.ncb
+source/tools/pkgdata/*.opt
+source/tools/pkgdata/*.pdb
+source/tools/pkgdata/Debug
+source/tools/pkgdata/Makefile
+source/tools/pkgdata/Release
+source/tools/pkgdata/icupkg.inc
+source/tools/pkgdata/pkgdata
+source/tools/pkgdata/pkgdata.[0-9]
+source/tools/pkgdata/tmp
+source/tools/tmp*
+source/tools/toolutil/*.d
+source/tools/toolutil/*.pdb
+source/tools/toolutil/Debug
+source/tools/toolutil/Makefile
+source/tools/toolutil/Release
+source/tools/toolutil/libicu*
+source/tools/toolutil/pkgdata
+source/tools/toolutil/tmp
diff --git a/as_is/os390/unpax-icu.sh b/as_is/os390/unpax-icu.sh
new file mode 100755
index 0000000..f5c7fdc
--- /dev/null
+++ b/as_is/os390/unpax-icu.sh
@@ -0,0 +1,127 @@
+#!/bin/sh
+# Copyright (C) 2001 - 2003, International Business Machines Corporation.
+# All Rights Reserved.
+#
+# Authors:
+# Ami Fixler
+# Steven R. Loomis <srl@jtcsv.com>
+# George Rhoten
+#
+# Shell script to unpax ICU and convert the files to an EBCDIC codepage.
+# After extracting to EBCDIC, binary files are re-extracted without the
+# EBCDIC conversion, thus restoring them to original codepage.
+#
+# Set the following variable to the list of binary file suffixes (extensions)
+
+#binary_suffixes='ico ICO bmp BMP jpg JPG gif GIF brk BRK'
+#ICU specific binary files
+binary_suffixes='brk BRK bin BIN res RES cnv CNV dat DAT icu ICU spp SPP'
+
+usage()
+{
+ echo "Enter archive filename as a parameter: $0 icu-archive.tar [strip]"
+ echo "(strip is an option to remove hex '0D' carraige returns)"
+}
+# first make sure we at least one arg and it's a file we can read
+if [ $# -eq 0 ]; then
+ usage
+ exit
+fi
+if [ ! -r $1 ]; then
+ echo "$1 does not exist or cannot be read."
+ usage
+ exit
+fi
+# set up a few variables
+
+echo ""
+echo "Extracting from $1 ..."
+echo ""
+# extract files while converting them to EBCDIC
+pax -rvf $1 -o to=IBM-1047,from=ISO8859-1
+
+if [ $# -gt 1 ]; then
+ if [ $2 -eq strip ]; then
+ echo ""
+ echo "Stripping hex 0d characters ..."
+ for i in $(pax -f $1 2>/dev/null)
+ do
+ case $i in
+ */)
+ # then this entry is a directory
+ ;;
+ *)
+ # then this entry is NOT a directory
+ tr -d
+ <$i >@@@icu@tmp
+ chmod +w $i
+ rm $i
+ mv @@@icu@tmp $i
+ ;;
+ esac
+ done
+ fi
+fi
+
+echo ""
+echo "Determining binary files ..."
+echo ""
+
+#for dir in `find ./icu -type d \( -name CVS -o -print \)`; do
+# if [ -f $dir/CVS/Entries ]; then
+# binary_files="$binary_files`cat $dir/CVS/Entries | fgrep -- -kb \
+# | cut -d / -f2 | sed -e "s%^%$dir/%" \
+# | sed -e "s%^\./%%" | tr '\n' ' '`"
+# fi
+#done
+#echo "Detecting Unicode files"
+for file in `find icu \( -name \*.txt -print \)`; do
+ bom8=`head -c 3 $file|\
+ od -t x1|\
+ head -n 1|\
+ sed 's/ */ /g'|\
+ cut -f2-4 -d ' '|\
+ tr 'A-Z' 'a-z'`;
+ #Find a converted UTF-8 BOM
+ if test "$bom8" = "57 8b ab"
+ then
+ binary_files="$binary_files $file";
+ fi
+done
+
+for i in $(pax -f $1 2>/dev/null)
+do
+ case $i in
+ */)
+# then this entry is a directory
+ ;;
+ *.*)
+# then this entry has a dot in the filename
+ for j in $binary_suffixes
+ do
+ suf=${i#*.*}
+ if [ "$suf" = "$j" ]
+ then
+ binary_files="$binary_files $i"
+ break
+ fi
+ done
+ ;;
+ *)
+# then this entry does not have a dot in it
+ ;;
+ esac
+done
+
+# now see if a re-extract of binary files is necessary
+if [ ${#binary_files} -eq 0 ]; then
+ echo ""
+ echo "There are no binary files to restore."
+else
+ echo "Restoring binary files ..."
+ echo ""
+ rm $binary_files
+ pax -rvf $1 $binary_files
+fi
+echo ""
+echo "$0 has completed extracting ICU from $1."
diff --git a/as_is/os400/configure b/as_is/os400/configure
new file mode 100755
index 0000000..ad5a61a
--- /dev/null
+++ b/as_is/os400/configure
@@ -0,0 +1,4584 @@
+#! /usr/bin/qsh
+
+# Guess values for system-dependent variables and create Makefiles.
+# Generated automatically using autoconf version 2.13
+# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+
+# Defaults:
+ac_help=
+ac_default_prefix=/usr/local
+# Any additions from configure.in:
+ac_help="$ac_help
+ --enable-strict compile with strict compiler options [default=no]"
+ac_help="$ac_help
+ --enable-64bit-libs build 64-bit libraries [default=yes]"
+ac_help="$ac_help
+ --enable-shared build shared libraries [default=yes]"
+ac_help="$ac_help
+ --enable-static build static libraries [default=no]"
+ac_help="$ac_help
+ --enable-debug build debug libraries [default=no]"
+ac_help="$ac_help
+ --enable-release build release libraries [default=yes]"
+ac_help="$ac_help
+ --enable-renaming add a version suffix to symbols [default=yes]"
+ac_help="$ac_help
+ --enable-rpath use rpath when linking [default is only if necessary]"
+ac_help="$ac_help
+ --enable-threads build ICU with thread safety [default=yes]"
+ac_help="$ac_help
+ --with-iostream=version specify the version of iostream to use (none, old, std, auto) [default=auto]"
+ac_help="$ac_help
+ --enable-extras build ICU extras [default=yes]"
+ac_help="$ac_help
+ --enable-ustdio build ICU's ustdio library [default=yes]"
+ac_help="$ac_help
+ --enable-layout build ICU's layout library [default=yes]"
+ac_help="$ac_help
+ --with-data-packaging=type specify how to package ICU data (files, archive, library, auto) [default=auto]"
+ac_help="$ac_help
+"
+ac_help="$ac_help
+ --with-library-suffix=suffix tag a suffix to the library names [default=]"
+ac_help="$ac_help
+ --enable-tests build ICU tests [default=yes]"
+ac_help="$ac_help
+ --enable-samples build ICU samples [default=yes]
+Additionally, the variable FORCE_LIBS may be set before calling configure. If set, it will REPLACE any automatic list of libraries."
+
+# Initialize some variables set by options.
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+build=NONE
+cache_file=./config.cache
+exec_prefix=NONE
+host=NONE
+no_create=
+nonopt=NONE
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+target=NONE
+verbose=
+x_includes=NONE
+x_libraries=NONE
+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'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+infodir='${prefix}/info'
+mandir='${prefix}/man'
+
+# Initialize some other variables.
+subdirs=
+MFLAGS= MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/usr/bin/qsh}
+# Maximum number of lines to put in a shell here document.
+ac_max_here_lines=12
+
+ac_prev=
+for ac_option
+do
+
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval "$ac_prev=\$ac_option"
+ ac_prev=
+ continue
+ fi
+
+ case "$ac_option" in
+ -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+ *) ac_optarg= ;;
+ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case "$ac_option" in
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir="$ac_optarg" ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build="$ac_optarg" ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file="$ac_optarg" ;;
+
+ -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+ | --da=*)
+ datadir="$ac_optarg" ;;
+
+ -disable-* | --disable-*)
+ ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
+ # Reject names that are not valid shell variable names.
+ if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
+ { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
+ fi
+ ac_feature=`echo $ac_feature| sed 's/-/_/g'`
+ eval "enable_${ac_feature}=no" ;;
+
+ -enable-* | --enable-*)
+ ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
+ # Reject names that are not valid shell variable names.
+ if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
+ { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
+ fi
+ ac_feature=`echo $ac_feature| sed 's/-/_/g'`
+ case "$ac_option" in
+ *=*) ;;
+ *) ac_optarg=yes ;;
+ esac
+ eval "enable_${ac_feature}='$ac_optarg'" ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix="$ac_optarg" ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he)
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat << EOF
+Usage: configure [options] [host]
+Options: [defaults in brackets after descriptions]
+Configuration:
+ --cache-file=FILE cache test results in FILE
+ --help print this message
+ --no-create do not create output files
+ --quiet, --silent do not print \`checking...' messages
+ --version print the version of autoconf that created configure
+Directory and file names:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [same as prefix]
+ --bindir=DIR user executables in DIR [EPREFIX/bin]
+ --sbindir=DIR system admin executables in DIR [EPREFIX/sbin]
+ --libexecdir=DIR program executables in DIR [EPREFIX/libexec]
+ --datadir=DIR read-only architecture-independent data in DIR
+ [PREFIX/share]
+ --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data in DIR
+ [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var]
+ --libdir=DIR object code libraries in DIR [EPREFIX/lib]
+ --includedir=DIR C header files in DIR [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include]
+ --infodir=DIR info documentation in DIR [PREFIX/info]
+ --mandir=DIR man documentation in DIR [PREFIX/man]
+ --srcdir=DIR find the sources in DIR [configure dir or ..]
+ --program-prefix=PREFIX prepend PREFIX to installed program names
+ --program-suffix=SUFFIX append SUFFIX to installed program names
+ --program-transform-name=PROGRAM
+ run sed PROGRAM on installed program names
+EOF
+ cat << EOF
+Host type:
+ --build=BUILD configure for building on BUILD [BUILD=HOST]
+ --host=HOST configure for HOST [guessed]
+ --target=TARGET configure for TARGET [TARGET=HOST]
+Features and packages:
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --x-includes=DIR X include files are in DIR
+ --x-libraries=DIR X library files are in DIR
+EOF
+ if test -n "$ac_help"; then
+ echo "--enable and --with options recognized:$ac_help"
+ fi
+ exit 0 ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host="$ac_optarg" ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir="$ac_optarg" ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir="$ac_optarg" ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir="$ac_optarg" ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir="$ac_optarg" ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst \
+ | --locals | --local | --loca | --loc | --lo)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+ localstatedir="$ac_optarg" ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir="$ac_optarg" ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir="$ac_optarg" ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix="$ac_optarg" ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix="$ac_optarg" ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix="$ac_optarg" ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name="$ac_optarg" ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir="$ac_optarg" ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir="$ac_optarg" ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site="$ac_optarg" ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir="$ac_optarg" ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir="$ac_optarg" ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target="$ac_optarg" ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers)
+ echo "configure generated by autoconf version 2.13"
+ exit 0 ;;
+
+ -with-* | --with-*)
+ ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
+ # Reject names that are not valid shell variable names.
+ if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
+ { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
+ fi
+ ac_package=`echo $ac_package| sed 's/-/_/g'`
+ case "$ac_option" in
+ *=*) ;;
+ *) ac_optarg=yes ;;
+ esac
+ eval "with_${ac_package}='$ac_optarg'" ;;
+
+ -without-* | --without-*)
+ ac_package=`echo $ac_option|sed -e 's/-*without-//'`
+ # Reject names that are not valid shell variable names.
+ if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
+ { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
+ fi
+ ac_package=`echo $ac_package| sed 's/-/_/g'`
+ eval "with_${ac_package}=no" ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes="$ac_optarg" ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries="$ac_optarg" ;;
+
+ -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
+ ;;
+
+ *)
+ if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
+ echo "configure: warning: $ac_option: invalid host type" 1>&2
+ fi
+ if test "x$nonopt" != xNONE; then
+ { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
+ fi
+ nonopt="$ac_option"
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
+fi
+
+trap 'del -f conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
+
+# File descriptor usage:
+# 0 standard input
+# 1 file creation
+# 2 errors and warnings
+# 3 some systems may open it to /dev/tty
+# 4 used on the Kubota Titan
+# 6 checking for... messages and results
+# 5 compiler messages saved in config.log
+if test "$silent" = yes; then
+ exec 6>/dev/null
+else
+ exec 6>&1
+fi
+exec 5>./config.log
+
+echo "\
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+" 1>&5
+
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Also quote any args containing shell metacharacters.
+ac_configure_args=
+for ac_arg
+do
+ case "$ac_arg" in
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c) ;;
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
+ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
+ ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+ *) ac_configure_args="$ac_configure_args $ac_arg" ;;
+ esac
+done
+
+# NLS nuisances.
+# Only set these to C if already set. These must not be set unconditionally
+# because not all systems understand e.g. LANG=C (notably SCO).
+# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
+# Non-C LC_CTYPE values break the ctype check.
+if test "${LANG+set}" = set; then LANG=C; export LANG; fi
+if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
+if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
+if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+del -f conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo > confdefs.h
+
+# A filename unique to this package, relative to the directory that
+# configure is in, which we can look for to find out if srcdir is correct.
+ac_unique_file=common/unicode/utypes.h
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then its parent.
+ ac_prog=$0
+ ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
+ test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
+ srcdir=$ac_confdir
+ if test ! -r $srcdir/$ac_unique_file; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r $srcdir/$ac_unique_file; then
+ if test "$ac_srcdir_defaulted" = yes; then
+ { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
+ else
+ { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
+ fi
+fi
+srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
+
+# Prefer explicitly selected file to automatically selected ones.
+if test -z "$CONFIG_SITE"; then
+ if test "x$prefix" != xNONE; then
+ CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+ else
+ CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+ fi
+fi
+for ac_site_file in $CONFIG_SITE; do
+ if test -r "$ac_site_file"; then
+ echo "loading site script $ac_site_file"
+ . "$ac_site_file"
+ fi
+done
+
+if test -r "$cache_file"; then
+ echo "loading cache $cache_file"
+ . $cache_file
+else
+ echo "creating cache $cache_file"
+ > $cache_file
+fi
+
+ac_ext=c
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
+
+ac_exeext=
+ac_objext=o
+if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
+ # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
+ if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
+ ac_n= ac_c='
+' ac_t=' '
+ else
+ ac_n=-n ac_c= ac_t=
+ fi
+else
+ ac_n= ac_c='\c' ac_t=
+fi
+
+
+
+
+PACKAGE="icu"
+
+
+echo $ac_n "checking for ICU version numbers""... $ac_c" 1>&6
+echo "configure:566: checking for ICU version numbers" >&5
+
+geticuversion() {
+ sed -n 's/^[ ]*#[ ]*define[ ]*U_ICU_VERSION[ ]*"\([^"]*\)".*/\1/p' "$@"
+}
+VERSION=`geticuversion $srcdir/common/unicode/uversion.h`
+if test x"$VERSION" = x; then
+ VERSION=`geticuversion $srcdir/common/unicode/*.h`
+ if test x"$VERSION" = x; then
+ { echo "configure: error: Cannot determine ICU version number from header files" 1>&2; exit 1; }
+ fi
+fi
+LIB_VERSION=`echo $VERSION | sed -e 's/\.//' -e 's/^\([^.]*\)$/\1.0/'`
+LIB_VERSION_MAJOR=`echo $LIB_VERSION | sed 's/\..*//'`
+
+
+
+echo "$ac_t""release $VERSION, library $LIB_VERSION" 1>&6
+
+UNICODE_VERSION="4"
+
+
+
+
+# Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:593: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+ ac_dummy="$PATH"
+ for ac_dir in $ac_dummy; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -x $ac_dir/$ac_word; then
+ ac_cv_prog_CC="gcc"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+fi
+fi
+CC="$ac_cv_prog_CC"
+if test -n "$CC"; then
+ echo "$ac_t""$CC" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:623: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+ ac_prog_rejected=no
+ ac_dummy="$PATH"
+ for ac_dir in $ac_dummy; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -x $ac_dir/$ac_word; then
+ if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# -gt 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ set dummy "$ac_dir/$ac_word" "$@"
+ shift
+ ac_cv_prog_CC="$@"
+ fi
+fi
+fi
+fi
+CC="$ac_cv_prog_CC"
+if test -n "$CC"; then
+ echo "$ac_t""$CC" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+ if test -z "$CC"; then
+ case "`uname -s`" in
+ *win32* | *WIN32*)
+ # Extract the first word of "cl", so it can be a program name with args.
+set dummy cl; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:674: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+ ac_dummy="$PATH"
+ for ac_dir in $ac_dummy; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -x $ac_dir/$ac_word; then
+ ac_cv_prog_CC="cl"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+fi
+fi
+CC="$ac_cv_prog_CC"
+if test -n "$CC"; then
+ echo "$ac_t""$CC" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+ ;;
+ esac
+ fi
+ test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
+fi
+
+echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
+echo "configure:706: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+
+ac_ext=c
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
+
+cat > conftest.$ac_ext << EOF
+
+#line 717 "configure"
+#include "confdefs.h"
+
+main(){return(0);}
+EOF
+if { (eval echo configure:722: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -x conftest${ac_exeext}; then
+ ac_cv_prog_cc_works=yes
+ # If we can't run a trivial program, we are probably using a cross compiler.
+ if (./conftest; exit) 2>/dev/null; then
+ ac_cv_prog_cc_cross=no
+ else
+ ac_cv_prog_cc_cross=yes
+ fi
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ ac_cv_prog_cc_works=no
+fi
+del -f conftest*
+ac_ext=c
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
+
+echo "$ac_t""$ac_cv_prog_cc_works" 1>&6
+if test $ac_cv_prog_cc_works = no; then
+ { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
+fi
+echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
+echo "configure:748: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
+cross_compiling=$ac_cv_prog_cc_cross
+
+echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
+echo "configure:753: checking whether we are using GNU C" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.c <<EOF
+#ifdef __GNUC__
+ yes;
+#endif
+EOF
+if { ac_try='${CC-cc} -c qpponly conftest.c'; { (eval echo configure:767: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+ ac_cv_prog_gcc=yes
+else
+ ac_cv_prog_gcc=no
+fi
+fi
+
+echo "$ac_t""$ac_cv_prog_gcc" 1>&6
+
+if test $ac_cv_prog_gcc = yes; then
+ GCC=yes
+else
+ GCC=
+fi
+
+ac_test_CFLAGS="${CFLAGS+set}"
+ac_save_CFLAGS="$CFLAGS"
+CFLAGS=
+echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
+echo "configure:781: checking whether ${CC-cc} accepts -g" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ echo 'void f(){}' > conftest.c
+if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
+ ac_cv_prog_cc_g=yes
+else
+ ac_cv_prog_cc_g=no
+fi
+del -f conftest*
+
+fi
+
+echo "$ac_t""$ac_cv_prog_cc_g" 1>&6
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS="$ac_save_CFLAGS"
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+
+for ac_prog in $CCC c++ g++ gcc CC cxx cc++ cl
+do
+# Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:817: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$CXX"; then
+ ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+ ac_dummy="$PATH"
+ for ac_dir in $ac_dummy; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -x $ac_dir/$ac_word; then
+ ac_cv_prog_CXX="$ac_prog"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+fi
+fi
+CXX="$ac_cv_prog_CXX"
+if test -n "$CXX"; then
+ echo "$ac_t""$CXX" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+test -n "$CXX" && break
+done
+test -n "$CXX" || CXX="gcc"
+
+
+echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6
+echo "configure:849: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
+
+ac_ext=C
+# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cxx_cross
+
+cat > conftest.$ac_ext << EOF
+
+#line 860 "configure"
+#include "confdefs.h"
+
+int main(){return(0);}
+EOF
+if { (eval echo configure:865: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -x conftest${ac_exeext}; then
+ ac_cv_prog_cxx_works=yes
+ # If we can't run a trivial program, we are probably using a cross compiler.
+ if (./conftest; exit) 2>/dev/null; then
+ ac_cv_prog_cxx_cross=no
+ else
+ ac_cv_prog_cxx_cross=yes
+ fi
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ ac_cv_prog_cxx_works=no
+fi
+del -f conftest*
+ac_ext=c
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
+
+echo "$ac_t""$ac_cv_prog_cxx_works" 1>&6
+if test $ac_cv_prog_cxx_works = no; then
+ { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; }
+fi
+echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
+echo "configure:891: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6
+cross_compiling=$ac_cv_prog_cxx_cross
+
+echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
+echo "configure:896: checking whether we are using GNU C++" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.C <<EOF
+#ifdef __GNUC__
+ yes;
+#endif
+EOF
+if { ac_try='${CXX-g++} -c qpponly conftest.C'; { (eval echo configure:905: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+ ac_cv_prog_gxx=yes
+else
+ ac_cv_prog_gxx=no
+fi
+fi
+
+echo "$ac_t""$ac_cv_prog_gxx" 1>&6
+
+if test $ac_cv_prog_gxx = yes; then
+ GXX=yes
+else
+ GXX=
+fi
+
+ac_test_CXXFLAGS="${CXXFLAGS+set}"
+ac_save_CXXFLAGS="$CXXFLAGS"
+CXXFLAGS=
+echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
+echo "configure:924: checking whether ${CXX-g++} accepts -g" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ echo 'void f(){}' > conftest.cc
+if test -z "`${CXX-g++} -g -c conftest.cc 2>&1`"; then
+ ac_cv_prog_cxx_g=yes
+else
+ ac_cv_prog_cxx_g=no
+fi
+del -f conftest*
+
+fi
+
+echo "$ac_t""$ac_cv_prog_cxx_g" 1>&6
+if test "$ac_test_CXXFLAGS" = set; then
+ CXXFLAGS="$ac_save_CXXFLAGS"
+elif test $ac_cv_prog_cxx_g = yes; then
+ if test "$GXX" = yes; then
+ CXXFLAGS="-g -O2"
+ else
+ CXXFLAGS="-g"
+ fi
+else
+ if test "$GXX" = yes; then
+ CXXFLAGS="-O2"
+ else
+ CXXFLAGS=
+ fi
+fi
+
+for ac_declaration in \
+ ''\
+ '#include <stdlib.h>' \
+ 'extern "C" void std::exit (int) throw (); using std::exit;' \
+ 'extern "C" void std::exit (int); using std::exit;' \
+ 'extern "C" void exit (int) throw ();' \
+ 'extern "C" void exit (int);' \
+ 'void exit (int);'
+do
+ cat > conftest.$ac_ext <<EOF
+#line 965 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+$ac_declaration
+int main() {
+exit (42);
+; return 0; }
+EOF
+if { (eval echo configure:973: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ :
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ del -f conftest*
+ continue
+fi
+del -f conftest*
+ cat > conftest.$ac_ext <<EOF
+#line 983 "configure"
+#include "confdefs.h"
+$ac_declaration
+int main() {
+exit (42);
+; return 0; }
+EOF
+if { (eval echo configure:990: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ del -f conftest*
+ break
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+fi
+del -f conftest*
+done
+if test -n "$ac_declaration"; then
+ echo '#ifdef __cplusplus' >>confdefs.h
+ echo $ac_declaration >>confdefs.h
+ echo '#endif' >>confdefs.h
+fi
+
+
+ac_aux_dir=
+for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+ if test -f $ac_dir/install-sh; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f $ac_dir/install.sh; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ fi
+done
+if test -z "$ac_aux_dir"; then
+ { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
+fi
+ac_config_guess=$ac_aux_dir/config.guess
+ac_config_sub=$ac_aux_dir/config.sub
+ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# ./install, which can be erroneously created by make from ./install.sh.
+echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
+echo "configure:1037: checking for a BSD compatible install" >&5
+if test -z "$INSTALL"; then
+if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":"
+ for ac_dir in $PATH; do
+ # Account for people who put trailing slashes in PATH elements.
+ case "$ac_dir/" in
+ /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ if test -f $ac_dir/$ac_prog; then
+ if test $ac_prog = install &&
+ grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ else
+ ac_cv_path_install="$ac_dir/$ac_prog -c"
+ break 2
+ fi
+ fi
+ done
+ ;;
+ esac
+ done
+ IFS="$ac_save_IFS"
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL="$ac_cv_path_install"
+ else
+ # As a last resort, use the slow shell script. We don't cache a
+ # path for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the path is relative.
+ INSTALL="$ac_install_sh"
+ fi
+fi
+echo "$ac_t""$INSTALL" 1>&6
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+
+# make sure install is relative to srcdir - if a script
+if test "$srcdir" = "."; then
+ # If srcdir isn't just ., then (srcdir) is already prepended.
+ if test "${ac_install_sh}" = "${INSTALL}"; then
+ INSTALL="\\\$(top_srcdir)/${ac_install_sh}"
+ fi
+fi
+
+# Extract the first word of "autoconf", so it can be a program name with args.
+set dummy autoconf; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:1101: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_AUTOCONF'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$AUTOCONF"; then
+ ac_cv_prog_AUTOCONF="$AUTOCONF" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+ ac_dummy="$PATH"
+ for ac_dir in $ac_dummy; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_AUTOCONF="autoconf"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+ test -z "$ac_cv_prog_AUTOCONF" && ac_cv_prog_AUTOCONF="true"
+fi
+fi
+AUTOCONF="$ac_cv_prog_AUTOCONF"
+if test -n "$AUTOCONF"; then
+ echo "$ac_t""$AUTOCONF" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+# Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:1131: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+ ac_dummy="$PATH"
+ for ac_dir in $ac_dummy; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -x $ac_dir/$ac_word; then
+ ac_cv_prog_STRIP="strip"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+ test -z "$ac_cv_prog_STRIP" && ac_cv_prog_STRIP="true"
+fi
+fi
+STRIP="$ac_cv_prog_STRIP"
+if test -n "$STRIP"; then
+ echo "$ac_t""$STRIP" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+
+for ac_prog in gmake gnumake
+do
+# Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:1164: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_path_U_MAKE'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ case "$U_MAKE" in
+ /*)
+ ac_cv_path_U_MAKE="$U_MAKE" # Let the user override the test with a path.
+ ;;
+ ?:/*)
+ ac_cv_path_U_MAKE="$U_MAKE" # Let the user override the test with a dos path.
+ ;;
+ *)
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+ ac_dummy="$PATH"
+ for ac_dir in $ac_dummy; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -x $ac_dir/$ac_word; then
+ ac_cv_path_U_MAKE="$ac_dir/$ac_word"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+ ;;
+esac
+fi
+U_MAKE="$ac_cv_path_U_MAKE"
+if test -n "$U_MAKE"; then
+ echo "$ac_t""$U_MAKE" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+test -n "$U_MAKE" && break
+done
+test -n "$U_MAKE" || U_MAKE="make"
+
+
+
+# Extract the first word of "doxygen", so it can be a program name with args.
+set dummy doxygen; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:1205: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_path_DOXYGEN'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ case "$DOXYGEN" in
+ /*)
+ ac_cv_path_DOXYGEN="$DOXYGEN" # Let the user override the test with a path.
+ ;;
+ ?:/*)
+ ac_cv_path_DOXYGEN="$DOXYGEN" # Let the user override the test with a dos path.
+ ;;
+ *)
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+ ac_dummy="$PATH:/usr/local/bin:/usr/bin"
+ for ac_dir in $ac_dummy; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -x $ac_dir/$ac_word; then
+ ac_cv_path_DOXYGEN="$ac_dir/$ac_word"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+ ;;
+esac
+fi
+DOXYGEN="$ac_cv_path_DOXYGEN"
+if test -n "$DOXYGEN"; then
+ echo "$ac_t""$DOXYGEN" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+
+
+# Make sure we can run config.sub.
+if ${CONFIG_SHELL-/usr/bin/qsh} $ac_config_sub sun4 >/dev/null 2>&1; then :
+else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
+fi
+
+echo $ac_n "checking host system type""... $ac_c" 1>&6
+echo "configure:1245: checking host system type" >&5
+
+host_alias=$host
+case "$host_alias" in
+NONE)
+ case $nonopt in
+ NONE)
+ if host_alias=`${CONFIG_SHELL-/usr/bin/qsh} $ac_config_guess`; then :
+ else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; }
+ fi ;;
+ *) host_alias=$nonopt ;;
+ esac ;;
+esac
+
+host=`${CONFIG_SHELL-/usr/bin/qsh} $ac_config_sub $host_alias`
+host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+echo "$ac_t""$host" 1>&6
+
+echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
+echo "configure:1266: checking for Cygwin environment" >&5
+if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 1271 "configure"
+#include "confdefs.h"
+
+int main() {
+
+#ifndef __CYGWIN__
+#define __CYGWIN__ __CYGWIN32__
+#endif
+return __CYGWIN__;
+; return 0; }
+EOF
+if { (eval echo configure:1282: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ ac_cv_cygwin=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ ac_cv_cygwin=no
+fi
+rm -f conftest*
+rm -f conftest*
+fi
+
+echo "$ac_t""$ac_cv_cygwin" 1>&6
+CYGWIN=
+test "$ac_cv_cygwin" = yes && CYGWIN=yes
+echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
+echo "configure:1299: checking for mingw32 environment" >&5
+if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 1304 "configure"
+#include "confdefs.h"
+
+int main() {
+return __MINGW32__;
+; return 0; }
+EOF
+if { (eval echo configure:1311: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ ac_cv_mingw32=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ ac_cv_mingw32=no
+fi
+rm -f conftest*
+rm -f conftest*
+fi
+
+echo "$ac_t""$ac_cv_mingw32" 1>&6
+MINGW32=
+test "$ac_cv_mingw32" = yes && MINGW32=yes
+
+
+echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
+echo "configure:1330: checking for executable suffix" >&5
+if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test "$CYGWIN" = yes || test "$MINGW32" = yes; then
+ ac_cv_exeext=.exe
+else
+ rm -f conftest*
+ echo 'int main () { return 0; }' > conftest.$ac_ext
+ ac_cv_exeext=
+ if { (eval echo configure:1340: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+ for file in conftest.*; do
+ case $file in
+ *.c | *.o | *.obj) ;;
+ *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
+ esac
+ done
+ else
+ { echo "configure: error: installation or configuration problem: compiler cannot create executables." 1>&2; exit 1; }
+ fi
+ rm -f conftest*
+ test x"${ac_cv_exeext}" = x && ac_cv_exeext=no
+fi
+fi
+
+EXEEXT=""
+test x"${ac_cv_exeext}" != xno && EXEEXT=${ac_cv_exeext}
+echo "$ac_t""${ac_cv_exeext}" 1>&6
+ac_exeext=$EXEEXT
+
+
+
+ echo $ac_n "checking whether strict compiling is on""... $ac_c" 1>&6
+echo "configure:1363: checking whether strict compiling is on" >&5
+ # Check whether --enable-strict or --disable-strict was given.
+if test "${enable_strict+set}" = set; then
+ enableval="$enable_strict"
+
+ if test "$enableval" = no
+ then
+ ac_use_strict_options=no
+ else
+ ac_use_strict_options=yes
+ fi
+
+else
+ ac_use_strict_options=no
+fi
+
+ echo "$ac_t""$ac_use_strict_options" 1>&6
+
+ if test "$ac_use_strict_options" = yes
+ then
+ if test "$GCC" = yes
+ then
+ CFLAGS="$CFLAGS -Wall -ansi -pedantic -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -Winline"
+ case "${host}" in
+ *-*-solaris*)
+ CFLAGS="$CFLAGS -D__STDC__=0";;
+ esac
+ fi
+ if test "$GXX" = yes
+ then
+ CXXFLAGS="$CXXFLAGS -W -Wall -ansi -pedantic -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -Winline"
+ case "${host}" in
+ *-*-solaris*)
+ CXXFLAGS="$CXXFLAGS -D__STDC__=0";;
+ esac
+ fi
+ fi
+
+
+
+ # Check whether --enable-64bit-libs or --disable-64bit-libs was given.
+if test "${enable_64bit_libs+set}" = set; then
+ enableval="$enable_64bit_libs"
+ ENABLE_64BIT_LIBS=${enableval}
+else
+ ENABLE_64BIT_LIBS=yes
+
+fi
+
+ echo $ac_n "checking for 64-bit executable support""... $ac_c" 1>&6
+echo "configure:1413: checking for 64-bit executable support" >&5
+ if test "$ENABLE_64BIT_LIBS" = no; then
+ case "${host}" in
+ *-*-hpux*)
+# case "${CXX}" in
+# *CC)
+# CFLAGS="${CFLAGS} +DAportable"
+# CXXFLAGS="${CXXFLAGS} +DAportable"
+# ;;
+# esac;;
+ esac
+ else
+ case "${host}" in
+ *-*-solaris*)
+ if test "$ac_cv_prog_gcc" = no; then
+ SOL64=`$CXX -xarch=v9 2>&1 && $CC -xarch=v9 2>&1 | grep -v usage:`
+ SPARCV9=`isainfo -n 2>&1 | grep sparcv9`
+ if test -z "$SOL64" && test -n "$SPARCV9"; then
+ CFLAGS="${CFLAGS} -xtarget=ultra -xarch=v9"
+ CXXFLAGS="${CXXFLAGS} -xtarget=ultra -xarch=v9"
+ LDFLAGS="${LDFLAGS} -xtarget=ultra -xarch=v9"
+ ENABLE_64BIT_LIBS=yes
+ else
+ ENABLE_64BIT_LIBS=no
+ fi
+ else
+ ENABLE_64BIT_LIBS=no
+ fi
+ ;;
+ *-*-aix*)
+ OLD_CFLAGS="${CFLAGS}"
+ OLD_CXXFLAGS="${CXXFLAGS}"
+ OLD_LDFLAGS="${LDFLAGS}"
+ CFLAGS="${CFLAGS} -q64"
+ CXXFLAGS="${CXXFLAGS} -q64"
+ LDFLAGS="${LDFLAGS} -q64"
+ if test "$cross_compiling" = yes; then
+ ENABLE_64BIT_LIBS=no
+else
+ cat > conftest.$ac_ext <<EOF
+#line 1453 "configure"
+#include "confdefs.h"
+int main(void) {return 0;}
+EOF
+if { (eval echo configure:1457: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+ ENABLE_64BIT_LIBS=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ ENABLE_64BIT_LIBS=no
+fi
+rm -fr conftest*
+fi
+
+ if test "$ENABLE_64BIT_LIBS" = no; then
+ CFLAGS="${OLD_CFLAGS}"
+ CXXFLAGS="${OLD_CXXFLAGS}"
+ LDFLAGS="${OLD_LDFLAGS}"
+ else
+ ARFLAGS="${ARFLAGS} -X64"
+ fi
+ ;;
+ *-*-hpux*)
+ OLD_CFLAGS="${CFLAGS}"
+ OLD_CXXFLAGS="${CXXFLAGS}"
+ CFLAGS="${CFLAGS} +DA2.0W"
+ CXXFLAGS="${CXXFLAGS} +DA2.0W"
+ if test "$cross_compiling" = yes; then
+ ENABLE_64BIT_LIBS=no
+else
+ cat > conftest.$ac_ext <<EOF
+#line 1486 "configure"
+#include "confdefs.h"
+int main(void) {return 0;}
+EOF
+if { (eval echo configure:1490: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+ ENABLE_64BIT_LIBS=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ ENABLE_64BIT_LIBS=no
+fi
+rm -fr conftest*
+fi
+
+ if test "$ENABLE_64BIT_LIBS" = no; then
+ CFLAGS="${OLD_CFLAGS}"
+ CXXFLAGS="${OLD_CXXFLAGS}"
+ fi
+ ;;
+ *)
+ ENABLE_64BIT_LIBS=no
+ ;;
+ esac
+ fi
+ echo "$ac_t""$ENABLE_64BIT_LIBS" 1>&6
+
+
+
+
+
+ echo $ac_n "checking which Makefile fragment to use""... $ac_c" 1>&6
+echo "configure:1518: checking which Makefile fragment to use" >&5
+if eval "test \"`echo '$''{'icu_cv_host_frag'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+
+case "${host}" in
+*-*-solaris*)
+ if test "$ac_cv_prog_gcc" = yes; then
+ icu_cv_host_frag=mh-solaris-gcc
+ else
+ icu_cv_host_frag=mh-solaris
+ fi ;;
+alpha*-*-linux-gnu)
+ if test "$ac_cv_prog_gcc" = yes; then
+ icu_cv_host_frag=mh-alpha-linux-gcc
+ else
+ icu_cv_host_frag=mh-alpha-linux-cc
+ fi ;;
+*-*-linux*) icu_cv_host_frag=mh-linux ;;
+*-*-cygwin)
+ if test "$ac_cv_prog_gcc" = yes; then
+ icu_cv_host_frag=mh-cygwin
+ else
+ icu_cv_host_frag=mh-cygwin-msvc
+ fi ;;
+*-*-*bsd*) icu_cv_host_frag=mh-bsd-gcc ;;
+*-*-aix*)
+ if test -n "`$CXX --help 2>&1 | grep 'IBM C and C++ Compilers$'`"; then
+ icu_cv_host_frag=mh-aix
+ else
+ icu_cv_host_frag=mh-aix-va
+ fi ;;
+*-*-hpux*)
+ if test "$ac_cv_prog_gcc" = yes; then
+ icu_cv_host_frag=mh-hpux-gcc
+ else
+ case "$CXX" in
+ *aCC) icu_cv_host_frag=mh-hpux-acc ;;
+ *CC) icu_cv_host_frag=mh-hpux-cc ;;
+ esac
+ fi ;;
+*-*ibm-openedition*|*-*-os390*) icu_cv_host_frag=mh-os390 ;;
+*-*-os400*) icu_cv_host_frag=mh-os400 ;;
+*-apple-rhapsody*) icu_cv_host_frag=mh-darwin ;;
+*-apple-darwin*) icu_cv_host_frag=mh-darwin ;;
+*-*-beos) icu_cv_host_frag=mh-beos ;;
+*-*-irix*) icu_cv_host_frag=mh-irix ;;
+*-dec-osf*) icu_cv_host_frag=mh-alpha-osf ;;
+*-*-nto*) icu_cv_host_frag=mh-qnx ;;
+*-ncr-*) icu_cv_host_frag=mh-mpras ;;
+*-sequent-*) icu_cv_host_frag=mh-ptx ;;
+*) icu_cv_host_frag=mh-unknown ;;
+esac
+
+
+fi
+
+echo "$ac_t""$icu_cv_host_frag" 1>&6
+
+
+case "${host}" in
+ *-*-hpux*) echo $ac_n "checking for floor in -lm""... $ac_c" 1>&6
+echo "configure:1621: checking for floor in -lm" >&5
+ac_lib_var=`echo m'_'floor | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ ac_save_LIBS="$LIBS"
+LIBS="-lm $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 1629 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char floor();
+
+int main() {
+floor()
+; return 0; }
+EOF
+if { (eval echo configure:1640: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -x conftest${ac_exeext}; then
+ del -f conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ del -f conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+del -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ LIB_M="-lm"
+else
+ echo "$ac_t""no" 1>&6
+fi
+ ;;
+
+ *) echo $ac_n "checking for floor in -lm""... $ac_c" 1>&6
+echo "configure:1662: checking for floor in -lm" >&5
+ac_lib_var=`echo m'_'floor | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ ac_save_LIBS="$LIBS"
+LIBS="-lm $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 1670 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char floor();
+
+int main() {
+floor()
+; return 0; }
+EOF
+if { (eval echo configure:1681: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -x conftest${ac_exeext}; then
+ del -f conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ del -f conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+del -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_lib=HAVE_LIB`echo m | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
+EOF
+
+ LIBS="-lm $LIBS"
+
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+ LIB_M="" ;;
+esac
+
+
+echo $ac_n "checking whether to build shared libraries""... $ac_c" 1>&6
+echo "configure:1744: checking whether to build shared libraries" >&5
+enabled=no
+# Check whether --enable-shared or --disable-shared was given.
+if test "${enable_shared+set}" = set; then
+ enableval="$enable_shared"
+ case "${enableval}" in
+ yes|"") enabled=yes; ENABLE_SHARED=YES ;;
+ no);;
+ *) ;;
+ esac
+else
+ enabled=yes; ENABLE_SHARED=YES
+
+fi
+
+echo "$ac_t""$enabled" 1>&6
+
+
+echo $ac_n "checking whether to build static libraries""... $ac_c" 1>&6
+echo "configure:1763: checking whether to build static libraries" >&5
+enabled=no
+# Check whether --enable-static or --disable-static was given.
+if test "${enable_static+set}" = set; then
+ enableval="$enable_static"
+ case "${enableval}" in
+ yes|"") enabled=yes; ENABLE_STATIC=YES ;;
+ no) ;;
+ *) ;;
+ esac
+fi
+
+echo "$ac_t""$enabled" 1>&6
+
+
+echo $ac_n "checking whether to build debug libraries""... $ac_c" 1>&6
+echo "configure:1710: checking whether to build debug libraries" >&5
+enabled=no
+ENABLE_DEBUG=0
+# Check whether --enable-debug or --disable-debug was given.
+if test "${enable_debug+set}" = set; then
+ enableval="$enable_debug"
+ case "${enableval}" in
+ yes|"") enabled=yes; ENABLE_DEBUG=1 ;;
+ *) ;;
+ esac
+fi
+
+echo "$ac_t""$enabled" 1>&6
+
+
+echo $ac_n "checking whether to build release libraries""... $ac_c" 1>&6
+echo "configure:1726: checking whether to build release libraries" >&5
+enabled=yes
+ENABLE_RELEASE=1
+# Check whether --enable-release or --disable-release was given.
+if test "${enable_release+set}" = set; then
+ enableval="$enable_release"
+ case "${enableval}" in
+ no) enabled=no; ENABLE_RELEASE=0 ;;
+ *) ;;
+ esac
+fi
+
+echo "$ac_t""$enabled" 1>&6
+
+
+# Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:1781: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$RANLIB"; then
+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+ ac_dummy="$PATH"
+ for ac_dir in $ac_dummy; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -x $ac_dir/$ac_word; then
+ ac_cv_prog_RANLIB="ranlib"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+ test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":"
+fi
+fi
+RANLIB="$ac_cv_prog_RANLIB"
+if test -n "$RANLIB"; then
+ echo "$ac_t""$RANLIB" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+# Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:1811: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_path_AR'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ case "$AR" in
+ /*)
+ ac_cv_path_AR="$AR" # Let the user override the test with a path.
+ ;;
+ ?:/*)
+ ac_cv_path_AR="$AR" # Let the user override the test with a dos path.
+ ;;
+ *)
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+ ac_dummy="$PATH:/bin:/usr/bin:/usr/ccs/bin"
+ for ac_dir in $ac_dummy; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_path_AR="$ac_dir/$ac_word"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+ test -z "$ac_cv_path_AR" && ac_cv_path_AR="echo archiver ar not found re-run configure ; false"
+ ;;
+esac
+fi
+AR="$ac_cv_path_AR"
+if test -n "$AR"; then
+ echo "$ac_t""$AR" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+
+echo $ac_n "checking whether to enable renaming of symbols""... $ac_c" 1>&6
+echo "configure:1846: checking whether to enable renaming of symbols" >&5
+enabled=yes
+U_DISABLE_RENAMING=0
+# Check whether --enable-renaming or --disable-renaming was given.
+if test "${enable_renaming+set}" = set; then
+ enableval="$enable_renaming"
+ case "${enableval}" in
+ yes|"") enabled=yes ;;
+ no) enabled=no; U_DISABLE_RENAMING=1 ;;
+ *) ;;
+ esac
+fi
+
+echo "$ac_t""$enabled" 1>&6
+
+
+# Check whether --enable-rpath or --disable-rpath was given.
+if test "${enable_rpath+set}" = set; then
+ enableval="$enable_rpath"
+ case "${enableval}" in
+ yes|"") ENABLE_RPATH=YES ;;
+ no) ;;
+ *) ;;
+ esac
+else
+ ENABLE_RPATH=NO
+
+fi
+
+
+
+
+echo $ac_n "checking for definition of U_INLINE for C""... $ac_c" 1>&6
+echo "configure:1879: checking for definition of U_INLINE for C" >&5
+if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+ cat > conftest.$ac_ext <<EOF
+#line 1886 "configure"
+#include "confdefs.h"
+
+int main() {
+} $ac_kw foo() {
+; return 0; }
+EOF
+if { (eval echo configure:1893: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ del -f conftest*
+ ac_cv_c_inline=$ac_kw; break
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+fi
+del -f conftest*
+ done
+
+fi
+
+echo "$ac_t""$ac_cv_c_inline" 1>&6
+case "$ac_cv_c_inline" in
+ yes) U_INLINE= "inline" ;;
+ no ) U_INLINE= ;;
+ *) U_INLINE=$ac_cv_c_inline ;;
+esac
+
+
+threads=true
+
+# Check whether --enable-threads or --disable-threads was given.
+if test "${enable_threads+set}" = set; then
+ enableval="$enable_threads"
+ case "${enableval}" in
+ yes) threads=true ;;
+ no) threads=false ;;
+ *) { echo "configure: error: bad value ${enableval} for --enable-threads" 1>&2; exit 1; } ;;
+ esac
+else
+ threads=true
+fi
+
+
+
+if test "$threads" = true; then
+ THREADS_TRUE=
+ THREADS_FALSE='#'
+else
+ THREADS_TRUE='#'
+ THREADS_FALSE=
+fi
+
+ICU_USE_THREADS=0
+
+if test $threads = true; then
+
+ echo $ac_n "checking for pthread_attr_init in -lpthread""... $ac_c" 1>&6
+echo "configure:1994: checking for pthread_attr_init in -lpthread" >&5
+ac_lib_var=`echo pthread'_'pthread_attr_init | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ ac_save_LIBS="$LIBS"
+LIBS="-lpthread $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 2002 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char pthread_attr_init();
+
+int main() {
+pthread_attr_init()
+; return 0; }
+EOF
+if { (eval echo configure:2013: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -x conftest${ac_exeext}; then
+ del -f conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ del -f conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+del -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_lib=HAVE_LIB`echo pthread | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
+EOF
+
+ LIBS="-lpthread $LIBS"
+
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+ if test $ac_cv_lib_pthread_pthread_attr_init = yes; then
+ ICU_USE_THREADS=1
+ else
+
+
+echo $ac_n "checking for library containing pthread_mutex_destroy""... $ac_c" 1>&6
+echo "configure:2046: checking for library containing pthread_mutex_destroy" >&5
+if eval "test \"`echo '$''{'ac_cv_search_pthread_mutex_destroy'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ ac_func_search_save_LIBS="$LIBS"
+ac_cv_search_pthread_mutex_destroy="no"
+for i in pthread pthreads c_r ; do
+LIBS="-l$i $ac_func_search_save_LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 2055 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char pthread_mutex_destroy();
+
+int main() {
+pthread_mutex_destroy()
+; return 0; }
+EOF
+if { (eval echo configure:2066: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -x conftest${ac_exeext}; then
+ del -f conftest*
+ ac_cv_search_pthread_mutex_destroy="-l$i"
+break
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+fi
+del -f conftest*
+done
+if test "$ac_cv_search_pthread_mutex_destroy" = "no"; then
+cat > conftest.$ac_ext <<EOF
+#line 2078 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char pthread_mutex_destroy();
+
+int main() {
+pthread_mutex_destroy()
+; return 0; }
+EOF
+if { (eval echo configure:2089: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -x conftest${ac_exeext}; then
+ del -f conftest*
+ ac_cv_search_pthread_mutex_destroy="none required"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+fi
+del -f conftest*
+fi
+LIBS="$ac_func_search_save_LIBS"
+fi
+
+echo "$ac_t""$ac_cv_search_pthread_mutex_destroy" 1>&6
+if test "$ac_cv_search_pthread_mutex_destroy" != "no"; then
+ test "$ac_cv_search_pthread_mutex_destroy" = "none required" || LIBS="$ac_cv_search_pthread_mutex_destroy $LIBS"
+
+else :
+
+fi
+
+ if test "$ac_cv_search_pthread_mutex_destroy" != no; then
+ ICU_USE_THREADS=1
+ else
+ echo $ac_n "checking for pthread_mutex_init in -lpthread""... $ac_c" 1>&6
+echo "configure:2113: checking for pthread_mutex_init in -lpthread" >&5
+ac_lib_var=`echo pthread'_'pthread_mutex_init | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ ac_save_LIBS="$LIBS"
+LIBS="-lpthread $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 2121 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char pthread_mutex_init();
+
+int main() {
+pthread_mutex_init()
+; return 0; }
+EOF
+if { (eval echo configure:2132: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -x conftest${ac_exeext}; then
+ del -f conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ del -f conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+del -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_lib=HAVE_LIB`echo pthread | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
+EOF
+
+ LIBS="-lpthread $LIBS"
+
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+ if test $ac_cv_lib_pthread_pthread_mutex_init = yes; then
+ ICU_USE_THREADS=1
+ fi
+ fi
+
+ echo $ac_n "checking for pthread_mutex_lock""... $ac_c" 1>&6
+echo "configure:2165: checking for pthread_mutex_lock" >&5
+if eval "test \"`echo '$''{'ac_cv_func_pthread_mutex_lock'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 2170 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char pthread_mutex_lock(); below. */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char pthread_mutex_lock();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_pthread_mutex_lock) || defined (__stub___pthread_mutex_lock)
+choke me
+#else
+pthread_mutex_lock();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:2193: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -x conftest${ac_exeext}; then
+ del -f conftest*
+ eval "ac_cv_func_pthread_mutex_lock=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ del -f conftest*
+ eval "ac_cv_func_pthread_mutex_lock=no"
+fi
+del -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'pthread_mutex_lock`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ :
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+
+ if test $ac_cv_func_pthread_mutex_lock = yes; then
+ ICU_USE_THREADS=1
+ fi
+ case "${host}" in
+ *-pc-cygwin*|*-pc-mingw*)
+ if test "$ac_cv_prog_gcc" = no; then
+ ICU_USE_THREADS=1
+ fi ;;
+ esac
+ fi
+fi
+
+
+
+
+# The AC_FUNC_MMAP macro doesn't work properly. It seems to be too specific.
+# Do this check instead.
+HAVE_MMAP=0
+echo $ac_n "checking for mmap""... $ac_c" 1>&6
+echo "configure:2227: checking for mmap" >&5
+if eval "test \"`echo '$''{'ac_cv_func_mmap_ok'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 2232 "configure"
+#include "confdefs.h"
+
+#include <unistd.h>
+#include <sys/mman.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+int main() {
+ mmap((void *)0, 0, PROT_READ, 0, 0, 0);
+; return 0; }
+EOF
+if { (eval echo configure:2244: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -x conftest${ac_exeext}; then
+ del -f conftest*
+ ac_cv_func_mmap_ok=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ del -f conftest*
+ ac_cv_func_mmap_ok=no
+fi
+del -f conftest*
+fi
+
+echo "$ac_t""$ac_cv_func_mmap_ok" 1>&6
+if test $ac_cv_func_mmap_ok = yes
+then
+ HAVE_MMAP=1
+fi
+
+
+echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
+echo "configure:2264: checking how to run the C preprocessor" >&5
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+if test -z "$CPP"; then
+if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ # This must be in double quotes, not single quotes, because CPP may get
+ # substituted into the Makefile and "${CC-cc}" will confuse make.
+ CPP="${CC-cc} -c -qpponly"
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp.
+ cat > conftest.$ac_ext <<EOF
+#line 2279 "configure"
+#include "confdefs.h"
+#include <assert.h>
+Syntax Error
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:2285: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ :
+else
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ del -f conftest*
+ CPP="${CC-cc} -c qpponly -traditional-cpp"
+ cat > conftest.$ac_ext <<EOF
+#line 2296 "configure"
+#include "confdefs.h"
+#include <assert.h>
+Syntax Error
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:2302: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ :
+else
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ del -f conftest*
+ CPP="${CC-cc} -nologo -c -qpponly"
+ cat > conftest.$ac_ext <<EOF
+#line 2313 "configure"
+#include "confdefs.h"
+#include <assert.h>
+Syntax Error
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:2319: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ :
+else
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ del -f conftest*
+ CPP=/usr/bin/icc
+fi
+del -f conftest*
+fi
+del -f conftest*
+fi
+del -f conftest*
+ ac_cv_prog_CPP="$CPP"
+fi
+ CPP="$ac_cv_prog_CPP"
+else
+ ac_cv_prog_CPP="$CPP"
+fi
+echo "$ac_t""$CPP" 1>&6
+
+for ac_hdr in inttypes.h
+do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:2347: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 2352 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:2357: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ del -f conftest*
+ eval "ac_cv_header_$ac_safe=yes"
+else
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ del -f conftest*
+ eval "ac_cv_header_$ac_safe=no"
+fi
+del -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
+fi
+done
+
+if test $ac_cv_header_inttypes_h = no; then
+ U_HAVE_INTTYPES_H=0
+else
+ U_HAVE_INTTYPES_H=1
+fi
+if test "$CC" = ccc; then
+ echo "$ac_t"""C compiler set to CCC ${CC}" " 1>&6
+ case "${host}" in
+ alpha*-*-*) U_HAVE_INTTYPES_H=0;
+ esac
+fi
+
+
+
+# Check whether --with-iostream or --without-iostream was given.
+if test "${with_iostream+set}" = set; then
+ withval="$with_iostream"
+ case "${withval}" in
+ none) streams=none ;;
+ old) streams=198506 ;;
+ std) streams=199711 ;;
+ auto) streams= ;;
+ *) { echo "configure: error: bad value ${withval} for --with-iostream" 1>&2; exit 1; } ;;
+ esac
+else
+ streams=
+fi
+
+
+U_IOSTREAM_SOURCE=0
+if test x$streams != xnone
+then
+
+ ac_ext=C
+# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cxx_cross
+
+ echo $ac_n "checking iostream usability""... $ac_c" 1>&6
+echo "configure:2424: checking iostream usability" >&5
+ cat > conftest.$ac_ext <<EOF
+#line 2426 "configure"
+#include "confdefs.h"
+#include <iostream>
+int main() {
+
+; return 0; }
+EOF
+if { (eval echo configure:2433: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ ac_cv_header_iostream=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ ac_cv_header_iostream=no
+fi
+rm -f conftest*
+ echo "$ac_t""$ac_cv_header_iostream" 1>&6
+ if test $ac_cv_header_iostream = yes
+ then
+ U_IOSTREAM_SOURCE=199711
+ else
+ echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6
+echo "configure:2449: checking how to run the C++ preprocessor" >&5
+if test -z "$CXXCPP"; then
+if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ ac_ext=C
+# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cxx_cross
+ CXXCPP="${CXX-g++} -c -qpponly"
+ cat > conftest.$ac_ext <<EOF
+#line 2462 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:2467: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ :
+else
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ del -f conftest*
+ CXXCPP=/usr/bin/icc
+fi
+del -f conftest*
+ ac_cv_prog_CXXCPP="$CXXCPP"
+ac_ext=C
+# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cxx_cross
+fi
+fi
+CXXCPP="$ac_cv_prog_CXXCPP"
+echo "$ac_t""$CXXCPP" 1>&6
+
+ac_safe=`echo "iostream.h" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for iostream.h""... $ac_c" 1>&6
+echo "configure:2493: checking for iostream.h" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 2498 "configure"
+#include "confdefs.h"
+#include <iostream.h>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:2503: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ del -f conftest*
+ eval "ac_cv_header_$ac_safe=yes"
+else
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ del -f conftest*
+ eval "ac_cv_header_$ac_safe=no"
+fi
+del -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ :
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+ if test $ac_cv_header_iostream_h = yes; then
+ echo $ac_n "checking whether ostream is really defined""... $ac_c" 1>&6
+echo "configure:2526: checking whether ostream is really defined" >&5
+ if eval "test \"`echo '$''{'ac_cv_iostream_ok'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 2531 "configure"
+#include "confdefs.h"
+#include <iostream.h>
+int main() {
+ostream &testout = cout; testout << "test" << endl;
+; return 0; }
+EOF
+if { (eval echo configure:2538: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -x conftest${ac_exeext}; then
+ del -f conftest*
+ ac_cv_iostream_ok=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ del -f conftest*
+ ac_cv_iostream_ok=no
+fi
+del -f conftest*
+fi
+
+ echo "$ac_t""$ac_cv_iostream_ok" 1>&6
+ if test $ac_cv_iostream_ok = yes
+ then
+ U_IOSTREAM_SOURCE=198506
+ fi
+ fi
+ fi
+ if test x$streams != x
+ then
+ if test $U_IOSTREAM_SOURCE -ge $streams
+ then
+ U_IOSTREAM_SOURCE=$streams
+ else
+ { echo "configure: error: ${withval} iostream is not available" 1>&2; exit 1; }
+ fi
+ fi
+fi
+
+ac_ext=c
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
+
+
+echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
+echo "configure:2577: checking whether byte ordering is bigendian" >&5
+if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ ac_cv_c_bigendian=unknown
+# See if sys/param.h defines the BYTE_ORDER macro.
+cat > conftest.$ac_ext <<EOF
+#line 2584 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <sys/param.h>
+int main() {
+
+#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
+ bogus endian macros
+#endif
+; return 0; }
+EOF
+if { (eval echo configure:2595: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ del -f conftest*
+ # It does; now see whether it defined to BIG_ENDIAN or not.
+cat > conftest.$ac_ext <<EOF
+#line 2599 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <sys/param.h>
+int main() {
+
+#if BYTE_ORDER != BIG_ENDIAN
+ not big endian
+#endif
+; return 0; }
+EOF
+if { (eval echo configure:2610: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ del -f conftest*
+ ac_cv_c_bigendian=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ del -f conftest*
+ ac_cv_c_bigendian=no
+fi
+del -f conftest*
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+fi
+del -f conftest*
+if test $ac_cv_c_bigendian = unknown; then
+if test "$cross_compiling" = yes; then
+ { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+else
+ cat > conftest.$ac_ext <<EOF
+#line 2630 "configure"
+#include "confdefs.h"
+main () {
+ /* Are we little or big endian? From Harbison&Steele. */
+ union
+ {
+ long l;
+ char c[sizeof (long)];
+ } u;
+ u.l = 1;
+ exit (u.c[sizeof (long) - 1] == 1);
+}
+EOF
+if { (eval echo configure:2643: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -x conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+ ac_cv_c_bigendian=no
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ del -f conftest*
+ ac_cv_c_bigendian=yes
+fi
+del -f conftest*
+fi
+
+fi
+fi
+
+echo "$ac_t""$ac_cv_c_bigendian" 1>&6
+if test $ac_cv_c_bigendian = yes; then
+ cat >> confdefs.h <<\EOF
+#define WORDS_BIGENDIAN 1
+EOF
+
+fi
+
+if test $ac_cv_c_bigendian = no; then
+U_IS_BIG_ENDIAN=0
+U_ENDIAN_CHAR="l"
+else
+U_IS_BIG_ENDIAN=1
+U_ENDIAN_CHAR="b"
+fi
+
+
+U_HAVE_NL_LANGINFO_CODESET=0
+U_NL_LANGINFO_CODESET=-1
+echo $ac_n "checking for nl_langinfo""... $ac_c" 1>&6
+echo "configure:2678: checking for nl_langinfo" >&5
+if eval "test \"`echo '$''{'ac_cv_func_nl_langinfo'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 2683 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char nl_langinfo(); below. */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char nl_langinfo();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_nl_langinfo) || defined (__stub___nl_langinfo)
+choke me
+#else
+nl_langinfo();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:2706: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -x conftest${ac_exeext}; then
+ del -f conftest*
+ eval "ac_cv_func_nl_langinfo=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ del -f conftest*
+ eval "ac_cv_func_nl_langinfo=no"
+fi
+del -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'nl_langinfo`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ U_HAVE_NL_LANGINFO=1
+else
+ echo "$ac_t""no" 1>&6
+U_HAVE_NL_LANGINFO=0
+fi
+
+
+if test $U_HAVE_NL_LANGINFO -eq 1; then
+ echo $ac_n "checking for nl_langinfo's argument to obtain the codeset""... $ac_c" 1>&6
+echo "configure:2729: checking for nl_langinfo's argument to obtain the codeset" >&5
+if eval "test \"`echo '$''{'ac_cv_nl_langinfo_codeset'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ ac_cv_nl_langinfo_codeset="unknown"
+ for a in CODESET _NL_CTYPE_CODESET_NAME; do
+ cat > conftest.$ac_ext <<EOF
+#line 2736 "configure"
+#include "confdefs.h"
+#include <langinfo.h>
+int main() {
+nl_langinfo($a);
+; return 0; }
+EOF
+if { (eval echo configure:2743: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -x conftest${ac_exeext}; then
+ del -f conftest*
+ ac_cv_nl_langinfo_codeset="$a"; break
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+fi
+del -f conftest*
+ done
+fi
+
+echo "$ac_t""$ac_cv_nl_langinfo_codeset" 1>&6
+ if test x$ac_cv_nl_langinfo_codeset != xunknown
+ then
+ U_HAVE_NL_LANGINFO_CODESET=1
+ U_NL_LANGINFO_CODESET=$ac_cv_nl_langinfo_codeset
+ fi
+fi
+
+
+
+ac_ext=C
+# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cxx_cross
+
+echo $ac_n "checking for namespace support""... $ac_c" 1>&6
+echo "configure:2772: checking for namespace support" >&5
+if eval "test \"`echo '$''{'ac_cv_namespace_ok'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 2777 "configure"
+#include "confdefs.h"
+ namespace x_version {void f(){}};
+ namespace x = x_version;
+ using namespace x_version;
+
+int main() {
+ f();
+; return 0; }
+EOF
+if { (eval echo configure:2787: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -x conftest${ac_exeext}; then
+ del -f conftest*
+ ac_cv_namespace_ok=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ del -f conftest*
+ ac_cv_namespace_ok=no
+fi
+del -f conftest*
+fi
+
+echo "$ac_t""$ac_cv_namespace_ok" 1>&6
+U_HAVE_NAMESPACE=1
+if test $ac_cv_namespace_ok = no
+then
+ U_HAVE_NAMESPACE=0
+fi
+
+
+echo $ac_n "checking for properly overriding new and delete""... $ac_c" 1>&6
+echo "configure:2808: checking for properly overriding new and delete" >&5
+U_OVERRIDE_CXX_ALLOCATION=0
+U_HAVE_PLACEMENT_NEW=0
+if eval "test \"`echo '$''{'ac_cv_override_cxx_allocation_ok'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 2815 "configure"
+#include "confdefs.h"
+ #include <stdlib.h>
+ class UObject {
+ void *operator new(size_t size) {return malloc(size);}
+ void *operator new[](size_t size) {return malloc(size);}
+ void operator delete(void *p) {free(p);}
+ void operator delete[](void *p) {free(p);}
+ };
+
+int main() {
+
+; return 0; }
+EOF
+if { (eval echo configure:2829: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -x conftest${ac_exeext}; then
+ del -f conftest*
+ ac_cv_override_cxx_allocation_ok=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ del -f conftest*
+ ac_cv_override_cxx_allocation_ok=no
+fi
+del -f conftest*
+fi
+
+echo "$ac_t""$ac_cv_override_cxx_allocation_ok" 1>&6
+if test $ac_cv_override_cxx_allocation_ok = yes
+then
+ U_OVERRIDE_CXX_ALLOCATION=1
+ echo $ac_n "checking for placement new and delete""... $ac_c" 1>&6
+echo "configure:2846: checking for placement new and delete" >&5
+ if eval "test \"`echo '$''{'ac_cv_override_placement_new_ok'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 2851 "configure"
+#include "confdefs.h"
+ #include <stdlib.h>
+ class UObject {
+ void *operator new(size_t size) {return malloc(size);}
+ void *operator new[](size_t size) {return malloc(size);}
+ void operator delete(void *p) {free(p);}
+ void operator delete[](void *p) {free(p);}
+ void * operator new(size_t, void *ptr) { return ptr; }
+ void operator delete(void *, void *) {}
+ };
+
+int main() {
+
+; return 0; }
+EOF
+if { (eval echo configure:2867: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -x conftest${ac_exeext}; then
+ del -f conftest*
+ ac_cv_override_placement_new_ok=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ del -f conftest*
+ ac_cv_override_placement_new_ok=no
+fi
+del -f conftest*
+fi
+
+ echo "$ac_t""$ac_cv_override_placement_new_ok" 1>&6
+ if test $ac_cv_override_placement_new_ok = yes
+ then
+ U_HAVE_PLACEMENT_NEW=1
+ fi
+fi
+
+
+
+ac_ext=c
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
+
+echo $ac_n "checking for popen""... $ac_c" 1>&6
+echo "configure:2896: checking for popen" >&5
+if eval "test \"`echo '$''{'ac_cv_func_popen'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 2901 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char popen(); below. */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char popen();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_popen) || defined (__stub___popen)
+choke me
+#else
+popen();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:2924: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -x conftest${ac_exeext}; then
+ del -f conftest*
+ eval "ac_cv_func_popen=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ del -f conftest*
+ eval "ac_cv_func_popen=no"
+fi
+del -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'popen`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ :
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+if test x$ac_cv_func_popen = xyes
+then
+ U_HAVE_POPEN=1
+else
+ U_HAVE_POPEN=0
+fi
+
+
+echo $ac_n "checking for tzset""... $ac_c" 1>&6
+echo "configure:2952: checking for tzset" >&5
+if eval "test \"`echo '$''{'ac_cv_func_tzset'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 2957 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char tzset(); below. */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char tzset();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_tzset) || defined (__stub___tzset)
+choke me
+#else
+tzset();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:2980: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -x conftest${ac_exeext}; then
+ del -f conftest*
+ eval "ac_cv_func_tzset=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ del -f conftest*
+ eval "ac_cv_func_tzset=no"
+fi
+del -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'tzset`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ :
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+if test x$ac_cv_func_tzset = xyes
+then
+ U_TZSET=tzset
+else
+ echo $ac_n "checking for _tzset""... $ac_c" 1>&6
+echo "configure:3004: checking for _tzset" >&5
+if eval "test \"`echo '$''{'ac_cv_func__tzset'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 3009 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char _tzset(); below. */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char _tzset();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub__tzset) || defined (__stub____tzset)
+choke me
+#else
+_tzset();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:3032: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -x conftest${ac_exeext}; then
+ del -f conftest*
+ eval "ac_cv_func__tzset=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ del -f conftest*
+ eval "ac_cv_func__tzset=no"
+fi
+del -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'_tzset`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ :
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+ if test x$ac_cv_func__tzset = xyes
+ then
+ U_TZSET=_tzset
+ fi
+fi
+
+echo $ac_n "checking for tzname""... $ac_c" 1>&6
+echo "configure:3058: checking for tzname" >&5
+if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 3063 "configure"
+#include "confdefs.h"
+#ifndef __USE_POSIX
+#define __USE_POSIX
+#endif
+#include <time.h>
+#ifndef tzname /* For SGI. */
+extern char *tzname[]; /* RS6000 and others reject char **tzname. */
+#endif
+int main() {
+atoi(*tzname);
+; return 0; }
+EOF
+if { (eval echo configure:3076: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -x conftest${ac_exeext}; then
+ del -f conftest*
+ ac_cv_var_tzname=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ del -f conftest*
+ ac_cv_var_tzname=no
+fi
+del -f conftest*
+fi
+
+echo "$ac_t""$ac_cv_var_tzname" 1>&6
+if test $ac_cv_var_tzname = yes; then
+ U_TZNAME=tzname
+else
+ echo $ac_n "checking for _tzname""... $ac_c" 1>&6
+echo "configure:3093: checking for _tzname" >&5
+if eval "test \"`echo '$''{'ac_cv_var__tzname'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 3098 "configure"
+#include "confdefs.h"
+ #include <time.h>
+ extern char *_tzname[];
+
+int main() {
+ atoi(*_tzname);
+; return 0; }
+EOF
+if { (eval echo configure:3107: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -x conftest${ac_exeext}; then
+ del -f conftest*
+ ac_cv_var__tzname=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ del -f conftest*
+ ac_cv_var__tzname=no
+fi
+del -f conftest*
+fi
+
+echo "$ac_t""$ac_cv_var__tzname" 1>&6
+ if test $ac_cv_var__tzname = yes; then
+ U_TZNAME=_tzname
+ fi
+fi
+
+
+echo $ac_n "checking for timezone""... $ac_c" 1>&6
+echo "configure:3127: checking for timezone" >&5
+if eval "test \"`echo '$''{'ac_cv_var_timezone'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 3132 "configure"
+#include "confdefs.h"
+#ifndef __USE_POSIX
+#define __USE_POSIX
+#endif
+#ifndef __USE_XOPEN
+#define __USE_XOPEN
+#endif
+#include <time.h>
+
+int main() {
+timezone = 1;
+; return 0; }
+EOF
+if { (eval echo configure:3146: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -x conftest${ac_exeext}; then
+ del -f conftest*
+ ac_cv_var_timezone=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ del -f conftest*
+ ac_cv_var_timezone=no
+fi
+del -f conftest*
+fi
+
+echo "$ac_t""$ac_cv_var_timezone" 1>&6
+U_HAVE_TIMEZONE=0
+if test $ac_cv_var_timezone = yes; then
+ U_TIMEZONE=timezone
+ U_HAVE_TIMEZONE=1
+else
+ echo $ac_n "checking for __timezone""... $ac_c" 1>&6
+echo "configure:3165: checking for __timezone" >&5
+if eval "test \"`echo '$''{'ac_cv_var___timezone'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 3170 "configure"
+#include "confdefs.h"
+ #include <time.h>
+
+int main() {
+ __timezone = 1;
+; return 0; }
+EOF
+if { (eval echo configure:3178: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -x conftest${ac_exeext}; then
+ del -f conftest*
+ ac_cv_var___timezone=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ del -f conftest*
+ ac_cv_var___timezone=no
+fi
+del -f conftest*
+fi
+
+echo "$ac_t""$ac_cv_var___timezone" 1>&6
+ if test $ac_cv_var___timezone = yes; then
+ U_TIMEZONE=__timezone
+ U_HAVE_TIMEZONE=1
+ else
+ echo $ac_n "checking for _timezone""... $ac_c" 1>&6
+echo "configure:3196: checking for _timezone" >&5
+if eval "test \"`echo '$''{'ac_cv_var__timezone'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 3201 "configure"
+#include "confdefs.h"
+ #include <time.h>
+
+int main() {
+ _timezone = 1;
+; return 0; }
+EOF
+if { (eval echo configure:3209: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -x conftest${ac_exeext}; then
+ del -f conftest*
+ ac_cv_var__timezone=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ del -f conftest*
+ ac_cv_var__timezone=no
+fi
+del -f conftest*
+fi
+
+echo "$ac_t""$ac_cv_var__timezone" 1>&6
+ if test $ac_cv_var__timezone = yes; then
+ U_TIMEZONE=_timezone
+ U_HAVE_TIMEZONE=1
+ fi
+ fi
+fi
+
+
+
+echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
+echo "configure:3232: checking for ANSI C header files" >&5
+if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 3237 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:3245: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ del -f conftest*
+ ac_cv_header_stdc=yes
+else
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ del -f conftest*
+ ac_cv_header_stdc=no
+fi
+del -f conftest*
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+cat > conftest.$ac_ext <<EOF
+#line 3262 "configure"
+#include "confdefs.h"
+#include <string.h>
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 &&
+ egrep "memchr" conftest.i >/dev/null 2>&1; then
+ :
+else
+ del -f conftest*
+ ac_cv_header_stdc=no
+fi
+del -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+cat > conftest.$ac_ext <<EOF
+#line 3280 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 &&
+ egrep "free" conftest.i >/dev/null 2>&1; then
+ :
+else
+ del -f conftest*
+ ac_cv_header_stdc=no
+fi
+del -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+if test "$cross_compiling" = yes; then
+ :
+else
+ cat > conftest.$ac_ext <<EOF
+#line 3301 "configure"
+#include "confdefs.h"
+#include <ctype.h>
+#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int main () { int i; for (i = 0; i < 256; i++)
+if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
+exit (0); }
+
+EOF
+if { (eval echo configure:3312: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -x conftest${ac_exeext}; # && (./conftest; exit) 2>/dev/null
+then
+ :
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ del -f conftest*
+ ac_cv_header_stdc=no
+fi
+del -f conftest*
+fi
+
+fi
+fi
+
+echo "$ac_t""$ac_cv_header_stdc" 1>&6
+if test $ac_cv_header_stdc = yes; then
+ cat >> confdefs.h <<\EOF
+#define STDC_HEADERS 1
+EOF
+
+fi
+
+echo $ac_n "checking for int8_t""... $ac_c" 1>&6
+echo "configure:3336: checking for int8_t" >&5
+if eval "test \"`echo '$''{'ac_cv_type_int8_t'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 3341 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "(^|[^a-zA-Z_0-9])int8_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
+ del -f conftest*
+ ac_cv_type_int8_t=yes
+else
+ del -f conftest*
+ ac_cv_type_int8_t=no
+fi
+del -f conftest*
+
+fi
+echo "$ac_t""$ac_cv_type_int8_t" 1>&6
+if test $ac_cv_type_int8_t = no; then
+ cat >> confdefs.h <<\EOF
+#define int8_t signed char
+EOF
+
+fi
+
+echo $ac_n "checking for uint8_t""... $ac_c" 1>&6
+echo "configure:3369: checking for uint8_t" >&5
+if eval "test \"`echo '$''{'ac_cv_type_uint8_t'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 3374 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "(^|[^a-zA-Z_0-9])uint8_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
+ del -f conftest*
+ ac_cv_type_uint8_t=yes
+else
+ del -f conftest*
+ ac_cv_type_uint8_t=no
+fi
+del -f conftest*
+
+fi
+echo "$ac_t""$ac_cv_type_uint8_t" 1>&6
+if test $ac_cv_type_uint8_t = no; then
+ cat >> confdefs.h <<\EOF
+#define uint8_t unsigned char
+EOF
+
+fi
+
+echo $ac_n "checking for int16_t""... $ac_c" 1>&6
+echo "configure:3402: checking for int16_t" >&5
+if eval "test \"`echo '$''{'ac_cv_type_int16_t'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 3407 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "(^|[^a-zA-Z_0-9])int16_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
+ del -f conftest*
+ ac_cv_type_int16_t=yes
+else
+ del -f conftest*
+ ac_cv_type_int16_t=no
+fi
+del -f conftest*
+
+fi
+echo "$ac_t""$ac_cv_type_int16_t" 1>&6
+if test $ac_cv_type_int16_t = no; then
+ cat >> confdefs.h <<\EOF
+#define int16_t signed short
+EOF
+
+fi
+
+echo $ac_n "checking for uint16_t""... $ac_c" 1>&6
+echo "configure:3435: checking for uint16_t" >&5
+if eval "test \"`echo '$''{'ac_cv_type_uint16_t'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 3440 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "(^|[^a-zA-Z_0-9])uint16_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
+ del -f conftest*
+ ac_cv_type_uint16_t=yes
+else
+ del -f conftest*
+ ac_cv_type_uint16_t=no
+fi
+del -f conftest*
+
+fi
+echo "$ac_t""$ac_cv_type_uint16_t" 1>&6
+if test $ac_cv_type_uint16_t = no; then
+ cat >> confdefs.h <<\EOF
+#define uint16_t unsigned short
+EOF
+
+fi
+
+echo $ac_n "checking for int32_t""... $ac_c" 1>&6
+echo "configure:3468: checking for int32_t" >&5
+if eval "test \"`echo '$''{'ac_cv_type_int32_t'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 3473 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "(^|[^a-zA-Z_0-9])int32_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
+ del -f conftest*
+ ac_cv_type_int32_t=yes
+else
+ del -f conftest*
+ ac_cv_type_int32_t=no
+fi
+del -f conftest*
+
+fi
+echo "$ac_t""$ac_cv_type_int32_t" 1>&6
+if test $ac_cv_type_int32_t = no; then
+ cat >> confdefs.h <<\EOF
+#define int32_t signed long
+EOF
+
+fi
+
+echo $ac_n "checking for uint32_t""... $ac_c" 1>&6
+echo "configure:3501: checking for uint32_t" >&5
+if eval "test \"`echo '$''{'ac_cv_type_uint32_t'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 3506 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "(^|[^a-zA-Z_0-9])uint32_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
+ del -f conftest*
+ ac_cv_type_uint32_t=yes
+else
+ del -f conftest*
+ ac_cv_type_uint32_t=no
+fi
+del -f conftest*
+
+fi
+echo "$ac_t""$ac_cv_type_uint32_t" 1>&6
+if test $ac_cv_type_uint32_t = no; then
+ cat >> confdefs.h <<\EOF
+#define uint32_t unsigned long
+EOF
+
+fi
+
+echo $ac_n "checking for int64_t""... $ac_c" 1>&6
+echo "configure:3534: checking for int64_t" >&5
+if eval "test \"`echo '$''{'ac_cv_type_int64_t'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 3539 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "(^|[^a-zA-Z_0-9])int64_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
+ del -f conftest*
+ ac_cv_type_int64_t=yes
+else
+ del -f conftest*
+ ac_cv_type_int64_t=no
+fi
+del -f conftest*
+
+fi
+echo "$ac_t""$ac_cv_type_int64_t" 1>&6
+if test $ac_cv_type_int64_t = no; then
+ cat >> confdefs.h <<\EOF
+#define int64_t signed long long
+EOF
+
+fi
+
+echo $ac_n "checking for uint64_t""... $ac_c" 1>&6
+echo "configure:3567: checking for uint64_t" >&5
+if eval "test \"`echo '$''{'ac_cv_type_uint64_t'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 3572 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "(^|[^a-zA-Z_0-9])uint64_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
+ del -f conftest*
+ ac_cv_type_uint64_t=yes
+else
+ del -f conftest*
+ ac_cv_type_uint64_t=no
+fi
+del -f conftest*
+
+fi
+echo "$ac_t""$ac_cv_type_uint64_t" 1>&6
+if test $ac_cv_type_uint64_t = no; then
+ cat >> confdefs.h <<\EOF
+#define uint64_t unsigned long long
+EOF
+
+fi
+
+
+if test $ac_cv_type_int8_t = no; then
+HAVE_INT8_T=0
+else
+HAVE_INT8_T=1
+fi
+
+
+if test $ac_cv_type_uint8_t = no; then
+HAVE_UINT8_T=0
+else
+HAVE_UINT8_T=1
+fi
+
+
+if test $ac_cv_type_int16_t = no; then
+HAVE_INT16_T=0
+else
+HAVE_INT16_T=1
+fi
+
+
+if test $ac_cv_type_uint16_t = no; then
+HAVE_UINT16_T=0
+else
+HAVE_UINT16_T=1
+fi
+
+
+if test $ac_cv_type_int32_t = no; then
+HAVE_INT32_T=0
+else
+HAVE_INT32_T=1
+fi
+
+
+if test $ac_cv_type_uint32_t = no; then
+HAVE_UINT32_T=0
+else
+HAVE_UINT32_T=1
+fi
+
+
+if test $ac_cv_type_int64_t = no; then
+HAVE_INT64_T=0
+else
+HAVE_INT64_T=1
+fi
+
+
+if test $ac_cv_type_uint64_t = no; then
+HAVE_UINT64_T=0
+else
+HAVE_UINT64_T=1
+fi
+
+
+ac_safe=`echo "wchar.h" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for wchar.h""... $ac_c" 1>&6
+echo "configure:3658: checking for wchar.h" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 3663 "configure"
+#include "confdefs.h"
+#include <wchar.h>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:3668: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ del -f conftest*
+ eval "ac_cv_header_$ac_safe=yes"
+else
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ del -f conftest*
+ eval "ac_cv_header_$ac_safe=no"
+fi
+del -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ :
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+if test "$ac_cv_header_wchar_h" = no
+then
+ U_HAVE_WCHAR_H=0
+ U_HAVE_WCSCPY=0
+else
+ cat >> confdefs.h <<\EOF
+#define HAVE_WCHAR_H 1
+EOF
+
+ U_HAVE_WCHAR_H=1
+
+echo $ac_n "checking for library containing wcscpy""... $ac_c" 1>&6
+echo "configure:3701: checking for library containing wcscpy" >&5
+if eval "test \"`echo '$''{'ac_cv_search_wcscpy'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ ac_func_search_save_LIBS="$LIBS"
+ac_cv_search_wcscpy="no"
+cat > conftest.$ac_ext <<EOF
+#line 3708 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char wcscpy();
+
+int main() {
+wcscpy()
+; return 0; }
+EOF
+if { (eval echo configure:3719: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -x conftest${ac_exeext}; then
+ del -f conftest*
+ ac_cv_search_wcscpy="none required"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+fi
+del -f conftest*
+test "$ac_cv_search_wcscpy" = "no" && for i in wcs w; do
+LIBS="-l$i $ac_func_search_save_LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 3730 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char wcscpy();
+
+int main() {
+wcscpy()
+; return 0; }
+EOF
+if { (eval echo configure:3741: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -x conftest${ac_exeext}; then
+ del -f conftest*
+ ac_cv_search_wcscpy="-l$i"
+break
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+fi
+del -f conftest*
+done
+LIBS="$ac_func_search_save_LIBS"
+fi
+
+echo "$ac_t""$ac_cv_search_wcscpy" 1>&6
+if test "$ac_cv_search_wcscpy" != "no"; then
+ test "$ac_cv_search_wcscpy" = "none required" || LIBS="$ac_cv_search_wcscpy $LIBS"
+
+else :
+
+fi
+ if test "$ac_cv_search_wcscpy" != no; then
+ U_HAVE_WCSCPY=1
+ else
+ U_HAVE_WCSCPY=0
+ fi
+fi
+
+
+
+ac_default_sizeof_wchar_t=4
+echo $ac_n "checking size of wchar_t""... $ac_c" 1>&6
+echo "configure:3772: checking size of wchar_t" >&5
+if eval "test \"`echo '$''{'ac_cv_sizeof_wchar_t'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_sizeof_wchar_t=$ac_default_sizeof_wchar_t
+else
+ cat > conftest.$ac_ext <<EOF
+#line 3780 "configure"
+#include "confdefs.h"
+#if STDC_HEADERS
+#include <stddef.h>
+#endif
+#if HAVE_WCHAR_H
+#include <string.h>
+#include <wchar.h>
+#endif
+#include <stdio.h>
+main()
+{
+ FILE *f=fopen("conftestval", "w");
+ if (!f) exit(1);
+ fprintf(f, "%d\n", sizeof(wchar_t));
+ exit(0);
+}
+EOF
+if { (eval echo configure:3798: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -x conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+ ac_cv_sizeof_wchar_t=`cat conftestval`
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ del -f conftest*
+ ac_cv_sizeof_wchar_t=0
+fi
+del -f conftest*
+fi
+
+fi
+echo "$ac_t""$ac_cv_sizeof_wchar_t" 1>&6
+cat >> confdefs.h <<EOF
+#define SIZEOF_WCHAR_T $ac_cv_sizeof_wchar_t
+EOF
+
+
+U_SIZEOF_WCHAR_T=$ac_cv_sizeof_wchar_t
+if test $U_SIZEOF_WCHAR_T = 0; then
+ if test $U_HAVE_WCHAR_H=1; then
+ { echo "configure: error: There is wchar.h but the size of wchar_t is 0" 1>&2; exit 1; }
+ fi
+fi
+
+
+ECHO_N=$ac_n
+ECHO_C=$ac_c
+
+
+
+# Check whether --enable-extras or --disable-extras was given.
+if test "${enable_extras+set}" = set; then
+ enableval="$enable_extras"
+ case "${enableval}" in
+ yes) extras=true ;;
+ no) extras=false ;;
+ *) { echo "configure: error: bad value ${enableval} for --enable-extras" 1>&2; exit 1; } ;;
+ esac
+else
+ extras=true
+fi
+
+
+
+if test "$extras" = true; then
+ EXTRAS_TRUE=
+ EXTRAS_FALSE='#'
+else
+ EXTRAS_TRUE='#'
+ EXTRAS_FALSE=
+fi
+# Check whether --enable-extras or --disable-extras was given.
+if test "${enable_extras+set}" = set; then
+ enableval="$enable_extras"
+ case "${enableval}" in
+ yes) ustdio=true ;;
+ no) ustdio=false ;;
+ *) { echo "configure: error: bad value ${enableval} for --enable-ustdio" 1>&2; exit 1; } ;;
+ esac
+else
+ ustdio=true
+fi
+
+
+
+if test "$ustdio" = true; then
+ USTDIO_TRUE=
+ USTDIO_FALSE='#'
+else
+ USTDIO_TRUE='#'
+ USTDIO_FALSE=
+fi
+
+# Check whether --enable-layout or --disable-layout was given.
+if test "${enable_layout+set}" = set; then
+ enableval="$enable_layout"
+ case "${enableval}" in
+ yes) layout=true ;;
+ no) layout=false ;;
+ *) { echo "configure: error: bad value ${enableval} for --enable-layout" 1>&2; exit 1; } ;;
+ esac
+else
+ layout=true
+fi
+
+
+
+if test "$layout" = true; then
+ LAYOUT_TRUE=
+ LAYOUT_FALSE='#'
+else
+ LAYOUT_TRUE='#'
+ LAYOUT_FALSE=
+fi
+
+# Check whether --with-data-packaging or --without-data-packaging was given.
+if test "${with_data_packaging+set}" = set; then
+ withval="$with_data_packaging"
+ case "${withval}" in
+ files|archive|library) datapackaging=$withval ;;
+ auto) datapackaging=$withval ;;
+ common) datapackaging=archive ;;
+ dll) datapackaging=library ;;
+ *) { echo "configure: error: bad value ${withval} for --with-iostream" 1>&2; exit 1; } ;;
+ esac
+else
+ datapackaging=
+fi
+
+
+thesysconfdir=`eval echo $sysconfdir`
+
+thedatadir=`eval echo $datadir`
+
+thelibdir=`test "x$exec_prefix" = xNONE && exec_prefix="$prefix"; eval echo $libdir`
+
+case $datapackaging in
+ common)
+ pkgicudatadir=$datadir
+ thepkgicudatadir=$thedatadir
+ ;;
+ *)
+ pkgicudatadir=$libdir
+ thepkgicudatadir=$thelibdir
+ ;;
+esac
+
+
+
+
+# Check whether --enable-mapped or --disable-mapped was given.
+if test "${enable_mapped+set}" = set; then
+ enableval="$enable_mapped"
+ case "${enableval}" in
+ yes) mapped=archive ;;
+ no) mapped=library ;;
+ *) { echo "configure: error: bad value ${enableval} for --enable-mapped; use --with-data-packaging now" 1>&2; exit 1; } ;;
+ esac
+else
+ mapped=
+fi
+
+
+if test x"$mapped" != x; then
+ case $mapped in
+ archive)
+ echo "configure: warning: use --with-data-packaging=archive instead of --enable-mapped" 1>&2
+ ;;
+ library)
+ echo "configure: warning: use --with-data-packaging=library instead of --disable-mapped" 1>&2
+ ;;
+ esac
+ if test x"$datapackaging" != x -a x"$mapped" != x"$datapackaging"; then
+ { echo "configure: error: conflicting values used for --with-data-packaging and deprecated --enable-mapped" 1>&2; exit 1; }
+ fi
+ datapackaging=$mapped
+fi
+
+if test x"$datapackaging" = x -o x"$datapackaging" = xauto; then
+ datapackaging=library
+fi
+
+case "$datapackaging" in
+ files)
+ DATA_PACKAGING_CPPFLAGS=-DUDATA_FILES
+ DATA_PACKAGING_MODE=files
+ ;;
+ archive)
+ DATA_PACKAGING_CPPFLAGS=-DUDATA_MAP
+ DATA_PACKAGING_MODE=common
+ ;;
+ library)
+ DATA_PACKAGING_CPPFLAGS=-DUDATA_DLL
+ DATA_PACKAGING_MODE=dll
+ ;;
+esac
+
+
+
+echo $ac_n "checking for a library suffix to use""... $ac_c" 1>&6
+echo "configure:3980: checking for a library suffix to use" >&5
+# Check whether --with-library-suffix or --without-library-suffix was given.
+if test "${with_library_suffix+set}" = set; then
+ withval="$with_library_suffix"
+ ICULIBSUFFIX="${withval}"
+else
+ ICULIBSUFFIX=
+fi
+
+msg=$ICULIBSUFFIX
+if test "$msg" = ""; then
+ msg=none
+fi
+echo "$ac_t""$msg" 1>&6
+
+if test "$ICULIBSUFFIX" != ""
+then
+ U_HAVE_LIB_SUFFIX=1
+ ICULIBSUFFIXCNAME=`echo _$ICULIBSUFFIX | sed 's/[^A-Za-z0-9_]/_/g'`
+else
+ U_HAVE_LIB_SUFFIX=0
+fi
+
+
+
+# Check whether --enable-tests or --disable-tests was given.
+if test "${enable_tests+set}" = set; then
+ enableval="$enable_tests"
+ case "${enableval}" in
+ yes) tests=true ;;
+ no) tests=false ;;
+ *) { echo "configure: error: bad value ${enableval} for --enable-tests" 1>&2; exit 1; } ;;
+ esac
+else
+ tests=true
+fi
+
+
+
+if test "$tests" = true; then
+ TESTS_TRUE=
+ TESTS_FALSE='#'
+else
+ TESTS_TRUE='#'
+ TESTS_FALSE=
+fi
+
+# Check whether --enable-samples or --disable-samples was given.
+if test "${enable_samples+set}" = set; then
+ enableval="$enable_samples"
+ case "${enableval}" in
+ yes) samples=true ;;
+ no) samples=false ;;
+ *) { echo "configure: error: bad value ${enableval} for --enable-samples" 1>&2; exit 1; } ;;
+ esac
+else
+ samples=true
+fi
+
+
+
+if test "$samples" = true; then
+ SAMPLES_TRUE=
+ SAMPLES_FALSE='#'
+else
+ SAMPLES_TRUE='#'
+ SAMPLES_FALSE=
+fi
+
+ICUDATA_CHAR=$U_ENDIAN_CHAR
+
+case "${host}" in
+ *-*-solaris*) platform=U_SOLARIS ;;
+ *-*-linux*) platform=U_LINUX ;;
+ *-*-*bsd*) platform=U_BSD ;;
+ *-*-aix*) platform=AIX ;;
+ *-*-hpux*) platform=HPUX ;;
+ *-apple-darwin*|*-apple-rhapsody*) platform=U_DARWIN ;;
+ *-*-cygwin*|*-*-mingw*) platform=U_CYGWIN ;;
+ *-*ibm-openedition*|*-*-os390*) platform=OS390
+ ICUDATA_CHAR="e" ;;
+ *-*-os400*) platform=OS400
+ ICUDATA_CHAR="e" ;;
+ *-*-nto*) platform=U_QNX ;;
+ *-dec-osf*) platform=U_OSF ;;
+ *-*-beos) platform=U_BEOS ;;
+ *-*-irix*) platform=IRIX ;;
+ *-ncr-*) platform=U_MPRAS ;;
+ *-sequent-*) platform=PTX ;;
+ *) platform=U_UNKNOWN_PLATFORM ;;
+esac
+
+
+platform_make_fragment_name="$icu_cv_host_frag"
+platform_make_fragment='$(top_srcdir)/config/'"$platform_make_fragment_name"
+
+
+
+case "${host}" in
+ *-*-solaris*) ld_rpath_suf=":" ;;
+ *-*-linux*) ld_rpath_suf=" " ;;
+ *-*-*bsd*) ld_rpath_suf=" " ;;
+ *-*-aix*) ld_rpath_suf="" ;;
+ *-*-hpux*) ld_rpath_suf=":" ;;
+ *-*ibm-openedition*|*-*-os390*) ld_rpath_suf="" ;;
+ *-*-os400*) ld_rpath_suf=" " ;;
+ *-sequent-*) ld_rpath_suf="" ;;
+ *-*-irix*) ld_rpath_suf=" " ;;
+ *) ld_rpath_suf="" ;;
+esac
+
+
+case "${host}" in
+ *-*-hpux*)
+ if test "${icu_cv_host_frag}" = "mh-hpux-cc"; then
+ for file in samples/date/date \
+ samples/cal/cal test/cintltst/cintltst \
+ tools/makeconv/makeconv tools/genrb/genrb \
+ tools/genrb/derb tools/genccode/genccode \
+ tools/gencmn/gencmn tools/gencmn/decmn \
+ tools/gencnval/gencnval tools/gennorm/gennorm \
+ tools/gennames/gennames tools/gentest/gentest \
+ tools/pkgdata/pkgdata tools/genprops/genprops \
+ tools/gensprep/gensprep
+ do
+ if test -f $file.c; then
+ mv $file.c $file.cpp
+ else
+ echo "# $file.c does not exist or is already renamed [warning]"
+ fi
+ done
+ fi
+ ;;
+esac
+
+if test "${FORCE_LIBS}" != ""; then
+ echo " *** Overriding automatically chosen LIBS=$LIBS, using instead FORCE_LIBS=${FORCE_LIBS}" 1>&6
+ LIBS=${FORCE_LIBS}
+fi
+
+
+if test "${AIX_SHLIB}" != ""; then
+ echo " *** setting AIX_SHLIB (AIX only) to ${AIX_SHLIB}]" 1>&6
+else
+ AIX_SHLIB=makeC++SharedLib_r
+fi
+
+
+
+
+
+if test $ICU_USE_THREADS -ne 0
+then
+ CPPFLAGS="$CPPFLAGS \$(THREADSCPPFLAGS)"
+ CFLAGS="$CFLAGS \$(THREADSCFLAGS)"
+ CXXFLAGS="$CXXFLAGS \$(THREADSCXXFLAGS)"
+fi
+
+if test "$ac_cv_lib_dld_shl_load" = "yes"; then
+ CPPFLAGS="${CPPFLAGS} -DICU_USE_SHL_LOAD"
+fi
+
+
+if test "$ac_cv_func_dllload" = "yes"; then
+ CPPFLAGS="${CPPFLAGS} -DICU_USE_SHL_LOAD"
+fi
+
+trap '' 1 2 15
+cat > confcache <<\EOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs. It is not useful on other systems.
+# If it contains results you don't want to keep, you may remove or edit it.
+#
+# By default, configure uses ./config.cache as the cache file,
+# creating it if it does not exist already. You can give configure
+# the --cache-file=FILE option to use a different cache file; that is
+# what configure does when it calls configure scripts in
+# subdirectories, so they share the cache.
+# Giving --cache-file=/dev/null disables caching, for debugging configure.
+# config.status only pays attention to the cache file if you give it the
+# --recheck option to rerun configure.
+#
+EOF
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(set) 2>&1 |
+ case `(ac_space=' '; set | grep ac_space) 2>&1` in
+ *ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote substitution
+ # turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ -e "s/'/'\\\\''/g" \
+ -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
+ ;;
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
+ ;;
+ esac >> confcache
+if cmp -s $cache_file confcache; then
+ :
+else
+ if test -w $cache_file; then
+ echo "updating cache $cache_file"
+ cat confcache > $cache_file
+ else
+ echo "not updating unwritable cache $cache_file"
+ fi
+fi
+del -f confcache
+
+trap 'del -f conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Any assignment to VPATH causes Sun make to only execute
+# the first set of double-colon rules, so remove it if not needed.
+# If there is a colon in the path, we need to keep it.
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d'
+fi
+
+trap 'del -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
+
+DEFS=-DHAVE_CONFIG_H
+
+# Without the "./", some shells look in PATH for config.status.
+: ${CONFIG_STATUS=./config.status}
+
+echo creating $CONFIG_STATUS
+del -f $CONFIG_STATUS
+cat > $CONFIG_STATUS <<EOF
+#! /usr/bin/qsh
+# Generated automatically by configure.
+# Run this file to recreate the current configuration.
+# This directory was configured as follows,
+# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+#
+# $0 $ac_configure_args
+#
+# Compiler output produced by configure, useful for debugging
+# configure, is in ./config.log if it exists.
+
+ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
+for ac_option
+do
+ case "\$ac_option" in
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ echo "running \${CONFIG_SHELL-/usr/bin/qsh} $0 $ac_configure_args --no-create --no-recursion"
+ exec \${CONFIG_SHELL-/usr/bin/qsh} $0 $ac_configure_args --no-create --no-recursion ;;
+ -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
+ echo "$CONFIG_STATUS generated by autoconf version 2.13"
+ exit 0 ;;
+ -help | --help | --hel | --he | --h)
+ echo "\$ac_cs_usage"; exit 0 ;;
+ *) echo "\$ac_cs_usage"; exit 1 ;;
+ esac
+done
+
+ac_given_srcdir=$srcdir
+ac_given_INSTALL="$INSTALL"
+
+trap 'del -f `echo "icudefs.mk \
+ Makefile \
+ data/Makefile data/icupkg.inc \
+ common/Makefile config/Makefile.inc i18n/Makefile \
+ layout/Makefile \
+ layoutex/Makefile \
+ extra/Makefile extra/ustdio/Makefile \
+ extra/uconv/Makefile extra/scrptrun/Makefile
+ stubdata/Makefile \
+ tools/Makefile tools/ctestfw/Makefile tools/makeconv/Makefile \
+ tools/genrb/Makefile \
+ tools/genuca/Makefile \
+ tools/genccode/Makefile \
+ tools/gencmn/Makefile \
+ tools/gencnval/Makefile \
+ tools/gennames/Makefile \
+ tools/gentest/Makefile \
+ tools/gennorm/Makefile \
+ tools/genprops/Makefile \
+ tools/genpname/Makefile \
+ tools/genbrk/Makefile \
+ tools/gensprep/Makefile \
+ tools/icuswap/Makefile \
+ tools/pkgdata/Makefile \
+ tools/toolutil/Makefile \
+ tools/dumpce/Makefile \
+ test/Makefile test/testdata/Makefile \
+ test/intltest/Makefile \
+ test/cintltst/Makefile \
+ test/iotest/Makefile \
+ test/ieeetest/Makefile \
+ test/thaitest/Makefile \
+ test/testmap/Makefile \
+ test/letest/Makefile \
+ test/threadtest/Makefile \
+ samples/Makefile samples/date/Makefile \
+ samples/cal/Makefile samples/layout/Makefile \
+ common/unicode/platform.h common/icucfg.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
+EOF
+cat >> $CONFIG_STATUS <<EOF
+
+# Protect against being on the right side of a sed subst in config.status.
+sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
+ s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
+$ac_vpsub
+$extrasub
+s%@SHELL@%$SHELL%g
+s%@CFLAGS@%$CFLAGS%g
+s%@CPPFLAGS@%$CPPFLAGS%g
+s%@CXXFLAGS@%$CXXFLAGS%g
+s%@FFLAGS@%$FFLAGS%g
+s%@DEFS@%$DEFS%g
+s%@LDFLAGS@%$LDFLAGS%g
+s%@LIBS@%$LIBS%g
+s%@exec_prefix@%$exec_prefix%g
+s%@prefix@%$prefix%g
+s%@program_transform_name@%$program_transform_name%g
+s%@bindir@%$bindir%g
+s%@sbindir@%$sbindir%g
+s%@libexecdir@%$libexecdir%g
+s%@datadir@%$datadir%g
+s%@sysconfdir@%$sysconfdir%g
+s%@sharedstatedir@%$sharedstatedir%g
+s%@localstatedir@%$localstatedir%g
+s%@libdir@%$libdir%g
+s%@includedir@%$includedir%g
+s%@oldincludedir@%$oldincludedir%g
+s%@infodir@%$infodir%g
+s%@mandir@%$mandir%g
+s%@PACKAGE@%$PACKAGE%g
+s%@VERSION@%$VERSION%g
+s%@LIB_VERSION@%$LIB_VERSION%g
+s%@LIB_VERSION_MAJOR@%$LIB_VERSION_MAJOR%g
+s%@UNICODE_VERSION@%$UNICODE_VERSION%g
+s%@CC@%$CC%g
+s%@CXX@%$CXX%g
+s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
+s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
+s%@INSTALL_DATA@%$INSTALL_DATA%g
+s%@AUTOCONF@%$AUTOCONF%g
+s%@STRIP@%$STRIP%g
+s%@U_MAKE@%$U_MAKE%g
+s%@DOXYGEN@%$DOXYGEN%g
+s%@host@%$host%g
+s%@host_alias@%$host_alias%g
+s%@host_cpu@%$host_cpu%g
+s%@host_vendor@%$host_vendor%g
+s%@host_os@%$host_os%g
+s%@EXEEXT@%$EXEEXT%g
+s%@ARFLAGS@%$ARFLAGS%g
+s%@COMPILE_LINK_ENVVAR@%$COMPILE_LINK_ENVVAR%g
+s%@LIB_M@%$LIB_M%g
+s%@ENABLE_SHARED@%$ENABLE_SHARED%g
+s%@ENABLE_STATIC@%$ENABLE_STATIC%g
+s%@ENABLE_DEBUG@%$ENABLE_DEBUG%g
+s%@ENABLE_RELEASE@%$ENABLE_RELEASE%g
+s%@RANLIB@%$RANLIB%g
+s%@AR@%$AR%g
+s%@U_DISABLE_RENAMING@%$U_DISABLE_RENAMING%g
+s%@ENABLE_RPATH@%$ENABLE_RPATH%g
+s%@U_INLINE@%$U_INLINE%g
+s%@THREADS_TRUE@%$THREADS_TRUE%g
+s%@THREADS_FALSE@%$THREADS_FALSE%g
+s%@ICU_USE_THREADS@%$ICU_USE_THREADS%g
+s%@HAVE_MMAP@%$HAVE_MMAP%g
+s%@CPP@%$CPP%g
+s%@U_HAVE_INTTYPES_H@%$U_HAVE_INTTYPES_H%g
+s%@CXXCPP@%$CXXCPP%g
+s%@U_IOSTREAM_SOURCE@%$U_IOSTREAM_SOURCE%g
+s%@U_IS_BIG_ENDIAN@%$U_IS_BIG_ENDIAN%g
+s%@U_HAVE_NL_LANGINFO@%$U_HAVE_NL_LANGINFO%g
+s%@U_HAVE_NL_LANGINFO_CODESET@%$U_HAVE_NL_LANGINFO_CODESET%g
+s%@U_NL_LANGINFO_CODESET@%$U_NL_LANGINFO_CODESET%g
+s%@U_HAVE_NAMESPACE@%$U_HAVE_NAMESPACE%g
+s%@U_OVERRIDE_CXX_ALLOCATION@%$U_OVERRIDE_CXX_ALLOCATION%g
+s%@U_HAVE_PLACEMENT_NEW@%$U_HAVE_PLACEMENT_NEW%g
+s%@U_HAVE_POPEN@%$U_HAVE_POPEN%g
+s%@U_TZSET@%$U_TZSET%g
+s%@U_TZNAME@%$U_TZNAME%g
+s%@U_HAVE_TIMEZONE@%$U_HAVE_TIMEZONE%g
+s%@U_TIMEZONE@%$U_TIMEZONE%g
+s%@HAVE_INT8_T@%$HAVE_INT8_T%g
+s%@HAVE_UINT8_T@%$HAVE_UINT8_T%g
+s%@HAVE_INT16_T@%$HAVE_INT16_T%g
+s%@HAVE_UINT16_T@%$HAVE_UINT16_T%g
+s%@HAVE_INT32_T@%$HAVE_INT32_T%g
+s%@HAVE_UINT32_T@%$HAVE_UINT32_T%g
+s%@HAVE_INT64_T@%$HAVE_INT64_T%g
+s%@HAVE_UINT64_T@%$HAVE_UINT64_T%g
+s%@U_HAVE_WCHAR_H@%$U_HAVE_WCHAR_H%g
+s%@U_HAVE_WCSCPY@%$U_HAVE_WCSCPY%g
+s%@U_SIZEOF_WCHAR_T@%$U_SIZEOF_WCHAR_T%g
+s%@ECHO_N@%$ECHO_N%g
+s%@ECHO_C@%$ECHO_C%g
+s%@EXTRAS_TRUE@%$EXTRAS_TRUE%g
+s%@EXTRAS_FALSE@%$EXTRAS_FALSE%g
+s%@USTDIO_TRUE@%$USTDIO_TRUE%g
+s%@USTDIO_FALSE@%$USTDIO_FALSE%g
+s%@LAYOUT_TRUE@%$LAYOUT_TRUE%g
+s%@LAYOUT_FALSE@%$LAYOUT_FALSE%g
+s%@thesysconfdir@%$thesysconfdir%g
+s%@thedatadir@%$thedatadir%g
+s%@thelibdir@%$thelibdir%g
+s%@pkgicudatadir@%$pkgicudatadir%g
+s%@thepkgicudatadir@%$thepkgicudatadir%g
+s%@DATA_PACKAGING_CPPFLAGS@%$DATA_PACKAGING_CPPFLAGS%g
+s%@DATA_PACKAGING_MODE@%$DATA_PACKAGING_MODE%g
+s%@ICULIBSUFFIX@%$ICULIBSUFFIX%g
+s%@U_HAVE_LIB_SUFFIX@%$U_HAVE_LIB_SUFFIX%g
+s%@ICULIBSUFFIXCNAME@%$ICULIBSUFFIXCNAME%g
+s%@TESTS_TRUE@%$TESTS_TRUE%g
+s%@TESTS_FALSE@%$TESTS_FALSE%g
+s%@SAMPLES_TRUE@%$SAMPLES_TRUE%g
+s%@SAMPLES_FALSE@%$SAMPLES_FALSE%g
+s%@ICUDATA_CHAR@%$ICUDATA_CHAR%g
+s%@platform@%$platform%g
+s%@platform_make_fragment_name@%$platform_make_fragment_name%g
+s%@platform_make_fragment@%$platform_make_fragment%g
+s%@ld_rpath_suf@%$ld_rpath_suf%g
+s%@AIX_SHLIB@%$AIX_SHLIB%g
+
+CEOF
+EOF
+
+cat >> $CONFIG_STATUS <<\EOF
+
+# Split the substitutions into bite-sized pieces for seds with
+# small command number limits, like on Digital OSF/1 and HP-UX.
+ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
+ac_file=1 # Number of current file.
+ac_beg=1 # First line for current file.
+ac_end=$ac_max_sed_cmds # Line after last line for current file.
+ac_more_lines=:
+ac_sed_cmds=""
+while $ac_more_lines; do
+ if test $ac_beg -gt 1; then
+ sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
+ else
+ sed "${ac_end}q" conftest.subs > conftest.s$ac_file
+ fi
+ if test ! -s conftest.s$ac_file; then
+ ac_more_lines=false
+ del -f conftest.s$ac_file
+ else
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds="sed -f conftest.s$ac_file"
+ else
+ ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
+ fi
+ ac_file=`expr $ac_file + 1`
+ ac_beg=$ac_end
+ ac_end=`expr $ac_end + $ac_max_sed_cmds`
+ fi
+done
+if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds=cat
+fi
+EOF
+
+cat >> $CONFIG_STATUS <<EOF
+
+CONFIG_FILES=\${CONFIG_FILES-"icudefs.mk \
+ Makefile \
+ data/Makefile data/icupkg.inc \
+ common/Makefile config/Makefile.inc i18n/Makefile \
+ layout/Makefile \
+ layoutex/Makefile \
+ extra/Makefile extra/ustdio/Makefile \
+ extra/uconv/Makefile extra/scrptrun/Makefile
+ stubdata/Makefile \
+ tools/Makefile tools/ctestfw/Makefile tools/makeconv/Makefile \
+ tools/genrb/Makefile \
+ tools/genuca/Makefile \
+ tools/genccode/Makefile \
+ tools/gencmn/Makefile \
+ tools/gencnval/Makefile \
+ tools/gennames/Makefile \
+ tools/gentest/Makefile \
+ tools/gennorm/Makefile \
+ tools/genprops/Makefile \
+ tools/genpname/Makefile \
+ tools/genbrk/Makefile \
+ tools/gensprep/Makefile \
+ tools/icuswap/Makefile \
+ tools/pkgdata/Makefile \
+ tools/toolutil/Makefile \
+ tools/dumpce/Makefile \
+ test/Makefile test/testdata/Makefile \
+ test/intltest/Makefile \
+ test/cintltst/Makefile \
+ test/iotest/Makefile \
+ test/ieeetest/Makefile \
+ test/thaitest/Makefile \
+ test/testmap/Makefile \
+ test/letest/Makefile \
+ test/threadtest/Makefile \
+ samples/Makefile samples/date/Makefile \
+ samples/cal/Makefile samples/layout/Makefile \
+ common/unicode/platform.h"}
+EOF
+cat >> $CONFIG_STATUS <<\EOF
+for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case "$ac_file" in
+ *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
+ ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+ *) ac_file_in="${ac_file}.in" ;;
+ esac
+
+ # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
+
+ # Remove last slash and all that follows it. Not all systems have dirname.
+ ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
+ if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
+ # The file is in a subdirectory.
+ test ! -d "$ac_dir" && mkdir "$ac_dir"
+ ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
+ # A "../" for each directory in $ac_dir_suffix.
+ ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
+ else
+ ac_dir_suffix= ac_dots=
+ fi
+
+ case "$ac_given_srcdir" in
+ .) srcdir=.
+ if test -z "$ac_dots"; then top_srcdir=.
+ else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
+ /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
+ *) # Relative path.
+ srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
+ top_srcdir="$ac_dots$ac_given_srcdir" ;;
+ esac
+
+ case "$ac_given_INSTALL" in
+ [/$]*) INSTALL="$ac_given_INSTALL" ;;
+ *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
+ esac
+
+ echo creating "$ac_file"
+ del -f "$ac_file"
+ configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
+ case "$ac_file" in
+ *Makefile*) ac_comsub="1i\\
+# $configure_input" ;;
+ *) ac_comsub= ;;
+ esac
+
+ ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
+ sed -e "$ac_comsub
+s%@configure_input@%$configure_input%g
+s%@srcdir@%$srcdir%g
+s%@top_srcdir@%$top_srcdir%g
+s%@INSTALL@%$INSTALL%g
+" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
+fi; done
+del -f conftest.s*
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)'
+ac_dB='\([ ][ ]*\)[^ ]*%\1#\2'
+ac_dC='\3'
+ac_dD='%g'
+# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE".
+ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+ac_uB='\([ ]\)%\1#\2define\3'
+ac_uC=' '
+ac_uD='\4%g'
+# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+ac_eB='$%\1#\2define\3'
+ac_eC=' '
+ac_eD='%g'
+
+if test "${CONFIG_HEADERS+set}" != set; then
+EOF
+cat >> $CONFIG_STATUS <<EOF
+ CONFIG_HEADERS="common/icucfg.h"
+EOF
+cat >> $CONFIG_STATUS <<\EOF
+fi
+for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case "$ac_file" in
+ *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
+ ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+ *) ac_file_in="${ac_file}.in" ;;
+ esac
+
+ echo creating $ac_file
+
+ del -f conftest.frag conftest.in conftest.out
+ ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
+ cat $ac_file_inputs > conftest.in
+
+EOF
+
+# Transform confdefs.h into a sed script conftest.vals that substitutes
+# the proper values into config.h.in to produce config.h. And first:
+# Protect against being on the right side of a sed subst in config.status.
+# Protect against being in an unquoted here document in config.status.
+del -f conftest.vals
+cat > conftest.hdr <<\EOF
+s/[\\&%]/\\&/g
+s%[\\$`]%\\&%g
+s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp
+s%ac_d%ac_u%gp
+s%ac_u%ac_e%gp
+EOF
+sed -n -f conftest.hdr confdefs.h > conftest.vals
+del -f conftest.hdr
+
+# This sed command replaces #undef with comments. This is necessary, for
+# example, in the case of _POSIX_SOURCE, which is predefined and required
+# on some systems where configure will not decide to define it.
+cat >> conftest.vals <<\EOF
+s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */%
+EOF
+
+# Break up conftest.vals because some shells have a limit on
+# the size of here documents, and old seds have small limits too.
+
+del -f conftest.tail
+while :
+do
+ ac_lines=`grep -c . conftest.vals`
+ # grep -c gives empty output for an empty file on some AIX systems.
+ if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi
+ # Write a limited-size here document to conftest.frag.
+ echo ' cat > conftest.frag <<CEOF' >> $CONFIG_STATUS
+ sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS
+ echo 'CEOF
+ sed -f conftest.frag conftest.in > conftest.out
+ del -f conftest.in
+ mv conftest.out conftest.in
+' >> $CONFIG_STATUS
+ sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail
+ del -f conftest.vals
+ mv conftest.tail conftest.vals
+done
+del -f conftest.vals
+
+cat >> $CONFIG_STATUS <<\EOF
+ del -f conftest.frag conftest.h
+ echo "/* $ac_file. Generated automatically by configure. */" > conftest.h
+ cat conftest.in >> conftest.h
+ del -f conftest.in
+ if cmp -s $ac_file conftest.h 2>/dev/null; then
+ echo "$ac_file is unchanged"
+ del -f conftest.h
+ else
+ # Remove last slash and all that follows it. Not all systems have dirname.
+ ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
+ if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
+ # The file is in a subdirectory.
+ test ! -d "$ac_dir" && mkdir "$ac_dir"
+ fi
+ del -f $ac_file
+ mv conftest.h $ac_file
+ fi
+fi; done
+
+EOF
+cat >> $CONFIG_STATUS <<EOF
+
+EOF
+cat >> $CONFIG_STATUS <<\EOF
+
+exit 0
+EOF
+chmod +x $CONFIG_STATUS
+del -f confdefs* $ac_clean_files
+test "$no_create" = yes || ${CONFIG_SHELL-/usr/bin/qsh} $CONFIG_STATUS || exit 1
+
+
+if test $ICU_USE_THREADS = 0; then
+ echo " *** Note: configuring the ICU without pthread support or testing. If this isn't what you want, then run configure with --enable-threads=yes or check the messages above to see why we couldn't find pthread_create()" 1>&6
+fi
+
+echo "You must use $U_MAKE to build ICU."
diff --git a/as_is/os400/unpax-icu.sh b/as_is/os400/unpax-icu.sh
new file mode 100755
index 0000000..68e6410
--- /dev/null
+++ b/as_is/os400/unpax-icu.sh
@@ -0,0 +1,139 @@
+#!/usr/bin/qsh
+# Copyright (C) 2000-2003, International Business Machines
+# Corporation and others. All Rights Reserved.
+#
+# Authors:
+# Ami Fixler
+# Barry Novinger
+# Steven R. Loomis <srl@jtcsv.com>
+# George Rhoten
+#
+# Shell script to unpax ICU and convert the files to an EBCDIC codepage.
+# After extracting to EBCDIC, binary files are re-extracted without the
+# EBCDIC conversion, thus restoring them to original codepage.
+#
+# Set the following variable to the list of binary file suffixes (extensions)
+
+#binary_suffixes='ico ICO bmp BMP jpg JPG gif GIF brk BRK'
+#ICU specific binary files
+binary_suffixes='brk BRK bin BIN res RES cnv CNV dat DAT icu ICU spp SPP'
+data_files='icu/source/data/brkitr/* icu/source/data/locales/* icu/source/data/mappings/* icu/source/data/misc/* icu/source/data/translit/* icu/source/data/unidata/* icu/source/test/testdata/*'
+
+usage()
+{
+ echo "Enter archive filename as a parameter: $0 icu-archive.tar [strip]"
+ echo "(strip is an option to remove hex '0D' carraige returns)"
+}
+# first make sure we at least one arg and it's a file we can read
+if [ $# -eq 0 ]; then
+ usage
+ exit
+fi
+if [ ! -r $1 ]; then
+ echo "$1 does not exist or cannot be read."
+ usage
+ exit
+fi
+# set up a few variables
+
+echo ""
+echo "Extracting from $1 ..."
+echo ""
+# extract everything as iso-8859-1 except these directories
+pax -C 819 -rcvf $1 $data_files
+
+# extract files while converting them to EBCDIC
+echo ""
+echo "Extracting files which must be in ibm-37 ..."
+echo ""
+pax -C 37 -rvf $1 $data_files
+
+if [ $# -gt 1 ]; then
+ if [ $2 -eq strip ]; then
+ echo ""
+ echo "Stripping hex 0d characters ..."
+ for i in $(pax -f $1 2>/dev/null)
+ do
+ case $i in
+ */)
+ # then this entry is a directory
+ ;;
+ *)
+ # then this entry is NOT a directory
+ tr -d
+ <$i >@@@icu@tmp
+ chmod +w $i
+ rm $i
+ mv @@@icu@tmp $i
+ ;;
+ esac
+ done
+ fi
+fi
+
+echo ""
+echo "Determining binary files ..."
+echo ""
+
+#for dir in `find ./icu -type d \( -name CVS -o -print \)`; do
+# if [ -f $dir/CVS/Entries ]; then
+# binary_files="$binary_files`cat $dir/CVS/Entries | fgrep -- -kb \
+# | cut -d / -f2 | sed -e "s%^%$dir/%" \
+# | sed -e "s%^\./%%" | tr '\n' ' '`"
+# fi
+#done
+#echo "Detecting Unicode files"
+for file in `find ./icu \( -name \*.txt -print \)`; do
+ bom8=`head -n 1 $file|\
+ od -t x1|\
+ head -n 1|\
+ sed 's/ */ /g'|\
+ cut -f2-4 -d ' '|\
+ tr 'A-Z' 'a-z'`;
+# echo "bom8 is" $bom8 "for" $file
+# bom8=`head -c 3 $file|od -t x1|head -n 1|cut -d ' ' -f2-4`;
+ #Find a converted UTF-8 BOM
+ if [ "$bom8" = "057 08b 0ab" -o "$bom8" = "57 8b ab" ]
+ then
+ binary_files="$binary_files `echo $file | cut -d / -f2-`";
+ fi
+done
+
+#echo $binary_files
+
+for i in $(pax -f $1 2>/dev/null)
+do
+ case $i in
+ */)
+# then this entry is a directory
+ ;;
+ *.*)
+# then this entry has a dot in the filename
+ for j in $binary_suffixes
+ do
+ suf=${i#*.*}
+ if [ "$suf" = "$j" ]
+ then
+ binary_files="$binary_files $i"
+ break
+ fi
+ done
+ ;;
+ *)
+# then this entry does not have a dot in it
+ ;;
+ esac
+done
+
+# now see if a re-extract of binary files is necessary
+if [ ${#binary_files} -eq 0 ]; then
+ echo ""
+ echo "There are no binary files to restore."
+else
+ echo "Restoring binary files ..."
+ echo ""
+ rm $binary_files
+ pax -C 819 -rvf $1 $binary_files
+fi
+echo ""
+echo "$0 has completed extracting ICU from $1."
diff --git a/debian/.cvsignore b/debian/.cvsignore
new file mode 100644
index 0000000..2fe3e9b
--- /dev/null
+++ b/debian/.cvsignore
@@ -0,0 +1,17 @@
+*.debhelper
+docs
+*files
+*.substvars
+libicu-dev
+*libicu[0-9]*
+icu
+icu-locales
+icu-data
+icu-i18ndata
+tmp
+control
+postinst
+prerm
+icu.postinst
+icu.prerm
+icu-doc
diff --git a/debian/README.Debian.libicu-dev b/debian/README.Debian.libicu-dev
new file mode 100644
index 0000000..32a2fec
--- /dev/null
+++ b/debian/README.Debian.libicu-dev
@@ -0,0 +1,11 @@
+Copyright (C) 2000-2003, International Business Machines
+Corporation and others. All Rights Reserved.
+
+libicu-dev for Debian
+---------------------
+
+The documentation in /usr/share/doc/libicu-dev/docs/ provides a high-level
+overview of ICU. Detailed API documentation is provided by the icu-docs
+package.
+
+ -- Yves Arrouye <yves@debian.org>, Wed, 11 Oct 2000 19:37:57 -0700
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..2c79240
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,113 @@
+icu (2.1-1) unstable; urgency=low
+
+ * ICU 2.1 release.
+ * Changed the icu package description. Closes: 142886
+ * Use -O1 for CXXFLAGS for OS/390. Closes: 143021
+
+ -- Yves Arrouye <yves@debian.org> Mon, 15 Apr 2002 14:03:12 -0700
+
+icu (2.0.2-1) unstable; urgency=low
+
+ * Minor release of ICU with fixes for threading and strTo/FromWCS
+
+ -- Yves Arrouye <yves@debian.org> Tue, 2 Apr 2002 09:06:00 -0800
+
+icu (2.0-2.1pre20020318-1) unstable; urgency=low
+
+ * Use the library number in the development package too.
+ * ICU changed to version 2.1.
+
+ -- Yves Arrouye <yves@debian.org> Tue, 19 Mar 2002 18:38:37 -0800
+
+icu (2.0-2.1pre20020303-1) unstable; urgency=low
+
+ * Fixed a crash in uconv when no argument is passed to -f or -t.
+ * Other upstream changes.
+ * Fresh upload with an up to date orig tar file so that future
+ diffs won't be 6 megabytes long!
+
+ -- Yves Arrouye <yves@debian.org> Sun, 3 Mar 2002 15:31:13 -0800
+
+icu (2.0-2.1pre-1) unstable; urgency=low
+
+ * Prerelease of 2.1 with a working upgraded uconv(1).
+
+ -- Yves Arrouye <yves@debian.org> Fri, 1 Mar 2002 21:51:47 -0800
+
+icu (2.0-3) unstable; urgency=low
+
+ * Renamed doc-base to icu-doc.doc-base. Closes: 127487
+
+ -- Yves Arrouye <yves@debian.org> Fri, 18 Jan 2002 22:33:53 -0800
+
+icu (2.0-2) unstable; urgency=low
+
+ * Fixed a bug in uprv_uca_cloneTempTable(). Closes: 128484
+ * Update Debian bugs status. Closes: 104642
+ * Use the official 2.0 tarball as the original tar.
+ * Added manual pages for every tool.
+
+ -- Yves Arrouye <yves@debian.org> Wed, 16 Jan 2002 20:45:42 -0800
+
+icu (2.0-1) unstable; urgency=low
+
+ * Update to ICU version 2.0.
+
+ -- Yves Arrouye <yves@debian.org> Sat, 10 Nov 2001 21:58:19 -0800
+
+icu (1.8.1-2) unstable; urgency=low
+
+ * Updated copyright file. Closes: 112488
+ * Updated icu-locales description. Closes: 75499
+
+ -- Yves Arrouye <yves@debian.org> Sat, 10 Nov 2001 21:24:58 -0800
+
+icu (1.8.1-1.1) unstable; urgency=low
+
+ * NMU to resolve build failures on ia64 and (hopefully) hppa.
+ * config.{sub|guess} update
+ * source/tools/ctestfw/ctest.c: Add static declaration to global
+ variables local to that module to avoid @gprel relocation errors.
+ Closes: 104642
+
+ -- Yves Arrouye <yves@debian.org> Sat, 10 Nov 2001 21:24:44 -0800
+
+icu (1.8.1-1) unstable; urgency=low
+
+ * Update to ICU version 1.8.1.
+
+ -- root <yves@debian.org> Mon, 21 May 2001 15:27:36 -0700
+
+icu (1.7-1) unstable; urgency=low
+
+ * Update to ICU version 1.7.
+
+ -- Yves Arrouye <yves@debian.org> Tue, 21 Nov 2000 22:54:52 -0800
+
+icu (1.6.0.1-20001113-2) unstable; urgency=low
+
+ * New snapshot with better ISO-2022.
+
+ -- Yves Arrouye <yves@debian.org> Mon, 13 Nov 2000 21:05:00 -0800
+
+icu (1.6.0.1-20001027-1) unstable; urgency=low
+
+ * Move architecture-dependent files into /usr/lib, instead of
+ /usr/share.
+ * Move convrtrs.txt into /etc/icu, make it a conffile, and generate
+ /usr/lib/icu/1.6.0.1/cnvalias.dat from it at postinst time.
+ * Manage a /usr/lib/icu/current symbolic link across installations
+ of the libicuXX packages. The symlink will always point to the
+ highest numbered version of ICU.
+
+ -- Yves Arrouye <yves@debian.org> Fri, 27 Oct 2000 15:40:12 -0700
+
+icu (1.6.0.1-20001017-1) unstable; urgency=low
+
+ * Initial Release.
+
+ -- Yves Arrouye <yves@debian.org> Tue, 24 Oct 2000 16:14:12 -0700
+
+Local variables:
+mode: debian-changelog
+End:
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..8b3e6ed
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,89 @@
+Source: icu
+Section: libs
+Priority: optional
+Maintainer: Yves Arrouye <yves@debian.org>
+Standards-Version: 3.5.6
+Build-Depends: debhelper, doxygen
+
+Package: libicu21-dev
+Section: devel
+Architecture: any
+Depends: libicu${major} (= ${Source-Version}), libc6-dev
+Provides: libicu-dev
+Conflicts: libicu-dev
+Suggests: icu-doc
+Description: International Components for Unicode (development files)
+ ICU is a C++ and C library that provides robust and full-featured Unicode
+ and locale support. This package contains the development files for ICU.
+
+Package: icu-doc
+Section: doc
+Architecture: all
+Description: API documentation for ICU classes and functions
+ ICU is a C++ and C library that provides robust and full-featured Unicode
+ and locale support. This package contains HTML files documenting the ICU
+ APIs.
+
+Package: libicu21
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}
+Recommends: icu
+Description: International Components for Unicode (libraries)
+ ICU is a C++ and C library that provides robust and full-featured Unicode
+ and locale support. This package contains the runtime libraries for
+ ICU. It does not contain any of the data files needed at runtime and
+ present in the `icu' and `icu-locales` packages.
+
+Package: icu
+Section: libs
+Architecture: any
+Depends: libicu${major} (>= ${Source-Version}), make
+Recommends: icu-locales
+Description: International Components for Unicode (non locale data)
+ ICU is a C++ and C library that provides robust and full-featured Unicode
+ and locale support. The library provides calendar support, conversions
+ for more than 230 character sets, language-sensitive collation, date
+ and time formatting, support for more than 140 locales, message catalogs
+ and resources, message formatting, normalization, number and currency
+ formatting, time zones support, transliteration, word, line and
+ sentence breaking, etc.
+ .
+ This package contains the Unicode character database and derived
+ properties, along with converters and time zones data.
+ It also contains the tools needed to manipulate these data.
+
+Package: icu-locales
+Section: libs
+Architecture: any
+Depends: libicu${major} (>= ${Source-Version})
+Description: Locale data for ICU
+ The locale data are used by ICU to provide localization (l10n) and
+ internationalization (i18n) support to applications using the ICU library.
+ This package also contains break data for various languages, and
+ transliteration data.
+
+Package: icu-data
+Priority: extra
+Section: libs
+Architecture: all
+Depends: icu
+Description: Data for ICU (source files)
+ These data describe the Unicode data (normative and informative), and
+ also all the table-based converters provided in the ICU distribution.
+ .
+ This package contains uncompiled source data. Precompiled data are in the
+ `libicu${major}' package.
+
+Package: icu-i18ndata
+Priority: extra
+Section: libs
+Architecture: all
+Depends: icu
+Description: Locale data for ICU (source files)
+ The locale data are used by ICU to provide localization (l10n) and
+ internationalization (i18n) support to ICU applications. This package
+ also contains break data for various languages, and transliteration data.
+ .
+ This package contains uncompiled source data. Precompiled data are in the
+ `icu-locales' package.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..eddd3b4
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,35 @@
+ICU License - ICU 1.8.1 and later
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright (c) 1995-2001 International Business Machines Corporation and others
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, and/or sell copies of the Software, and to permit persons
+to whom the Software is furnished to do so, provided that the above
+copyright notice(s) and this permission notice appear in all copies of
+the Software and that both the above copyright notice(s) and this
+permission notice appear in supporting documentation.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder
+shall not be used in advertising or otherwise to promote the sale, use
+or other dealings in this Software without prior written authorization
+of the copyright holder.
+
+--------------------------------------------------------------------------------
+All trademarks and registered trademarks mentioned herein are the property of their respective owners.
+
diff --git a/debian/icu-doc.doc-base b/debian/icu-doc.doc-base
new file mode 100644
index 0000000..9810e67
--- /dev/null
+++ b/debian/icu-doc.doc-base
@@ -0,0 +1,13 @@
+Document: icu-doc
+Title: ICU API Documentation
+Author: IBM Corporation and Others
+Abstract: This manual describes the APIs of the
+ International Components for Unicode C/C++
+ library. It is a useful reference for the
+ ICU programmer.
+Section: Libs
+
+Format: HTML
+Index: /usr/share/doc/icu-doc/html/index.html
+Files: /usr/share/doc/icu-doc/html/*.html
+
diff --git a/debian/icu.conffiles.in b/debian/icu.conffiles.in
new file mode 100644
index 0000000..95162dc
--- /dev/null
+++ b/debian/icu.conffiles.in
@@ -0,0 +1 @@
+/etc/icu/convrtrs.txt
diff --git a/debian/icu.postinst.in b/debian/icu.postinst.in
new file mode 100644
index 0000000..23ccbee
--- /dev/null
+++ b/debian/icu.postinst.in
@@ -0,0 +1,77 @@
+#! /bin/sh
+# Copyright (c) 2000-2003 International Business Machines
+# Corporation and others. All Rights Reserved.
+# postinst script for foo
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <postinst> `configure' <most-recently-configured-version>
+# * <old-postinst> `abort-upgrade' <new version>
+# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+# <new-version>
+# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+# <failed-install-package> <version> `removing'
+# <conflicting-package> <version>
+# for details, see /usr/share/doc/packaging-manual/
+#
+# quoting from the policy:
+# Any necessary prompting should almost always be confined to the
+# post-installation script, and should be protected with a conditional
+# so that unnecessary prompting doesn't happen if a package's
+# installation fails and the `postinst' is called with `abort-upgrade',
+# `abort-remove' or `abort-deconfigure'.
+
+case "$1" in
+ configure)
+ # Adjust the current ICU link in @libdir@/@PACKAGE@
+
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+
+ if [ -d @libdir@/@PACKAGE@ ]
+ then
+ icucurrent=`2>/dev/null ls -dp @libdir@/@PACKAGE@/* | sed -n 's,.*/\([^/]*\)/$,\1,p'| sort -rn | head -1`
+ cd @libdir@/@PACKAGE@
+ rm -f current
+ if test x"$icucurrent" != x
+ then
+ ln -s "$icucurrent" current
+ fi
+
+ # Set ICU_DATA for ease of testing files. It is not necessary to
+ # export it as we are guaranteed that the binaries we invoke will
+ # use the right directory. But we're not taking chances with the
+ # future :)
+
+ ICU_DATA=@libdir@/@PACKAGE@/@VERSION@
+ export ICU_DATA
+
+ if test ! -f $ICU_DATA/cnvalias.dat -o @sysconfdir@/icu/convrtrs.txt -nt $ICU_DATA/cnvalias.dat
+ then
+ echo Compiling converters and aliases list from @sysconfdir@/@PACKAGE@/convrtrs.txt
+ @sbindir@/gencnval @sysconfdir@/@PACKAGE@/convrtrs.txt
+ fi
+
+ fi
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 0
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
diff --git a/debian/icu.prerm.in b/debian/icu.prerm.in
new file mode 100644
index 0000000..28d8c01
--- /dev/null
+++ b/debian/icu.prerm.in
@@ -0,0 +1,56 @@
+#! /bin/sh
+# Copyright (c) 2000-2003 International Business Machines
+# Corporation and others. All Rights Reserved.
+# prerm script for foo
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <prerm> `remove'
+# * <old-prerm> `upgrade' <new-version>
+# * <new-prerm> `failed-upgrade' <old-version>
+# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
+# * <deconfigured's-prerm> `deconfigure' `in-favour'
+# <package-being-installed> <version> `removing'
+# <conflicting-package> <version>
+# for details, see /usr/share/doc/packaging-manual/
+
+case "$1" in
+ remove|upgrade|deconfigure)
+ # Adjust the current ICU link in @libdir@/@PACKAGE@
+
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+
+ if [ -d @libdir@/@PACKAGE@ ]
+ then
+ icucurrent=`2>/dev/null ls -dp @libdir@/@PACKAGE@/* | sed -n 's,.*/\([^/]*\)/$,\1,p'| sort -rn | head -1`
+ cd @libdir@/@PACKAGE@
+ rm -f current
+ if test x"$icucurrent" != x
+ then
+ ln -s "$icucurrent" current
+ fi
+ fi
+
+# install-info --quiet --remove /usr/info/foo.info.gz
+ ;;
+
+ failed-upgrade)
+ ;;
+ *)
+ echo "prerm called with unknown argument \`$1'" >&2
+ exit 0
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/debian/libicu.postinst b/debian/libicu.postinst
new file mode 100644
index 0000000..a262d90
--- /dev/null
+++ b/debian/libicu.postinst
@@ -0,0 +1,70 @@
+#! /bin/sh
+# Copyright (c) 2000-2003 International Business Machines
+# Corporation and others. All Rights Reserved.
+# postinst script for foo
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <postinst> `configure' <most-recently-configured-version>
+# * <old-postinst> `abort-upgrade' <new version>
+# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+# <new-version>
+# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+# <failed-install-package> <version> `removing'
+# <conflicting-package> <version>
+# for details, see /usr/share/doc/packaging-manual/
+#
+# quoting from the policy:
+# Any necessary prompting should almost always be confined to the
+# post-installation script, and should be protected with a conditional
+# so that unnecessary prompting doesn't happen if a package's
+# installation fails and the `postinst' is called with `abort-upgrade',
+# `abort-remove' or `abort-deconfigure'.
+
+# Call ldconfig in a way that makes lintian happy.
+
+if [ "$1" = "configure" ]; then ldconfig; fi
+
+# And now do the rest of the configuration
+
+case "$1" in
+ configure)
+
+ # Adjust the current ICU link in /usr/lib/icu
+
+ if [ -d /usr/lib/icu ]
+ then
+
+ icucurrent=`2>/dev/null ls -dp /usr/lib/icu/* | sed -n 's,.*/\([^/]*\)/$,\1,p'| sort -rn | head -1`
+ cd /usr/lib/icu
+ rm -f current
+ if test x"$icucurrent" != x
+ then
+ ln -s "$icucurrent" current
+ ln -sf current/Makefile.inc .
+ fi
+
+ fi
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 0
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/debian/libicu.prerm.in b/debian/libicu.prerm.in
new file mode 100644
index 0000000..a06ac25
--- /dev/null
+++ b/debian/libicu.prerm.in
@@ -0,0 +1,55 @@
+#! /bin/sh
+# Copyright (c) 2000-2003 International Business Machines
+# Corporation and others. All Rights Reserved.
+# prerm script for foo
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <prerm> `remove'
+# * <old-prerm> `upgrade' <new-version>
+# * <new-prerm> `failed-upgrade' <old-version>
+# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
+# * <deconfigured's-prerm> `deconfigure' `in-favour'
+# <package-being-installed> <version> `removing'
+# <conflicting-package> <version>
+# for details, see /usr/share/doc/packaging-manual/
+
+case "$1" in
+ remove|upgrade|deconfigure)
+ # Adjust the current ICU link in @libdir@/@PACKAGE@
+
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+
+ if [ -d @libdir@/@PACKAGE@ ]
+ then
+ icucurrent=`2>/dev/null ls -dp @libdir@/@PACKAGE@/* | sed -n 's,.*/\([^/]*\)/$,\1,p'| sort -rn | head -1`
+ cd @libdir@/@PACKAGE@
+ rm -f current
+ if test x"$icucurrent" != x
+ then
+ ln -s "$icucurrent" current
+ fi
+ fi
+
+# install-info --quiet --remove /usr/info/foo.info.gz
+ ;;
+ failed-upgrade)
+ ;;
+ *)
+ echo "prerm called with unknown argument \`$1'" >&2
+ exit 0
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/debian/postinst.in b/debian/postinst.in
new file mode 100644
index 0000000..1e7a3f7
--- /dev/null
+++ b/debian/postinst.in
@@ -0,0 +1,63 @@
+#! /bin/sh
+# Copyright (c) 2000-2003 International Business Machines
+# Corporation and others. All Rights Reserved.
+# postinst script for foo
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <postinst> `configure' <most-recently-configured-version>
+# * <old-postinst> `abort-upgrade' <new version>
+# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+# <new-version>
+# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+# <failed-install-package> <version> `removing'
+# <conflicting-package> <version>
+# for details, see /usr/share/doc/packaging-manual/
+#
+# quoting from the policy:
+# Any necessary prompting should almost always be confined to the
+# post-installation script, and should be protected with a conditional
+# so that unnecessary prompting doesn't happen if a package's
+# installation fails and the `postinst' is called with `abort-upgrade',
+# `abort-remove' or `abort-deconfigure'.
+
+case "$1" in
+ configure)
+ # Adjust the current ICU link in @libdir@/@PACKAGE@
+
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+
+ if [ -d @libdir@/@PACKAGE@ ]
+ then
+ icucurrent=`2>/dev/null ls -dp @libdir@/@PACKAGE@/* | sed -n 's,.*/\([^/]*\)/$,\1,p'| sort -rn | head -1`
+ cd @libdir@/@PACKAGE@
+ rm -f current
+ if test x"$icucurrent" != x
+ then
+ ln -s "$icucurrent" current
+ fi
+ fi
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 0
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/debian/prerm.in b/debian/prerm.in
new file mode 100644
index 0000000..a06ac25
--- /dev/null
+++ b/debian/prerm.in
@@ -0,0 +1,55 @@
+#! /bin/sh
+# Copyright (c) 2000-2003 International Business Machines
+# Corporation and others. All Rights Reserved.
+# prerm script for foo
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <prerm> `remove'
+# * <old-prerm> `upgrade' <new-version>
+# * <new-prerm> `failed-upgrade' <old-version>
+# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
+# * <deconfigured's-prerm> `deconfigure' `in-favour'
+# <package-being-installed> <version> `removing'
+# <conflicting-package> <version>
+# for details, see /usr/share/doc/packaging-manual/
+
+case "$1" in
+ remove|upgrade|deconfigure)
+ # Adjust the current ICU link in @libdir@/@PACKAGE@
+
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+
+ if [ -d @libdir@/@PACKAGE@ ]
+ then
+ icucurrent=`2>/dev/null ls -dp @libdir@/@PACKAGE@/* | sed -n 's,.*/\([^/]*\)/$,\1,p'| sort -rn | head -1`
+ cd @libdir@/@PACKAGE@
+ rm -f current
+ if test x"$icucurrent" != x
+ then
+ ln -s "$icucurrent" current
+ fi
+ fi
+
+# install-info --quiet --remove /usr/info/foo.info.gz
+ ;;
+ failed-upgrade)
+ ;;
+ *)
+ echo "prerm called with unknown argument \`$1'" >&2
+ exit 0
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..44b8acb
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,250 @@
+#!/usr/bin/make -f
+# Copyright (c) 2000-2003 International Business Machines
+# Corporation and others. All Rights Reserved.
+# ICU debian/rules that uses debhelper.
+
+# The Debian packages for ICU are created and maintained by
+# Yves Arrouye <yves@debian.org>. They are part of Debian GNU/Linux
+# since the Debian woody release.
+
+# Decide whether we want to automatically manage the repackaging of
+# the common data from individual files or not.
+ICU_AUTO_COMMON=NO
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+# This is the debhelper compatability version to use.
+export DH_COMPAT=2
+#firstdir := $(shell sed -n 's/Package: \(.*\)/\1/p' debian/control | head -1)else
+
+# Where the source for ICU is, where to build
+srcdir = source
+builddir = build
+# How to get to $(srcdir) from $(builddir)
+builddir_relative_topdir = ..
+builddir_relative_srcdir = $(builddir_relative_topdir)/$(srcdir)
+
+# Getting the ICU version numbers, stolen from configure.in (that's okay, I
+# wrote the configure.in part anyway)
+
+version := $(shell sed -n -e 's/^[ ]*\#[ ]*define[ ]*U_ICU_VERSION[ ]*"\([^"]*\)".*/\1/p' $(srcdir)/common/unicode/uversion.h)
+libversion := $(shell echo $(version) | sed -e 's/\.//' -e 's/^\([^.]*\)$$/\1.0/')
+major := $(shell echo $(libversion) | sed 's/\..*//')
+
+# ICU installation directories, w/o the initial slash
+pkgdatadir = usr/share/icu
+icudatadir = $(pkgdatadir)/$(version)
+pkglibdir = usr/lib/icu
+iculibdir = $(pkglibdir)/$(version)
+datasrcdir = usr/share/icu/$(version)/data
+# This is where data needs to be moved
+ifeq ($(ICU_AUTO_COMMON),YES)
+icufildir = $(iculibdir)/files
+else
+icufildir = $(iculibdir)
+endif
+
+# Build flags
+
+CFLAGS = -O2 # -Wall
+ifeq ($(shell uname -m),s390)
+CXXFLAGS = -O1 # -Wall
+else
+CXXFLAGS = -O2 # -Wall
+endif
+
+INSTALL_PROGRAM = /usr/bin/install
+
+ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
+CFLAGS += -g
+CXXFLAGS += -g
+endif
+ifneq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
+INSTALL_PROGRAM += -s
+endif
+
+all: build
+
+configure: $(builddir)/configure-stamp
+$(builddir)/configure-stamp:
+ # Add here commands to configure the package.
+ test -d $(builddir) || mkdir $(builddir)
+ cd $(builddir); CFLAGS='$(CFLAGS)' CXXFLAGS='$(CXXFLAGS)' INSTALL_PROGRAM='$(INSTALL_PROGRAM)' $(SHELL) $(builddir_relative_srcdir)/configure --srcdir=$(builddir_relative_srcdir) --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var --with-data-packaging=files --disable-rpath --enable-shared --enable-static --disable-samples
+ touch $@
+
+build: $(builddir)/configure-stamp debian-files $(builddir)/build-stamp
+
+# Build some Debian files
+DEBIAN_FILES=icu.conffiles postinst prerm icu.postinst icu.prerm libicu$(major).postinst README.Debian.libicu$(major)-dev
+
+debian/%: debian/%.in
+ cd $(builddir) \
+ && CONFIG_FILES=$(builddir_relative_topdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+debian/libicu$(major)%: debian/libicu%
+ cp $< $@
+debian/README.Debian.libicu$(major)%: debian/README.Debian.libicu%
+ cp $< $@
+
+debian-files: $(addprefix debian/,$(DEBIAN_FILES))
+
+$(builddir)/build-stamp:
+ dh_testdir
+
+ # Add here commands to compile the package.
+ $(MAKE) -C $(builddir)
+
+ touch $@
+
+clean: update-debian-files
+ dh_testdir
+ dh_testroot
+ $(RM) $(builddir)/build-stamp $(builddir)/configure-stamp
+
+ # Add here commands to clean up after the build process.
+ -$(MAKE) -C $(builddir) distclean
+ #-$(RM) `find $(builddir)/samples $(builddir)/test -name Makefile -print`
+ -$(RM) `find $(builddir) -name Makefile -print`
+ dh_clean
+ $(RM) $(addprefix debian/,$(DEBIAN_FILES)) debian/control.new
+
+ #if test -d $(builddir) -a $(builddir) != $(srcdir); then rmdir `find $(builddir) -type d -print | sort -r`; fi
+ if test -d $(builddir) -a $(builddir) != $(srcdir); then $(RM) -r $(builddir); fi
+
+install: build
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+
+ # Add here commands to install the package into debian/tmp
+ $(MAKE) -C $(builddir) install DESTDIR=`pwd`/debian/tmp
+
+# Build architecture-independent files here.
+binary-indep: build install
+ #
+ # build icu-doc package by moving files
+ #
+ mv debian/tmp/usr/share/doc/icu debian/tmp/usr/share/doc/icu-doc
+ dh_movefiles -picu-doc \
+ usr/share/doc/icu-doc
+ #
+ # build icu-i18ndata from the source data
+ #
+ for d in locales translit brkitr; do \
+ test -d debian/icu-i18ndata/$(datasrcdir)/$$d || \
+ mkdir -p debian/icu-i18ndata/$(datasrcdir)/$$d; \
+ install -m 644 $(srcdir)/data/$$d/*.* \
+ debian/icu-i18ndata/$(datasrcdir)/$$d; \
+ done
+ #
+ # build icu-data from the source data
+ #
+ for d in mappings unidata misc; do \
+ test -d debian/icu-data/$(datasrcdir)/$$d || \
+ mkdir -p debian/icu-data/$(datasrcdir)/$$d; \
+ install -m 644 $(srcdir)/data/$$d/*.* \
+ debian/icu-data/$(datasrcdir)/$$d; \
+ done
+ cd debian/icu-data/$(datasrcdir)/mappings && \
+ $(RM) convrtrs.txt && ln -s /etc/icu/convrtrs.txt .
+
+# Build architecture-dependent files here.
+binary-arch: build install
+# dh_testversion
+ dh_testdir
+ dh_testroot
+ #
+ # build libicu${major} package by moving files from icu-dev
+ #
+ $(RM) debian/tmp/usr/lib/libicuctestfw.*
+ dh_movefiles -plibicu$(major) \
+ usr/lib/*.so.*
+ mkdir debian/libicu$(major)/usr/lib/icu
+ #
+ # massage data files
+ #
+ $(RM) debian/tmp/$(iculibdir)/cnvalias.dat
+ifneq ($(iculibdir),$(icufildir))
+ test -d debian/tmp/$(icufildir) || mkdir debian/tmp/$(icufildir)
+ mv debian/tmp/$(iculibdir)/*.* debian/tmp/$(icufildir)
+ mv debian/tmp/$(icufildir)/*msg.dat debian/tmp/$(iculibdir)
+ mv debian/tmp/$(icufildir)/*.inc debian/tmp/$(iculibdir)
+endif
+ #
+ # build icu package by moving files from icu-dev
+ #
+ $(RM) debian/tmp/$(iculibdir)/../Makefile.inc debian/tmp/$(iculibdir)/../current
+ifneq ($(iculibdir),$(icufildir))
+ dh_movefiles -picu \
+ $(iculibdir)/*msg.dat
+endif
+ dh_movefiles -picu \
+ etc \
+ usr/bin \
+ usr/sbin \
+ $(icudatadir)/README \
+ $(icudatadir)/license.html \
+ $(iculibdir)/*.inc \
+ $(icufildir)/*.cnv \
+ $(icufildir)/*.dat \
+ usr/share/man
+ #
+ # build icu-locales package by moving files from icu-dev
+ #
+ dh_movefiles -picu-locales \
+ $(icufildir)/*.res \
+ $(icufildir)/*.brk
+ #
+ # move the rest of the development files
+ # in their package
+ #
+ dh_movefiles usr
+ #
+ # do a bit of cleanup
+ #
+ $(RM) -r debian/tmp/etc debian/tmp/usr/sbin \
+ debian/tmp/usr/share/man
+ #
+ # continue to prepare packages
+ #
+# dh_installdebconf
+ dh_installdocs
+ dh_installexamples $(srcdir)/samples/*
+ find debian/libicu$(major)-dev -name CVS -o -name .cvsignore | xargs $(RM) -r
+ dh_installmenu
+# dh_installemacsen
+# dh_installpam
+# dh_installinit
+ dh_installcron
+ dh_installmanpages -picu
+ dh_installinfo
+ # dh_undocumented -picu
+ dh_installchangelogs
+ dh_link
+ dh_strip
+ dh_compress
+ dh_fixperms
+ # You may want to make some executables suid here.
+ dh_makeshlibs
+ dh_installdeb
+# dh_perl
+ dh_shlibdeps -ldebian/libicu$(major)/usr/lib
+ dh_gencontrol -- -Vversion=$(version) -Vmajor=$(major)
+ dh_md5sums
+ dh_builddeb
+
+# Automatically update changelog and control
+update-debian-files:
+ if [ x"$$NO_AUTO_DCH" = x ]; \
+ then \
+ cvers=`sed -n 's/^icu (\([^)]*\)).*/\1/p' debian/changelog | head -1`; if dpkg --compare-versions $$cvers lt $(version)-1; then \
+ dch -v $(version)-1 "Update to ICU version $(version). (This comment is generated.)"; \
+ sed 's/libicu[0-9][0-9]*/libicu$(major)/g' debian/control >debian/control.new && mv debian/control.new debian/control; \
+ fi; \
+ fi
+
+binary: update-debian-files binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install debian-files update-changelog
+
diff --git a/license.html b/license.html
new file mode 100644
index 0000000..2a2c8e5
--- /dev/null
+++ b/license.html
@@ -0,0 +1,45 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></meta>
+<title>ICU License - ICU 1.8.1 and later</title>
+</head>
+
+<body>
+<h1>ICU License - ICU 1.8.1 and later</h1>
+<pre>
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright (c) 1995-2003 International Business Machines Corporation and others
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, and/or sell copies of the Software, and to permit persons
+to whom the Software is furnished to do so, provided that the above
+copyright notice(s) and this permission notice appear in all copies of
+the Software and that both the above copyright notice(s) and this
+permission notice appear in supporting documentation.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder
+shall not be used in advertising or otherwise to promote the sale, use
+or other dealings in this Software without prior written authorization
+of the copyright holder.
+
+--------------------------------------------------------------------------------
+All trademarks and registered trademarks mentioned herein are the property of their respective owners.
+</pre>
+</body>
+</html>
diff --git a/packaging/PACKAGES b/packaging/PACKAGES
new file mode 100644
index 0000000..12b3523
--- /dev/null
+++ b/packaging/PACKAGES
@@ -0,0 +1,159 @@
+Copyright (C) 2000-2003, International Business Machines
+Corporation and others. All Rights Reserved.
+ICU is packaged into a number of small, interdependent packages. This
+file describes what these packages are, what their name should be
+like, and what their contents are. It is useful as a reference and a
+guide when packaging ICU on a new system.
+
++ List of ICU packages.
+
+ICU is distributed as the following packages:
+
+- ICU libraries. This package contains the runtime libraries needed by
+applications that use ICU. All the other packages require this package
+to be installed.
+- ICU. This package contains the converters data, the timezones data,
+and all the ICU tools.
+- ICU locales. This package adds locales and break data.
+- ICU development. This package contains the files necessary to build
+applications that use ICU, i.e. header files, links to shared
+libraries used by the linker, static libraries, etc... It also
+contains sample applications and documentation.
+- ICU docs. This package contains further documentation for ICU,
+including a complete API reference.
+- ICU data. This package contains the source for the compiled data
+contained by the ICU package.
+- ICU international data. This package contains the source for the
+compiled data contained by the ICU locales package.
+
+In this file, we will refer to Autoconf variables as in $(bindir). In
+addition to these, we will use the following variables to denote
+ICU-specific directories or information:
+
+ VERSION ICU's dotted version number, e.g. 1.6.0.1 as of this
+ writing.
+
+ ICUDATADIR The directory where portable ICU data are. This is
+ defined as $(datadir)/icu/$(VERSION).
+ ICULIBDIR The directory where platform-specific ICU data
+ are. This is defined as $(libdir)/icu/$(VERSION).
+ ICUSYSCONFDIR The directory where ICU configuration files are. This
+ is defined as $(sysconfdir)/icu.
+
+When referring to libraries, .so will be used to denote the extension
+of a shared library, and .a to denote the extension of a static
+library. These extensions will actually be different on some platforms.
+
++ Configuration and compilation of ICU
+
+ICU should be configured with the following options:
+
+ --with-data-packaging=files
+ --disable-rpath
+ --enable-shared
+ --enable-static
+ --without-samples
+
+in addition to platform-specific settings (like a specific mandir or
+sysconfdir). Note that the use of --disable-rpath assumes that the
+packaging is made for a standard location, or that the package
+installation/deinstallation will correctly manage the configuration
+of the system's dyanmic loader. This is the right way of doing things.
+
+The configure script invokation should also be done with
+
+ CFLAGS="-O2"
+
+set, as in:
+
+ $ CFLAGS="-O2" ./configure ...
+
+The files packaging mode is chosen because it offers the maximum
+flexibility. Packages can be split easily, and system administrators
+can add converters, aliases, and other resources with little
+effort. Ideally, the ICU build will be modified to allow for distributing a
+libicudata.so with all the converters and locales, but indexes and aliases
+as separate files. But for now, this is the easiest way to get started.
+
++ The ICU libraries package
+
+The ICU libraries package is typically named `libicuXX' where XX is
+the major number of ICU's libraries. This number is ICU's version
+number multiplied by 10 and rounded down to the nearest integer (it is
+also the value of the LIB_VERSION_MAJOR configure substitution
+variable). For example, for ICU 1.6.0.1, it is 16, so the package name
+is `libicu16'. The major version is part of the package name to allow
+for the simultaneous installation of different ICU releases.
+
+This package contains:
+
+- All the shared libraries, and their major number symbolic link, but
+not the .so symbolic link that is only used at link time (this one is
+part of the development package). These are $(libdir)/libicu*.so.* and
+$(libdir)/libustdio.so.* at the time of this writing.
+
++ The ICU package
+
+The ICU package is simply named `icu'. It provides data used by the ICU
+libraries package and commands to create and manipulate that data.
+
+This package contains:
+
+- The Unicode data files (uprops.dat and unames.dat as of this writing).
+- The time zones data files (tz.dat).
+- All the binary data files for converters (.cnv files).
+- All the ICU commands.
+- The manual pages for ICU commands and file formats.
+
++ The ICU locales package
+
+The ICU locales package is named `icu-locales'. It provides data used by
+internationalization support in ICU.
+
+This package contains:
+
+- All the data for locales in ICU (.dat files).
+- All the break data for specific locales (.brk files).
+
++ The ICU development package
+
+The ICU developpment package is named `libicu-dev'. It provides all
+the files necessary to write applications that use ICU, along with
+examples and some documentation.
+
+This package contains:
+
+- The /usr/include/unicode directory which contains all the ICU
+headers.
+- The .so symbolic links used by the linker to link against the
+latest version of the libraries.
+- A sample Makefile fragment that can be included by applications
+using ICU, to faciliate their building, along with a platform-specific
+configuration file included by this fragment.
+- The sample applications from the ICU source tree, in an appropriate
+location for the system that the package is installed on (for example,
+on Debian, in /usr/share/doc/libicu-dev/examples).
+
+This package depends on the ICU libraries package with the exact same
+version, since it provides .so symbolic links to the latest libraries.
+
++ The ICU docs package
+
+The ICU docs package is named `libicu-doc'. It contains the files
+generated by doxygen when the `make doc' command is executed, in a
+location appropriate for the system that the package is installed on.
+
++ The ICU data package
+
+The ICU data package is named `icu-data'. It contains source files for
+the data found in the ICU package. These files are installed in
+$(ICUDATADIR).
+
++ The ICU international data package
+
+The ICU data package is named `icu-i18ndata'. It contains source files for
+the dat founf in the ICU locales package. These files are installed in
+$(ICUDATADIR).
+
+----
+Yves Arrouye <yves@realnames.com>
diff --git a/packaging/README b/packaging/README
new file mode 100644
index 0000000..1bfe85a
--- /dev/null
+++ b/packaging/README
@@ -0,0 +1,13 @@
+Copyright (C) 2000-2003, International Business Machines
+Corporation and others. All Rights Reserved.
+
+This directory contains information, input files and scripts for
+packaging ICU using specific packaging tools. We assume that the
+packager is familiar with the tools and procedures needed to build a
+package for a given packaging method (for example, how to use
+dpkg-buildpackage(1) on Debian GNU/Linux, or rpm(8) on distributions that
+use RPM packages).
+
+Please read the file PACKAGES if you are interested in packaging ICU
+yourself. It describes what the different packages should be, and what
+their contents are.
diff --git a/packaging/debian/README b/packaging/debian/README
new file mode 100644
index 0000000..0388625
--- /dev/null
+++ b/packaging/debian/README
@@ -0,0 +1,5 @@
+// Copyright (c) 2000-2003 International Business Machines
+// Corporation and others. All Rights Reserved.
+The Debian packaging is in the debian directory at the toplevel of ICU's
+distribution.
+
diff --git a/packaging/rpm/icu.spec b/packaging/rpm/icu.spec
new file mode 100644
index 0000000..8a6d940
--- /dev/null
+++ b/packaging/rpm/icu.spec
@@ -0,0 +1,230 @@
+# Copyright (C) 2000-2003, International Business Machines
+# Corporation and others. All Rights Reserved.
+#
+# RPM specification file for ICU.
+#
+# Neal Probert <nprobert@walid.com> is the current maintainer.
+# Yves Arrouye <yves@realnames.com> is the original author.
+
+# This file can be freely redistributed under the same license as ICU.
+
+Name: icu
+Version: 2.6.1
+Release: 1
+Requires: libicu26 >= 2.6.1
+Summary: International Components for Unicode
+Packager: Ian Holsman (CNET Networks) <ianh@cnet.com>
+Copyright: X License
+Group: System Environment/Libraries
+Source: icu-2.6.1.tar.gz
+BuildRoot: /var/tmp/%{name}
+%description
+ICU is a C++ and C library that provides robust and full-featured Unicode
+support. This package contains the runtime libraries for ICU. It does
+not contain any of the data files needed at runtime and present in the
+`icu' and `icu-locales` packages.
+
+%package -n libicu26
+Summary: International Components for Unicode (libraries)
+Group: Development/Libraries
+%description -n libicu26
+ICU is a C++ and C library that provides robust and full-featured Unicode
+support. This package contains the runtime libraries for ICU. It does
+not contain any of the data files needed at runtime and present in the
+`icu' and `icu-locales` packages.
+
+%package -n libicu-devel
+Summary: International Components for Unicode (development files)
+Group: Development/Libraries
+Requires: libicu26 = 2.6.1
+%description -n libicu-devel
+ICU is a C++ and C library that provides robust and full-featured Unicode
+support. This package contains the development files for ICU.
+
+%package locales
+Summary: Locale data for ICU
+Group: System Environment/Libraries
+Requires: libicu26 >= 2.6.1
+%description locales
+The locale data are used by ICU to provide localization (l10n) and
+internationalization (i18n) support to ICU applications. This package
+also contains break data for various languages, and transliteration data.
+
+%post
+# Adjust the current ICU link in /usr/lib/icu
+
+icucurrent=`2>/dev/null ls -dp /usr/lib/icu/* | sed -n 's,.*/\([^/]*\)/$,\1,p'| sort -rn | head -1`
+cd /usr/lib/icu
+rm -f /usr/lib/icu/current
+if test x"$icucurrent" != x
+then
+ ln -s "$icucurrent" current
+fi
+
+ICU_DATA=/usr/lib/icu/2.6.1
+export ICU_DATA
+if test ! -f $ICU_DATA/cnvalias.dat -o /etc/icu/convrtrs.txt -nt $ICU_DATA/cnvalias.dat
+then
+ echo Compiling converters and aliases list from /etc/icu/convrtrs.txt
+ /usr/bin/gencnval /etc/icu/convrtrs.txt
+fi
+
+%preun
+# Adjust the current ICU link in /usr/lib/icu
+
+icucurrent=`2>/dev/null ls -dp /usr/lib/icu/* | sed -n -e '/\/2.6.1\//d' -e 's,.*/\([^/]*\)/$,\1,p'| sort -rn | head -1`
+cd /usr/lib/icu
+rm -f /usr/lib/icu/current
+if test x"$icucurrent" != x
+then
+ ln -s "$icucurrent" current
+fi
+
+%post -n libicu26
+ldconfig
+
+# Adjust the current ICU link in /usr/lib/icu
+
+icucurrent=`2>/dev/null ls -dp /usr/lib/icu/* | sed -n 's,.*/\([^/]*\)/$,\1,p'| sort -rn | head -1`
+cd /usr/lib/icu
+rm -f /usr/lib/icu/current
+if test x"$icucurrent" != x
+then
+ ln -s "$icucurrent" current
+fi
+
+%preun -n libicu26
+# Adjust the current ICU link in /usr/lib/icu
+
+icucurrent=`2>/dev/null ls -dp /usr/lib/icu/* | sed -n -e '/\/2.6.1\//d' -e 's,.*/\([^/]*\)/$,\1,p'| sort -rn | head -1`
+cd /usr/lib/icu
+rm -f /usr/lib/icu/current
+if test x"$icucurrent" != x
+then
+ ln -s "$icucurrent" current
+fi
+
+%prep
+%setup -q
+
+%build
+cd source
+chmod a+x ./configure
+CFLAGS="-O3" CXXFLAGS="-O" ./configure --prefix=/usr --sysconfdir=/etc --with-data-packaging=files --enable-shared --enable-static --disable-samples
+echo 'CPPFLAGS += -DICU_DATA_DIR=\"/usr/lib/icu/2.6.1\"' >> icudefs.mk
+make RPM_OPT_FLAGS="$RPM_OPT_FLAGS"
+
+%install
+rm -rf $RPM_BUILD_ROOT
+cd source
+make install DESTDIR=$RPM_BUILD_ROOT
+# static causes a static icudata lib to be built... - it's not needed, remove it.
+##cp stubdata/libicudata.a $RPM_BUILD_ROOT/usr/lib/icu/2.6.1/
+rm -f $RPM_BUILD_ROOT/usr/lib/icu/2.6.1/libicudata.a
+
+
+%files
+%defattr(-,root,root)
+%doc readme.html
+%doc license.html
+%config /etc/icu/convrtrs.txt
+/usr/share/icu/2.6.1/README
+/usr/share/icu/2.6.1/license.html
+/usr/lib/icu/2.6.1/*.cnv
+/usr/lib/icu/2.6.1/*.icu
+
+/usr/bin/derb
+/usr/bin/gencnval
+/usr/bin/genbrk
+/usr/bin/genrb
+/usr/bin/makeconv
+/usr/bin/icu-config
+/usr/bin/pkgdata
+/usr/bin/uconv
+
+/usr/sbin/decmn
+/usr/sbin/genccode
+/usr/sbin/gencmn
+/usr/sbin/genpname
+/usr/sbin/gennames
+/usr/sbin/gennorm
+/usr/sbin/genprops
+/usr/sbin/gentz
+/usr/sbin/genuca
+/usr/sbin/genidna
+/usr/share/icu/2.6.1/mkinstalldirs
+
+/usr/man/man1/gencnval.1.gz
+/usr/man/man1/genrb.1.gz
+/usr/man/man1/icu-config.1.gz
+/usr/man/man1/makeconv.1.gz
+/usr/man/man1/pkgdata.1.gz
+/usr/man/man1/uconv.1.gz
+/usr/man/man5/convrtrs.txt.5.gz
+/usr/man/man5/cnvalias.dat.5.gz
+/usr/man/man8/decmn.8.gz
+/usr/man/man8/genccode.8.gz
+/usr/man/man8/gencmn.8.gz
+/usr/man/man8/gennames.8.gz
+/usr/man/man8/gennorm.8.gz
+/usr/man/man8/genprops.8.gz
+/usr/man/man8/genuca.8.gz
+/usr/man/man8/genidna.8.gz
+
+%files -n icu-locales
+/usr/lib/icu/2.6.1/*.brk
+/usr/lib/icu/2.6.1/*.res
+%files -n libicu26
+%doc license.html
+/usr/lib/libicui18n.so.26
+/usr/lib/libicui18n.so.26.1
+/usr/lib/libicutoolutil.so.26
+/usr/lib/libicutoolutil.so.26.1
+/usr/lib/libicuuc.so.26
+/usr/lib/libicuuc.so.26.1
+/usr/lib/libicudata.so.26
+/usr/lib/libicudata.so.26.1
+/usr/lib/libicuio.so.26
+/usr/lib/libicuio.so.26.1
+/usr/lib/libiculx.so.26
+/usr/lib/libiculx.so.26.1
+/usr/lib/libicule.so.26
+/usr/lib/libicule.so.26.1
+
+%files -n libicu-devel
+%doc readme.html
+%doc license.html
+/usr/lib/libicui18n.so
+/usr/lib/libicui18n.a
+/usr/lib/libicuuc.so
+/usr/lib/libicuuc.a
+/usr/lib/libicutoolutil.so
+/usr/lib/libicutoolutil.a
+/usr/lib/libicuio.so
+/usr/lib/libicuio.a
+/usr/lib/libicudata.so
+/usr/lib/libicudata.a
+/usr/lib/libicule.so
+/usr/lib/libiculx.so
+/usr/lib/libicule.a
+/usr/lib/libiculx.a
+/usr/include/unicode/*.h
+/usr/include/layout/*.h
+/usr/lib/icu/2.6.1/Makefile.inc
+/usr/lib/icu/Makefile.inc
+/usr/share/icu/2.6.1/config
+/usr/share/icu/2.6.1/README
+/usr/share/doc/icu-2.6.1/*
+
+%changelog
+* Tue Aug 16 2003 Steven Loomis <srl@jtcsv.com>
+- update to 2.6.1 - include license
+* Thu Jun 05 2003 Steven Loomis <srl@jtcsv.com>
+- Update to 2.6
+* Fri Dec 27 2002 Steven Loomis <srl@jtcsv.com>
+- Update to 2.4 spec
+* Fri Sep 27 2002 Steven Loomis <srl@jtcsv.com>
+- minor updates to 2.2 spec. Rpath is off by default, don't pass it as an option.
+* Mon Sep 16 2002 Ian Holsman <ian@holsman.net>
+- update to icu 2.2
+
diff --git a/readme.html b/readme.html
new file mode 100644
index 0000000..767b71e
--- /dev/null
+++ b/readme.html
@@ -0,0 +1,2077 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+<html lang="en-US">
+ <head>
+ <meta name="COPYRIGHT" content=
+ "Copyright (c) 1997-2004 IBM Corporation and others. All Rights Reserved.">
+ <meta name="KEYWORDS" content=
+ "ICU; International Components for Unicode; what's new; readme; read me; introduction; downloads; downloading; building; installation;">
+ <meta name="DESCRIPTION" content=
+ "The introduction to the International Components for Unicode with instructions on building, installation, usage and other information about ICU.">
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+
+ <title>ReadMe for ICU</title>
+<style type="text/css">
+ h1 {border-width: 2px; border-style: solid; text-align: center; width: 100%; font-size: 200%; font-weight: bold}
+ h2 {margin-top: 3em; text-decoration: underline; page-break-before: always}
+ h2.TOC {page-break-before: auto}
+ h3 {margin-top: 2em; text-decoration: underline}
+ h4 {text-decoration: underline}
+ h5 {text-decoration: underline}
+ caption {font-weight: bold; text-align: left}
+ div.indent {margin-left: 2em}
+ ul.TOC {list-style-type: none}
+ samp {margin-left: 1em; border-style: groove; padding: 1em; display: block; background-color: #EEEEEE}
+</style>
+ </head>
+
+ <body>
+ <h1>International Components for Unicode<br>
+ <abbr title="International Components for Unicode">ICU</abbr> 2.8
+ ReadMe</h1>
+
+ <p>Version: 2004-Jan-08<br>
+ Copyright © 1997-2004 International Business Machines Corporation and
+ others. All Rights Reserved.</p>
+ <!-- Remember that there is a copyright at the end too -->
+ <hr>
+
+ <h2 class="TOC">Table of Contents</h2>
+
+ <ul class="TOC">
+ <li><a href="#Introduction">Introduction</a></li>
+
+ <li><a href="#GettingStarted">Getting Started</a></li>
+
+ <li><a href="#News">What Is New In This release?</a></li>
+
+ <li><a href="#Download">How To Download the Source Code</a></li>
+
+ <li><a href="#SourceCode">ICU Source Code Organization</a></li>
+
+ <li>
+ <a href="#HowToBuild">How To Build And Install ICU</a>
+
+ <ul class="TOC">
+ <li><a href="#HowToBuildSupported">Supported Platforms</a></li>
+
+ <li><a href="#HowToBuildWindows">Windows</a></li>
+
+ <li><a href="#HowToBuildWindowsXP64">Windows XP on IA64</a></li>
+
+ <li><a href="#HowToBuildUNIX">UNIX</a></li>
+
+ <li><a href="#HowToBuildZOS">z/OS (os/390)</a></li>
+
+ <li><a href="#HowToBuildOS400">OS/400 (iSeries)</a></li>
+ </ul>
+ </li>
+
+ <li><a href="#HowToPackage">How To Package ICU</a></li>
+
+ <li>
+ <a href="#ImportantNotes">Important Notes About Using ICU</a>
+
+ <ul class="TOC">
+ <li><a href="#ImportantNotesCPlusPlus">Using ICU in a Multithreaded
+ Environment</a></li>
+
+ <li><a href="#CharStrings">char * strings in ICU</a></li>
+
+ <li><a href="#ImportantNotesDefaultCP">Using the Default
+ Codepage</a></li>
+
+ <li><a href="#ImportantNotesWindows">Windows Platform</a></li>
+
+ <li><a href="#ImportantNotesUNIX">UNIX Type Platforms</a></li>
+ </ul>
+ </li>
+
+ <li>
+ <a href="#PlatformDependencies">Platform Dependencies</a>
+
+ <ul class="TOC">
+ <li><a href="#PlatformDependenciesNew">Porting To A New
+ Platform</a></li>
+
+ <li><a href="#PlatformDependenciesImpl">Platform Dependent
+ Implementations</a></li>
+
+ <li><a href="#PlatformDependenciesBuildOrder">Build Order Without
+ Using ICU's Makefiles</a></li>
+ </ul>
+ </li>
+ </ul>
+ <hr>
+
+ <h2><a name="Introduction" href="#Introduction">Introduction</a></h2>
+
+ <p>Today's software market is a global one in which it is desirable to
+ develop and maintain one application (single source/single binary) that
+ supports a wide variety of languages. The International Components for
+ Unicode (ICU) libraries provide robust and full-featured Unicode services
+ on a wide variety of platforms to help this design goal. The ICU libraries
+ provide support for:</p>
+
+ <ul>
+ <li>The latest version of the Unicode standard</li>
+
+ <li>Character set conversions with support for over 200 codepages</li>
+
+ <li>Locale data for more than 230 locales</li>
+
+ <li>Language sensitive text collation (sorting) and searching based on
+ the Unicode Collation Algorithm (=ISO 14651)</li>
+
+ <li>Regular expression matching and Unicode sets</li>
+
+ <li>Transformations for normalization, upper/lowercase, script
+ transliterations (50+ pairs)</li>
+
+ <li>Resource bundles for storing and accessing localized information</li>
+
+ <li>Date/Number/Message formatting and parsing of culture specific
+ input/output formats</li>
+
+ <li>Calendar specific date and time manipulation</li>
+
+ <li>Complex text layout for Arabic, Hebrew, Indic and Thai</li>
+
+ <li>Text boundary analysis for finding characters, word and sentence
+ boundaries</li>
+ </ul>
+
+ <p>ICU has a sister project <a href=
+ "http://oss.software.ibm.com/icu4j/index.html">ICU4J</a> that extends the
+ internationalization capabilities of Java to a level similar to ICU. The
+ ICU C/C++ project is also called ICU4C when a distinction is necessary.</p>
+
+ <h2><a name="GettingStarted" href="#GettingStarted">Getting
+ started</a></h2>
+
+ <p>This document describes how to build and install ICU on your machine.
+ For other information about ICU please see the following table of
+ links.<br>
+ The ICU homepage also links to related information about writing
+ internationalized software.</p>
+
+ <table border="1" cellpadding="3" width="100%" summary=
+ "These are some useful links regarding ICU and internationalization in general.">
+ <caption>
+ Here are some useful links regarding ICU and internationalization in
+ general.
+ </caption>
+
+ <tr>
+ <td>ICU Homepage</td>
+
+ <td><a href=
+ "http://oss.software.ibm.com/icu/index.html">http://oss.software.ibm.com/icu/index.html</a></td>
+ </tr>
+
+ <tr>
+ <td>ICU4J Homepage</td>
+
+ <td><a href=
+ "http://oss.software.ibm.com/icu4j/index.html">http://oss.software.ibm.com/icu4j/index.html</a></td>
+ </tr>
+
+ <tr>
+ <td>FAQ - Frequently Asked Questions about ICU</td>
+
+ <td><a href=
+ "http://oss.software.ibm.com/icu/userguide/icufaq.html">http://oss.software.ibm.com/icu/userguide/icufaq.html</a></td>
+ </tr>
+
+ <tr>
+ <td>ICU User's Guide</td>
+
+ <td><a href=
+ "http://oss.software.ibm.com/icu/userguide/index.html">http://oss.software.ibm.com/icu/userguide/index.html</a></td>
+ </tr>
+
+ <tr>
+ <td>Download ICU Releases</td>
+
+ <td><a href=
+ "http://oss.software.ibm.com/icu/download/index.html">http://oss.software.ibm.com/icu/download/index.html</a></td>
+ </tr>
+
+ <tr>
+ <td>API Documentation Online</td>
+
+ <td><a href=
+ "http://oss.software.ibm.com/icu/apiref/index.html">http://oss.software.ibm.com/icu/apiref/index.html</a></td>
+ </tr>
+
+ <tr>
+ <td>Online ICU Demos</td>
+
+ <td><a href=
+ "http://oss.software.ibm.com/icu/demo/index.html">http://oss.software.ibm.com/icu/demo/index.html</a></td>
+ </tr>
+
+ <tr>
+ <td>Contacts and Bug Reports/Feature Requests</td>
+
+ <td><a href=
+ "http://oss.software.ibm.com/icu/archives/index.html">http://oss.software.ibm.com/icu/archives/index.html</a></td>
+ </tr>
+ </table>
+
+ <p><strong>Important:</strong> Please make sure you understand the <a href=
+ "license.html">Copyright and License Information</a>.</p>
+
+ <h2><a name="News" href="#News">What is new in this release?</a></h2>
+
+ <p>The following list concentrates on <em>changes that affect existing
+ applications migrating from previous ICU releases</em>. For more news about
+ this release, see the <a href=
+ "http://oss.software.ibm.com/icu/download/2.8/index.html">ICU 2.8 download
+ page</a>.</p>
+
+ <h3><a name="News_Locale">Locale Identifier Changes</a></h3>
+
+ <p>The ICU locale identifier format has recently changed. In order to
+ improve support for RFC 3066 identifiers and to support keyword
+ identifiers, some minor breaking changes have been introduced. When your
+ application is working with POSIX locale identifiers or .NET locale
+ identifiers, you should use <code><a href=
+ "http://oss.software.ibm.com/icu/apiref/uloc_8h.html">uloc_canonicalize</a>()</code>
+ to convert it to an ICU locale identifier. It was an undocumented feature
+ that you could pass a POSIX locale to ICU, and ICU would convert it for you
+ automatically. For example, if you used @EURO or @PREEURO to identify
+ certain currencies, you should now be using the "@currency=" keyword for
+ the locale identifiers. If you use the <code>uloc_canonicalize()</code>
+ function, it will convert the @PREEURO variants to the proper ICU locale
+ identifier. For example, it will convert "fr-fr@PREEURO" to
+ "fr_FR@currency=FRF". More information about keywords can be found in the
+ <a href="http://oss.software.ibm.com/icu/userguide/locale.html">Locale
+ Section</a> of the User's Guide and <a href=
+ "http://www.openi18n.org/specs/ldml/1.0/ldml-spec.htm">on the OpenI18N
+ site</a>.</p>
+
+ <p>Some ISO 15924 script codes are used in some RFC 3066 language tags.
+ This is especially helpful when you need to differentiate cases where a
+ language can be written with more than one script. Since ICU now supports
+ ISO 15924 script codes in the locale identifier, you can now specify
+ locales like "zh_Hant" to specify Traditional Chinese. Previously, people
+ had to use "zh_TW" to specify Traditional Chinese, which isn't quite
+ correct because the locale identifier is specifying the language of a
+ region and not the type of language. The current locale identifiers, like
+ en_US, still work, and do not require any changes in your code. Future
+ versions of ICU will move the data into the proper locale resources, and
+ the locale infrastructure will be improved.</p>
+
+ <h3><a name="News_Library_Names">Static Library Names and AIX
+ linking</a></h3>
+
+ <p>Previously static and shared library names had the same naming scheme,
+ except the file extension was different between the filenames. For example,
+ the shared common library was called libicuuc.so, and the static common
+ library was called libicuuc.a on many Unix type machines. It has come to
+ our attention, that Windows import library names and static library names
+ can have the same name, and when the -brtl linker option is removed the
+ static and shared libraries have the same filename extension, which is
+ ".a". The -brtl linker option on AIX has been removed at several people's
+ request.</p>
+
+ <p>In order to differentiate between the two library names on all
+ platforms, static libraries now use an "s" as a prefix to differentiate
+ between the shared and static libraries. For example, "libicuuc.a" is now
+ "lib<strong>s</strong>icuuc.a". This means that if you used "-licuuc" to
+ link the common library into your application, you now need to use
+ "-lsicuuc".</p>
+
+ <h3><a name="News_ICUIO">ICUIO Library Changes</a></h3>
+
+ <p>The ICUIO library is still unsupported (this was previously called the
+ ustdio library), and some breaking fixes have been made to the library. %S
+ should be used for UTF-16 strings, and %C should be used for UChar for the
+ format strings. The %K and %U format specifiers are deprecated and will be
+ removed in a future version of ICU. Also u_fgets now uses the same argument
+ ordering as stdio fgets, which will make it easier for people to migrate
+ their existing stdio implementations to use ICUIO. Fortunately, u_fgets now
+ follows the Unicode algorithm for detecting hard line breaks, and some
+ performance enhancements to this library have been implemented so that most
+ of the formatting and parsing functions will run faster.</p>
+
+ <h3><a name="News_Library_Init">Library Initialization</a></h3>
+
+ <p>ICU4C 2.6 introduces a library initialization function. It is required
+ to call it before using any ICU services in a multi-threaded environment.
+ For details please see the <a href=
+ "http://oss.software.ibm.com/icu/apiref/index.html">documentation</a> of
+ <code>u_init()</code> in the <code>unicode/uclean.h</code> header file.</p>
+ <hr>
+
+ <h2><a name="Download" href="#Download">How To Download the Source
+ Code</a></h2>
+
+ <p>There are two ways to download ICU releases:</p>
+
+ <ul>
+ <li><strong>Official Release Snapshot:</strong><br>
+ If you want to use ICU (as opposed to developing it), you should
+ download an official packaged version of the ICU source code. These
+ versions are tested more thoroughly than day-to-day development builds of
+ the system, and they are packaged in zip and tar files for convenient
+ download. These packaged files can be found at <a href=
+ "http://oss.software.ibm.com/icu/download/index.html">http://oss.software.ibm.com/icu/download/index.html</a>.<br>
+
+ The packaged snapshots are named <strong>icu-nnnn.zip</strong> or
+ <strong>icu-nnnn.tgz</strong>, where nnnn is the version number. The .zip
+ file is used for Windows platforms, while the .tgz file is preferred on
+ most other platforms.<br>
+ Please unzip this file. It will reconstruct the source directory, which
+ includes anonymous CVS control directories (see below).</li>
+
+ <li><strong>CVS Source Repository:</strong><br>
+ If you are interested in developing features, patches, or bug fixes for
+ ICU, you should probably be working with the latest version of the ICU
+ source code. You will need to check the code out of our CVS repository to
+ ensure that you have the most recent version of all of the files. See our
+ <a href="http://oss.software.ibm.com/icu/develop/cvs.html">CVS page</a>
+ for details.</li>
+ </ul>
+
+ <h2><a name="SourceCode" href="#SourceCode">ICU Source Code
+ Organization</a></h2>
+
+ <p>In the descriptions below, <strong><i><ICU></i></strong> is the
+ full path name of the ICU directory (the top level directory from the
+ distribution archives) in your file system. You can also view the <a href=
+ "http://oss.software.ibm.com/icu/userguide/design.html">ICU Architectural
+ Design</a> section of the User's Guide to see which libraries you need for
+ your software product. You need at least the data (<code>[lib]icudt</code>)
+ and the common (<code>[lib]icuuc</code>) libraries in order to use ICU.</p>
+
+ <table border="1" cellpadding="0" width="100%" summary=
+ "The following files describe the code drop.">
+ <caption>
+ The following files describe the code drop.
+ </caption>
+
+ <tr>
+ <th scope="col">File</th>
+
+ <th scope="col">Description</th>
+ </tr>
+
+ <tr>
+ <td>readme.html</td>
+
+ <td>Describes the International Components for Unicode (this file)</td>
+ </tr>
+
+ <tr>
+ <td>license.html</td>
+
+ <td>Contains the text of the ICU license</td>
+ </tr>
+ </table>
+
+ <p><br>
+ </p>
+
+ <table border="1" cellpadding="0" width="100%" summary=
+ "The following directories contain source code and data files.">
+ <caption>
+ The following directories contain source code and data files.
+ </caption>
+
+ <tr>
+ <th scope="col">Directory</th>
+
+ <th scope="col">Description</th>
+ </tr>
+
+ <tr>
+ <td><i><ICU></i>/source/<b>common</b>/</td>
+
+ <td>The core Unicode and support functionality, such as resource
+ bundles, character properties, locales, codepage conversion,
+ normalization, Unicode properties, Locale, and UnicodeString.</td>
+ </tr>
+
+ <tr>
+ <td><i><ICU></i>/source/<b>i18n</b>/</td>
+
+ <td>Modules in i18n are generally the more data-driven, that is to say
+ resource bundle driven, components. These deal with higher-level
+ internationalization issues such as formatting, collation, text break
+ analysis, and transliteration.</td>
+ </tr>
+
+ <tr>
+ <td><i><ICU></i>/source/<b>data</b>/</td>
+
+ <td>
+ <p>This directory contains the source data in text format, which is
+ compiled into binary form during the ICU build process. It contains
+ several subdirectories, in which the data files are grouped by
+ function. Note that the build process must be run again after any
+ changes are made to this directory.</p>
+
+ <ul>
+ <li><b>brkitr/</b> Data files for character, word, sentence, title
+ casing and line boundary analysis.</li>
+
+ <li><b>locales/</b> These .txt files contain ICU language and
+ culture-specific localization data. Two special bundles are
+ <b>root</b>, which is the fallback data and parent of other
+ bundles, and <b>index</b>, which contains a list of installed
+ bundles. The makefile <b>resfiles.mk</b> contains the list of
+ resource bundle files.</li>
+
+ <li><b>mappings/</b> Here are the code page converter tables. These
+ .ucm files contain mappings to and from Unicode. These are compiled
+ into .cnv files. <b>convrtrs.txt</b> is the alias mapping table
+ from various converter name formats to ICU internal format and vice
+ versa. It produces cnvalias.icu. The makefiles <b>ucmfiles.mk,
+ ucmcore.mk,</b> and <b>ucmebcdic.mk</b> contain the list of
+ converters to be built.</li>
+
+ <li><b>translit/</b> This directory contains transliterator rules
+ as resource bundles, a makefile <b>trnsfiles.mk</b> containing the
+ list of installed system translitaration files, and as well the
+ special bundle <b>translit_index</b> which lists the system
+ transliterator aliases.</li>
+
+ <li><b>unidata/</b> This directory contains the Unicode data files.
+ Please see <a href=
+ "http://www.unicode.org/">http://www.unicode.org/</a> for more
+ information.</li>
+
+ <li><b>misc/</b> The misc directory contains other data files which
+ did not fit into the above categories. Currently it only contains
+ time zone information, and a name preperation file for <a href=
+ "http://www.ietf.org/rfc/rfc3490.txt">IDNA</a>.</li>
+
+ <li><b>out/</b> This directory contains the assembled memory mapped
+ files.</li>
+
+ <li><b>out/build/</b> This directory contains intermediate
+ (compiled) files, such as .cnv, .res, etc.</li>
+ </ul>
+
+ <p>If you are creating a special ICU build, you can set the ICU_DATA
+ environment variable to the out/ or the out/build/ directories, but
+ this is generally discouraged because most people set it incorrectly.
+ You can view the <a href=
+ "http://oss.software.ibm.com/icu/userguide/icudata.html">ICU Data
+ Management</a> section of the ICU User's Guide for details.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td><i><ICU></i>/source/test/<b>intltest</b>/</td>
+
+ <td>A test suite including all C++ APIs. For information about running
+ the test suite, see the users' guide.</td>
+ </tr>
+
+ <tr>
+ <td><i><ICU></i>/source/test/<b>cintltst</b>/</td>
+
+ <td>A test suite written in C, including all C APIs. For information
+ about running the test suite, see the users' guide.</td>
+ </tr>
+
+ <tr>
+ <td><i><ICU></i>/source/test/<b>testdata</b>/</td>
+
+ <td>Source text files for data, which are read by the tests. It
+ contains the subdirectories <b>out/build/</b> which is used for
+ intermediate files, and <b>out/</b> which contains
+ <b>testdata.dat.</b></td>
+ </tr>
+
+ <tr>
+ <td><i><ICU></i>/source/<b>tools</b>/</td>
+
+ <td>Tools for generating the data files. Data files are generated by
+ invoking <i><ICU></i>/source/data/build/makedata.bat on Win32 or
+ <i><ICU></i>/source/make on UNIX.</td>
+ </tr>
+
+ <tr>
+ <td><i><ICU></i>/source/<b>samples</b>/</td>
+
+ <td>Various sample programs that use ICU</td>
+ </tr>
+
+ <tr>
+ <td><i><ICU></i>/source/<b>extra</b>/</td>
+
+ <td>Non-supported API additions. Currently, it contains the 'ustdio'
+ file i/o library</td>
+ </tr>
+
+ <tr>
+ <td><i><ICU></i>/source/<b>layout</b>/</td>
+
+ <td>Contains the ICU layout engine (not a rasterizer).</td>
+ </tr>
+
+ <tr>
+ <td><i><ICU></i>/<b>packaging</b>/<br>
+ <i><ICU></i>/<b>debian</b>/</td>
+
+ <td>These directories contain scripts and tools for packaging the final
+ ICU build for various release platforms.</td>
+ </tr>
+
+ <tr>
+ <td><i><ICU></i>/source/<b>config</b>/</td>
+
+ <td>Contains helper makefiles for platform specific build commands.
+ Used by 'configure'.</td>
+ </tr>
+
+ <tr>
+ <td><i><ICU></i>/source/<b>allinone</b>/</td>
+
+ <td>Contains top-level ICU workspace and project files, for instance to
+ build all of ICU under one MSVC project.</td>
+ </tr>
+
+ <tr>
+ <td><i><ICU></i>/<b>include</b>/</td>
+
+ <td>Contains the headers needed for developing software that uses ICU
+ on Windows.</td>
+ </tr>
+
+ <tr>
+ <td><i><ICU></i>/<b>lib</b>/</td>
+
+ <td>Contains the import libraries for linking ICU into your Windows
+ application.</td>
+ </tr>
+
+ <tr>
+ <td><i><ICU></i>/<b>bin</b>/</td>
+
+ <td>Contains the libraries and executables for using ICU on
+ Windows.</td>
+ </tr>
+ </table>
+ <!-- end of ICU structure ==================================== -->
+
+ <h2><a name="HowToBuild" href="#HowToBuild">How To Build And Install
+ ICU</a></h2>
+
+ <h3><a name="HowToBuildSupported" href="#HowToBuildSupported">Supported
+ Platforms</a></h3>
+
+ <table border="1" cellpadding="3" summary=
+ "ICU can be built on many platforms.">
+ <caption>
+ Here is a status of functionality of ICU on several different
+ platforms.
+ </caption>
+
+ <tr>
+ <th scope="col">Operating system</th>
+
+ <th scope="col">Compiler</th>
+
+ <th scope="col">Testing frequency</th>
+ </tr>
+
+ <tr>
+ <td>Windows 2000/XP</td>
+
+ <td>Microsoft Visual C++ 6.0</td>
+
+ <td>Reference platform</td>
+ </tr>
+
+ <tr>
+ <td>Windows XP</td>
+
+ <td>Microsoft Visual C++ .NET 2002 (7.0)</td>
+
+ <td>Reference platform</td>
+ </tr>
+
+ <tr>
+ <td>Red Hat Linux 7.2</td>
+
+ <td>gcc 2.96</td>
+
+ <td>Reference platform</td>
+ </tr>
+
+ <tr>
+ <td>AIX 5.1.0 L</td>
+
+ <td>Visual Age C++ 5.0</td>
+
+ <td>Reference platform</td>
+ </tr>
+
+ <tr>
+ <td>Solaris 7 (SunOS 5.7)</td>
+
+ <td>Workshop Pro (Forte) CC 6.0</td>
+
+ <td>Reference platform</td>
+ </tr>
+
+ <tr>
+ <td>HP-UX 11.01</td>
+
+ <td>aCC A.03.13<br>
+ cc A.11.01.00</td>
+
+ <td>Reference platform</td>
+ </tr>
+
+ <tr>
+ <td>Windows NT/98</td>
+
+ <td>Microsoft Visual C++ 6.0</td>
+
+ <td>Regularly tested</td>
+ </tr>
+
+ <tr>
+ <td>Mac OS X (10.2)</td>
+
+ <td>gcc 3.1<br>
+ (Developer Tools, July 2002)</td>
+
+ <td>Regularly tested</td>
+ </tr>
+
+ <tr>
+ <td>Solaris 8 (SunOS 5.8)</td>
+
+ <td>Workshop Pro CC 4.2<br>
+ (use 'runConfigureICU SOLARISCC/W4.2')</td>
+
+ <td>Regularly tested</td>
+ </tr>
+
+ <tr>
+ <td>Solaris 2.6 (SunOS 5.6)</td>
+
+ <td>gcc 2.95.2</td>
+
+ <td>Regularly tested</td>
+ </tr>
+
+ <tr>
+ <td>FreeBSD 4.8</td>
+
+ <td>gcc 2.95.4</td>
+
+ <td>Regularly tested</td>
+ </tr>
+
+ <tr>
+ <td>Red Hat Alpha Linux 7.2</td>
+
+ <td>gcc 2.96</td>
+
+ <td>Regularly tested</td>
+ </tr>
+
+ <tr>
+ <td>z/OS 1.2</td>
+
+ <td>cxx 1.2</td>
+
+ <td>Regularly tested</td>
+ </tr>
+
+ <tr>
+ <td>OS/400 (iSeries) V5R1</td>
+
+ <td>iCC</td>
+
+ <td>Regularly tested</td>
+ </tr>
+
+ <tr>
+ <td>Red Hat Alpha Linux 7.2</td>
+
+ <td>Compaq C++ Compiler 3.2<br>
+ Compaq C Compiler 6.5.6</td>
+
+ <td>Rarely tested</td>
+ </tr>
+
+ <tr>
+ <td>AIX 4.3.3</td>
+
+ <td>xlC_r 4.0.2.1</td>
+
+ <td>Rarely tested</td>
+ </tr>
+
+ <tr>
+ <td>QNX</td>
+
+ <td>gcc</td>
+
+ <td>Rarely tested</td>
+ </tr>
+
+ <tr>
+ <td>NetBSD, OpenBSD</td>
+
+ <td>gcc</td>
+
+ <td>Rarely tested</td>
+ </tr>
+
+ <tr>
+ <td>BeOS</td>
+
+ <td>gcc</td>
+
+ <td>Rarely tested</td>
+ </tr>
+
+ <tr>
+ <td>CygWin</td>
+
+ <td>gcc 2.95.3</td>
+
+ <td>Rarely tested</td>
+ </tr>
+
+ <tr>
+ <td>CygWin</td>
+
+ <td>Microsoft Visual C++ 6.0</td>
+
+ <td>Rarely tested</td>
+ </tr>
+
+ <tr>
+ <td>SGI/IRIX</td>
+
+ <td> </td>
+
+ <td>Rarely tested</td>
+ </tr>
+
+ <tr>
+ <td>Tru64 (OSF)</td>
+
+ <td>Compaq's cxx compiler</td>
+
+ <td>Rarely tested</td>
+ </tr>
+
+ <tr>
+ <td>HP-UX 11.01</td>
+
+ <td>CC A.03.10</td>
+
+ <td>Rarely tested</td>
+ </tr>
+
+ <tr>
+ <td>MP-RAS</td>
+
+ <td>NCR MP-RAS C/C++ Compiler</td>
+
+ <td>Rarely tested</td>
+ </tr>
+ </table>
+
+ <p><br>
+ </p>
+
+ <h4>Key to testing frequency</h4>
+
+ <dl>
+ <dt><i>Reference platform</i></dt>
+
+ <dd>ICU will work on these platforms with these compilers</dd>
+
+ <dt><i>Regularly tested</i></dt>
+
+ <dd>ICU should work on these platforms with these compilers</dd>
+
+ <dt><i>Rarely tested</i></dt>
+
+ <dd>ICU has been ported to these platforms but may not have been tested
+ there recently</dd>
+ </dl>
+
+ <h3><a name="HowToBuildWindows" href="#HowToBuildWindows">How To Build And
+ Install On Windows</a></h3>
+
+ <p>Building International Components for Unicode requires:</p>
+
+ <ul>
+ <li>Microsoft NT 4.0 and above, or Windows 98 and above</li>
+
+ <li>Microsoft Visual C++ 6.0 (Service Pack 2 is required to work with the
+ release build of max speed optimization).</li>
+ </ul>
+
+ <p>(If you want to build with Microsoft Visual C++ .NET, please refer to
+ the <a href="#HowToBuildWindowsDotNet">note about building with Visual
+ Studio .NET</a> below.)</p>
+
+ <p>The steps are:</p>
+
+ <ol>
+ <li>Unzip the icu-XXXX.zip file into any convenient location. Using
+ command line zip, type "unzip -a icu-XXXX.zip -d drive:\directory", or
+ just use WinZip.</li>
+
+ <li>Be sure that the ICU binary directory, <i><ICU></i>\bin\, is
+ included in the <strong>PATH</strong> environment variable. The tests
+ will not work without the location of the ICU DLL files in the path.</li>
+
+ <li>Open the "<i><ICU></i>\source\allinone\allinone.dsw" workspace
+ file in Microsoft Visual C++ 6.0. (This workspace includes all the
+ International Components for Unicode libraries, necessary ICU building
+ tools, and the intltest and cintltest test suite projects). Please see
+ the note below if you want to build from the command line instead.</li>
+
+ <li>Set the active Project to the "all" project. To do this: Choose
+ "Project" menu, and select "Set active project". In the submenu, select
+ the "all" workspace.</li>
+
+ <li>Set the active configuration to "Win32 Debug" or "Win32 Release" (See
+ <a href="#HowToBuildWindowsConfig">Windows configuration note</a>
+ below).</li>
+
+ <li>Choose the "Build" menu and select "Rebuild All". If you want to
+ build the Debug and Release at the same time, see the <a href=
+ "#HowToBuildWindowsBatch">batch configuration note</a> below.</li>
+
+ <li>Run the C++ test suite, "intltest". To do this: set the active
+ project to "intltest", and press F5 to run it.</li>
+
+ <li>Run the C test suite, "cintltst". To do this: set the active project
+ to "cintltst", and press F5 to run it.</li>
+
+ <li>Make sure that both "cintltst" and "intltest" passed without any
+ errors. The return codes are non-zero when they do not pass. Visual C++
+ will display the return codes in the debug tag of the output window. When
+ "intltest" and "cintltest" return 0, it means that everything is
+ installed correctly. You can press Ctrl+F5 on the test project to run the
+ test and see what error messages were displayed (if any tests
+ failed).</li>
+
+ <li>You are now able to develop applications with ICU by using the
+ libraries and tools in <i><ICU></i>\bin\. The headers are in
+ <i><ICU></i>\include\ and the link libraries are in
+ <i><ICU></i>\lib\. To install the ICU runtime on a machine, or ship
+ it with your application, copy the needed components from
+ <i><ICU></i>\bin\ to a location on the system PATH or to your
+ application directory.</li>
+ </ol>
+
+ <p><a name="HowToBuildWindowsCommandLine"><strong>Using MSDEV At The
+ Command Line Note:</strong></a> You can build ICU from the command line.
+ Assuming that you have properly installed Microsoft Visual C++ to support
+ command line execution, you can run the following command, 'msdev
+ <i><ICU></i>\source\allinone\allinone.dsw /MAKE "ALL"'.</p>
+
+ <p><a name="HowToBuildWindowsConfig"><strong>Setting Active Configuration
+ Note:</strong></a> To set the active configuration, two different
+ possibilities are:</p>
+
+ <ul>
+ <li>Choose "Build" menu, select "Set Active Configuration", and select
+ "Win32 Release" or "Win32 Debug".</li>
+
+ <li>Another way is to select "Customize" in the "Tools" menu, select the
+ "Toolbars" tab, enable "Build" instead of "Build Minibar", and click on
+ "Close". This will bring up a toolbar which you can move aside the other
+ permanent toolbars at the top of the MSVC window. The advantage is that
+ you now have an easy-to-reach pop-up menu that will always show the
+ currently selected active configuration. Or, you can drag the project and
+ configuration selections and drop them on the menu bar for later
+ selection.</li>
+ </ul>
+
+ <p><a name="HowToBuildWindowsBatch"><strong>Batch Configuration
+ Note:</strong></a> If you want to build the Debug and Release
+ configurations at the same time, choose "Build" menu and select "Batch
+ Build..." instead (and mark all configurations as checked), then click the
+ button named "Rebuild All". The "all" workspace will build all the
+ libraries, test programs and various ICU tools (e.g. genrb for generating
+ binary locale data files).</p>
+
+ <p><a name="HowToBuildWindowsDotNet"><strong>Microsoft Visual Studio .NET
+ Note:</strong></a> ICU will build with Microsoft Visual Studio .NET 2002.
+ It is recommended that you use the
+ "<i><ICU></i>\source\allinone\allinone.sln" solution workspace to
+ build ICU. The instructions for building with Visual Studio .NET are
+ similar to the instructions for Visual Studio .NET. If you have Microsoft
+ Visual Studio .NET 2003 the Visual Studio .NET 2002 project files will
+ automatically be converted to 2003 project files when you open the solution
+ workspace for the first time.</p>
+
+ <h3><a name="HowToBuildWindowsXP64" href="#HowToBuildWindowsXP64">How To
+ Build And Install On Windows XP on IA64</a></h3>
+
+ <p>Building International Components for Unicode requires:</p>
+
+ <ul>
+ <li>Microsoft XP on an IA64 (Itanium®) machine</li>
+
+ <li>Microsoft Visual C++ 6.0 (Service Pack 2 is required to work with the
+ release build of max speed optimization).</li>
+
+ <li>Microsoft Platform SDK.</li>
+ </ul>
+
+ <p>The steps are:</p>
+
+ <ol>
+ <li>Follow steps 1-3 in the <a href="#HowToBuildWindows">in the previous
+ section</a>.</li>
+
+ <li>Open the "Set Windows XP 64-bit Build Environment (Retail)" command
+ window from the Microsoft Platform SDK.</li>
+
+ <li>If your computer is not set up to do command line builds, then run
+ "set PATH=C:\Program Files (x86)\Microsoft Visual
+ Studio\Common\MSDev98\Bin;%PATH%" or include the path where MSDEV.EXE is
+ located.</li>
+
+ <li>Use cd to get into the <i><ICU></i> directory.</li>
+
+ <li>Run this command: 'msdev /USEENV
+ <i><ICU></i>\source\allinone\allinone.dsw /MAKE "all - Win64
+ Release"'</li>
+
+ <li>Run "cd source\test\intltest\Release"</li>
+
+ <li>Run the C++ test suite, "intltest". There should be no errors.</li>
+
+ <li>Run "cd ..\..\cintltst\Release"</li>
+
+ <li>Run the C test suite, "cintltst". There should be no errors.</li>
+
+ <li>Follow the last step in the <a href="#HowToBuildWindows">in the
+ previous section</a>.</li>
+ </ol>
+
+ <h3><a name="HowToBuildUNIX" href="#HowToBuildUNIX">How To Build And
+ Install On UNIX</a></h3>
+
+ <p>Building International Components for Unicode on UNIX requires:</p>
+
+ <ul>
+ <li>A C++ compiler installed on the target machine (for example: gcc, CC,
+ xlC_r, aCC, cxx, etc...).</li>
+
+ <li>An ANSI C compiler installed on the target machine (for example:
+ cc).</li>
+
+ <li>A recent version of GNU make (3.77+).</li>
+
+ <li>For a list of z/OS tools please view the <a href=
+ "#HowToBuildZOS">z/OS build section</a> of this document for further
+ details.</li>
+ </ul>
+
+ <p>Here are the steps to build ICU:</p>
+
+ <ol>
+ <li>Decompress the icu-<i>X</i>.<i>Y</i>.tgz (or
+ icu-<i>X</i>.<i>Y</i>.tar.gz) file. For example, <tt>"gunzip -d <
+ icu-<i>X</i>.<i>Y</i>.tgz | tar xvf -"</tt></li>
+
+ <li>Change directory to the "icu/source".</li>
+
+ <li>Run <tt>"chmod +x runConfigureICU configure install-sh"</tt> because
+ these files may have the wrong permissions.</li>
+
+ <li>Run the <tt><a href="source/runConfigureICU">runConfigureICU</a></tt>
+ script for your platform. (See <a href="#HowToConfigureICU">configuration
+ note</a> below).</li>
+
+ <li>Type <tt>"gmake"</tt> (or "make" if GNU make is the default make on
+ your platform) to compile the libraries and all the data files. The
+ proper name of the GNU make command is printed at the end of the
+ configuration run, as in "You must use gmake to compile ICU".</li>
+
+ <li>Optionally, type <tt>"gmake check"</tt> to run the test suite, which
+ checks for ICU's functionality integrity (See <a href=
+ "#HowToTestWithoutGmake">testing note</a> below).</li>
+
+ <li>Type <tt>"gmake install"</tt> to install ICU. If you used the
+ --prefix= option on configure or runConfigureICU, ICU will be installed
+ to the directory you specified. (See <a href=
+ "#HowToInstallICU">installation note</a> below).</li>
+ </ol>
+
+ <p><a name="HowToConfigureICU"><strong>Configuring ICU NOTE:</strong></a>
+ Type <tt>"./runConfigureICU --help"</tt> for help on how to run it and a
+ list of supported platforms. You may also want to type <tt>"./configure
+ --help"</tt> to print the available configure options that you may want to
+ give runConfigureICU. If you are not using the runConfigureICU script, or
+ your platform is not supported by the script, you may need to set your CC,
+ CXX, CFLAGS and CXXFLAGS environment variables, and type
+ <tt>"./configure"</tt>. Some of the more frequently used options to
+ configure are --disable-64bit-libs to create 32-bit libraries, and --srcdir
+ to do out of source builds (build the libraries in the current location).
+ HP-UX user's, please see this <a href="#ImportantNotesHPUX">note regarding
+ multithreaded build issues</a> with newer compilers.</p>
+
+ <p><a name="HowToTestWithoutGmake"><strong>Running The Tests From The
+ Command Line NOTE:</strong></a> You may have to set certain variables if
+ you with to run test programs individually, that is apart from "gmake
+ check". The environment variable <strong>ICU_DATA</strong> can be set to
+ the full pathname of the data directory to indicate where the locale data
+ files and conversion mapping tables are when you are not using the shared
+ library (e.g. by using the .dat archive or the individual data files). The
+ trailing "/" is required after the directory name (e.g.
+ "$Root/source/data/out/" will work, but the value "$Root/source/data/out"
+ is not acceptable). You do not need to set <strong>ICU_DATA</strong> if the
+ complete shared data library is in your library path.</p>
+
+ <p><a name="HowToInstallICU"><strong>Installing ICU NOTE:</strong></a> Some
+ platforms use package management tools to control the installation and
+ uninstallation of files on the system, as well as the integrity of the
+ system configuration. You may want to check if ICU can be packaged for your
+ package management tools by looking into the "packaging" directory. (Please
+ note that if you are using a snapshot of ICU from CVS, it is probable that
+ the packaging scripts or related files are not up to date with the contents
+ of ICU at this time, so use them with caution).</p>
+
+ <h3><a name="HowToBuildZOS" href="#HowToBuildZOS">How To Build And Install
+ On z/OS (OS/390)</a></h3>
+
+ <p>You can install ICU on z/OS or OS/390 (the previous name of z/OS), but
+ IBM tests only the z/OS installation. These platforms commonly are called
+ "MVS". You install ICU in a z/OS UNIX system services file system such as
+ HFS or zFS. On this platform, it is important that you understand a few
+ details:</p>
+
+ <ul>
+ <li>APAR PQ58392 may be needed by z/OS 1.2 or 1.3 in order to get some
+ ICU number formatting functions to work properly. The APAR affects C and
+ C++ code.</li>
+
+ <li>The gnu utilities gmake and gzip/gunzip are needed and can be
+ obtained for z/OS from <a href=
+ "http://www.ibm.com/servers/eserver/zseries/zos/unix/bpxa1ty1.html#opensrc">
+ z/OS UNIX - Tools and Toys</a>. Documentation on these tools can be found
+ at the <a href=
+ "http://publib-b.boulder.ibm.com/Redbooks.nsf/RedbookAbstracts/sg245944.html">
+ Open Source Software for z/OS UNIX</a> Red Book.</li>
+
+ <li>Encoding considerations: The source code assumes that it is compiled
+ with codepage ibm-1047 (to be exact, the UNIX System Services variant of
+ it). The pax command converts all of the source code files from ASCII to
+ codepage ibm-1047 (USS) EBCDIC. However, some files are binary files and
+ must not be converted, or must be converted back to their original state.
+ You can use the <a href="as_is/os390/unpax-icu.sh">unpax-icu.sh</a>
+ script to do this for you automatically. It will unpackage the tar file
+ and convert all the necessary files for you automatically.</li>
+
+ <li>
+ <p>z/OS supports both native S/390 hexadecimal floating point and (with
+ OS/390 2.6 and later) IEEE 754 binary floating point. This is a compile
+ time option. Applications built with IEEE should use ICU DLLs that are
+ built with IEEE (and vice versa). The environment variable IEEE390=0
+ will cause the z/OS version of ICU to be built without IEEE floating
+ point support and use the native hexadecimal floating point. By default
+ ICU is built with IEEE 754 support.</p>
+
+ <p><em>Important:</em> Currently (ICU 1.4.2), native floating point
+ support is sufficient for codepage conversion, resource bundle and
+ UnicodeString operations, but the Format APIs require IEEE binary
+ floating point.</p>
+
+ <p>Examples for configuring ICU:<br>
+ Debug build: <code>./runConfigureICU --enable-debug zOS</code><br>
+ Release build: <code>./runConfigureICU zOS</code></p>
+ </li>
+
+ <li>
+ <p>z/OS introduced the concept of Extra Performance Linkage (XPLINK) to
+ bring performance improvement opportunities to call-intensive C and C++
+ applications such as ICU. XPLINK is enabled on a DLL-by-DLL basis, so
+ if you are considering using XPLINK in your application that uses ICU,
+ you should consider building the XPLINK-enabled version of ICU. You
+ need to set ICU's environment variable <code>OS390_XPLINK=1</code>
+ prior to invoking the make process to produce binaries that are enabled
+ for XPLINK.</p>
+
+ <p>Note: XPLINK, which is enabled for z/OS 1.2 and later, requires the
+ PTF PQ69418 to build XPLINK-enabled binaries.</p>
+ </li>
+
+ <li>Since the default make on z/OS is not gmake, the pkgdata tool
+ requires that the "make" command is aliased to your installed version of
+ gmake. You may also need to set $MAKE equal to the fully qualified path
+ of GNU make. GNU make is available with the "z/OS UNIX - Tools and Toys"
+ that was mentioned above. The required version is the same UNIX build
+ instructions.</li>
+
+ <li>The makedep executable that is used with the z/OS ICU build process
+ is not shipped with ICU. It is available at the <a href=
+ "http://www.ibm.com/servers/eserver/zseries/zos/unix/bpxa1ty1.html#opensrc">
+ z/OS UNIX - Tools and Toys</a> site. The PATH environment variable should
+ be updated to contain the location of this executable prior to build.
+ Alternatively, makedep may be moved into an existing PATH directory.</li>
+
+ <li>
+ <p>When you build ICU on a system such as z/OS 1.2, the binaries that
+ result can run on that level of the operating system and later, such as
+ z/OS 1.3 and z/OS 1.4. It's possible that you may have a z/OS 1.4
+ system, but you may need to deliver binaries on z/OS 1.2 and above.
+ z/OS gives you this ability by targeting the complier and linker to run
+ at the older level, thereby producing the desired binaries.</p>
+
+ <p>To set the compiler and LE environment to OS/390 2.10, specify the
+ following, "<code>./runConfigureICU OS390V2R10</code>"</p>
+
+ <p>To set the compiler and LE environment to z/OS 1.2 specify the
+ following, "<code>./runConfigureICU zOSV1R2</code>"</p>
+ </li>
+
+ <li>The rest of the instructions for building and testing ICU on z/OS
+ with UNIX System Services are the same as the <a href=
+ "#HowToBuildUNIX">How To Build And Install On UNIX</a> section.</li>
+ </ul>
+
+ <h4>z/OS (Batch/PDS) support outside the UNIX system services
+ environment</h4>
+
+ <p>By default, ICU builds its libraries into the UNIX file system (HFS). In
+ addition, there is a z/OS specific environment variable (OS390BATCH) to
+ build some libraries into the z/OS native file system. This is useful, for
+ example, when your application is externalized via Job Control Language
+ (JCL).</p>
+
+ <p>The OS390BATCH environment variable enables non-UNIX support including
+ the batch environment. When OS390BATCH is set, the libicuuc<i>XX</i>.dll,
+ libicudt<i>XX</i>e.dll, and libicudt<i>XX</i>e_stub.dll binaries are built
+ into data sets (the native file system). Turning on OS390BATCH does not
+ turn off the normal z/OS UNIX build. This means that the z/OS UNIX (HFS)
+ DLLs will always be created.</p>
+
+ <p>Two additional environment variables indicate the names of the z/OS data
+ sets to use. The LOADMOD environment variable identifies the name of the
+ data set that contains the dynamic link libraries (DLLs) and the LOADEXP
+ environment variable identifies the name of the data set that contains the
+ side decks, which are normally the files with the .x suffix in the UNIX
+ file system.</p>
+
+ <p>A data set is roughly equivalent to a UNIX or Windows file. For most
+ kinds of data sets the operating system maintains record boundaries. UNIX
+ and Windows files are byte streams. Two kinds of data sets are PDS and
+ PDSE. Each data set of these two types contains a directory. It is like a
+ UNIX directory. Each "file" is called a "member". Each member name is
+ limited to eight bytes, normally EBCDIC.</p>
+
+ <p>Here is an example of some environment variables that you can set prior
+ to building ICU:</p>
+<pre>
+<samp>OS390BATCH=1
+LOADMOD=<i>USER</i>.ICU.LOAD
+LOADEXP=<i>USER</i>.ICU.EXP</samp>
+</pre>
+
+ <p>The PDS member names for the DLL file names are as follows:</p>
+<pre>
+<samp>IXMI<i>XX</i>IN --> libicui18n<i>XX</i>.dll
+IXMI<i>XX</i>UC --> libicuuc<i>XX</i>.dll
+IXMI<i>XX</i>DA --> libicudt<i>XX</i>e.dll
+IXMI<i>XX</i>D1 --> libicudt<i>XX</i>e_stub.dll <i>(Only when OS390_STUBDATA=1)</i></samp>
+</pre>
+
+ <p>You should point the LOADMOD environment variable at a partitioned data
+ set extended (PDSE) and point the LOADEXP environment variable at a
+ partitioned data set (PDS). The PDSE can be allocated with the following
+ attributes:</p>
+<pre>
+<samp>Data Set Name . . . : <i>USER</i>.ICU.LOAD
+Management class. . : <i>**None**</i>
+Storage class . . . : <i>BASE</i>
+Volume serial . . . : <i>TSO007</i>
+Device type . . . . : <i>3390</i>
+Data class. . . . . : LOAD
+Organization . . . : PO
+Record format . . . : U
+Record length . . . : 0
+Block size . . . . : 32760
+1st extent cylinders: 1
+Secondary cylinders : 5
+Data set name type : LIBRARY</samp>
+</pre>
+
+ <p>The PDS can be allocated with the following attributes:</p>
+<pre>
+<samp>Data Set Name . . . : <i>USER</i>.ICU.EXP
+Management class. . : <i>**None**</i>
+Storage class . . . : <i>BASE</i>
+Volume serial . . . : <i>TSO007</i>
+Device type . . . . : <i>3390</i>
+Data class. . . . . : <i>**None**</i>
+Organization . . . : PO
+Record format . . . : FB
+Record length . . . : 80
+Block size . . . . : <i>3200</i>
+1st extent cylinders: 3
+Secondary cylinders : 3
+Data set name type : PDS</samp>
+</pre>
+
+ <h3><a name="HowToBuildOS400" href="#HowToBuildOS400">How To Build And
+ Install On OS/400 (iSeries)</a></h3>
+
+ <p>Before you start building ICU, ICU requires the following:</p>
+
+ <ul>
+ <li>QSHELL interpreter installed (install base option 30, operating
+ system)</li>
+ <!--li>QShell Utilities, PRPQ 5799-XEH (not required for V4R5)</li-->
+
+ <li>ILE C/C++ Compiler for iSeries, LPP 5722-WDS</li>
+
+ <li>The latest GNU facilities (You can get the GNU facilities for OS/400
+ from <a href=
+ "http://www.as400.ibm.com/developer/factory/porting/gnu_utilities.html">http://www.as400.ibm.com/developer/factory/porting/gnu_utilities.html</a>).
+ Older versions may not work properly.</li>
+ </ul>
+
+ <p>The following describes how to setup and build ICU. For background
+ information, you should look at the <a href="#HowToBuildUNIX">UNIX build
+ instructions</a>.</p>
+
+ <ol>
+ <li>
+ Create AS400 target library. This library will be the target for the
+ resulting modules, programs and service programs. You will specify this
+ library on the OUTPUTDIR environment variable in step 2.<br>
+
+<pre>
+<samp>CRTLIB LIB(<i>libraryname</i>)</samp>
+</pre>
+ <br>
+ </li>
+
+ <li>
+ Set up the following environment variables in your build process (use
+ the <i>libraryname</i> from the previous step)
+<pre>
+<samp>ADDENVVAR ENVVAR(CC) VALUE('/usr/bin/icc')
+ADDENVVAR ENVVAR(CXX) VALUE('/usr/bin/icc')
+ADDENVVAR ENVVAR(MAKE) VALUE('/usr/bin/gmake')
+ADDENVVAR ENVVAR(OUTPUTDIR) VALUE('<i>libraryname</i>')</samp>
+</pre>
+ <i>libraryname</i> identifies target as400 library for *module, *pgm
+ and *srvpgm objects.<br>
+ <br>
+ </li>
+ <!--li>Add QCXXN, to your build process library list. This results in the resolution of CRTCPPMOD used by the icc compiler</li-->
+
+ <li>Run <tt>'CHGJOB CCSID(37)'</tt></li>
+
+ <li>Run <tt>'QSH'</tt></li>
+
+ <li>Run gunzip on the ICU source code compressed tar archive
+ (icu-<i>X</i>.<i>Y</i>.tgz or icu-<i>X</i>.<i>Y</i>.tar.gz).</li>
+
+ <li>Run unpax-icu.sh on the tar file from the ICU download page.</li>
+
+ <li>Change your current directory to icu/source.</li>
+
+ <li>Run <tt>'export CFLAGS=-O4 CXXFLAGS=-O4'</tt> to optimize your build
+ of ICU. If the build fails, rerun these build steps without this step
+ before asking the icu4c-support mailing list for help.</li>
+
+ <li>Run <tt>'cp ../as_is/os400/configure .'</tt></li>
+
+ <li>Run <tt>'./configure --host=as400-os400'</tt></li>
+
+ <li>
+ If you specified <tt>--with-data-packaging=archive</tt> to configure,
+ you can skip this step. In a future release of ICU, we hope to
+ eliminate this complicated step. Any suggestions to improve the ICU
+ installation are greatly appreciated, and you can send those
+ suggestions to the <a href=
+ "http://oss.software.ibm.com/developerworks/oss/mailman/listinfo/icu4c-support/">
+ icu4c-support</a> mailing list.
+
+ <ol type="a">
+ <li>Run <tt>'mv data/Makefile data/Makefile.hide'</tt></li>
+
+ <li>Run <tt>'gmake'</tt> to build some of the ICU libraries.</li>
+
+ <li>
+ When the gmake command fails in icu/source/data, run the following
+ commands to setup and build the data library:
+<pre>
+<samp>cd data
+mv Makefile.hide Makefile
+system CRTLIB "LIB(<i>datalibraryname</i>)"
+gmake OUTPUTDIR=<i>datalibraryname</i>
+system CRTSRVPGM "SRVPGM(<i>libraryname</i>/LIBICUDATA)" "MODULE(<i>datalibraryname</i>/*ALL)"
+ "EXPORT(*ALL)" "TEXT('ICU 2.8 DATA')" "OPTION(*DUPPROC *DUPVAR)"
+ln -fs /qsys.lib/<i>libraryname</i>.lib/libicudata.srvpgm out/libicudata.so
+cd ..
+del common/libicuuc.so
+</samp>
+</pre>
+ </li>
+
+ <li>Your data library should now be usable. Go to the next step,
+ which is needed to rebind to the actual data library and finish the
+ build.</li>
+ </ol>
+ </li>
+
+ <li>Run <tt>'gmake'</tt> to build ICU.</li>
+
+ <li>Run <tt>'gmake check'</tt> to build the tests.</li>
+
+ <li>The "utility/MultithreadTest" test in intltest may have failed during
+ <tt>'gmake check'</tt>. In order to make this test pass, please use
+ <tt>'gmake check QIBM_MULTI_THREADED=Y'</tt> after you built the tests
+ with <tt>'gmake check'</tt> from the previous step. You can look at the
+ <a href=
+ "http://publib.boulder.ibm.com/iseries/v5r1/ic2924/index.htm?info/apis/concept4.htm">
+ iSeries Information Center</a> for more details.</li>
+ </ol>
+ <!-- end build environment -->
+
+ <h2><a name="HowToPackage" href="#HowToPackage">How To Package ICU</a></h2>
+
+ <p>There are many ways that a person can package ICU with their software
+ products. Usually only the libraries need to be considered for
+ packaging.</p>
+
+ <p>On UNIX, you should have used "<tt>gmake install</tt>" to make it easier
+ to develop and package ICU. The bin, lib and include directories are needed
+ to develop applications that use ICU. These directories will be created
+ relative to the "<tt>--prefix=</tt><i>dir</i>" configure option (See the <a
+ href="#HowToBuildUNIX">UNIX build instructions</a>). When ICU is built on
+ Windows, a similar directory structure is built.</p>
+
+ <p>When changes have been made to the standard ICU distribution, it is
+ recommended that at least one of the following guidelines be followed for
+ special packaging.</p>
+
+ <ol>
+ <li>Add a suffix name to the library names. This can be done with the
+ --with-library-suffix configure option.</li>
+
+ <li>The installation script should install the ICU libraries into the
+ application's directory.</li>
+ </ol>
+
+ <p>Following these guidelines prevents other applications that use a
+ standard ICU distribution from conflicting any libraries that you need. On
+ operating systems that do not have a standard C++ ABI (name mangling) for
+ compilers, it is recommended to do this special packaging anyway. More
+ details on customizing ICU are available in the <a href=
+ "http://oss.software.ibm.com/icu/userguide/index.html">User's Guide</a>.
+ The <a href="#SourceCode">ICU Source Code Organization</a> section of this
+ readme.html gives a more complete description of the libraries.</p>
+
+ <table border="1" cellpadding="3" summary=
+ "ICU has several libraries for you to use.">
+ <caption>
+ Here is an example of libraries that are frequently packaged.
+ </caption>
+
+ <tr>
+ <th scope="col">Library Name</th>
+
+ <th scope="col">Windows Filename</th>
+
+ <th scope="col">Linux Filename</th>
+
+ <th scope="col">Comment</th>
+ </tr>
+
+ <tr>
+ <td>Data Library</td>
+
+ <td>icudt<i>XY</i>l.dll</td>
+
+ <td>libicudata.so.<i>XY</i>.<i>Z</i></td>
+
+ <td>Data required by the Common and I18n libraries. There are many ways
+ to package and <a href=
+ "http://oss.software.ibm.com/icu/userguide/icudata.html">customize this
+ data</a>, but by default this is all you need.</td>
+ </tr>
+
+ <tr>
+ <td>Common Library</td>
+
+ <td>icuuc<i>XY</i>.dll</td>
+
+ <td>libicuuc.so.<i>XY</i>.<i>Z</i></td>
+
+ <td>Base library required by all other ICU libraries.</td>
+ </tr>
+
+ <tr>
+ <td>Internationalization (i18n) Library</td>
+
+ <td>icuin<i>XY</i>.dll</td>
+
+ <td>libicui18n.so.<i>XY</i>.<i>Z</i></td>
+
+ <td>Contains many locale based i18n functions.</td>
+ </tr>
+
+ <tr>
+ <td>Layout Engine</td>
+
+ <td>icule<i>XY</i>.dll</td>
+
+ <td>libicule.so.<i>XY</i>.<i>Z</i></td>
+
+ <td>Contains an optional engine for doing font layout.</td>
+ </tr>
+
+ <tr>
+ <td>Layout Extensions Engine</td>
+
+ <td>iculx<i>XY</i>.dll</td>
+
+ <td>libiculx.so.<i>XY</i>.<i>Z</i></td>
+
+ <td>Contains an optional engine for doing font layout that uses parts
+ of ICU.</td>
+ </tr>
+
+ <tr>
+ <td>ICU I/O (Unicode stdio) Library</td>
+
+ <td>icuio<i>XY</i>.dll</td>
+
+ <td>libustdio.so.<i>XY</i>.<i>Z</i></td>
+
+ <td>An unsupported optional library that provides a stdio like API with
+ Unicode support.</td>
+ </tr>
+ </table>
+
+ <p>Normally only the above ICU libraries need to be considered for
+ packaging. The versionless symbolic links to these libraries are only
+ needed for easier development. The <i>X</i>, <i>Y</i> and <i>Z</i> parts of
+ the name are the version numbers of ICU. For example, ICU 2.0.2 would have
+ the name libicuuc.so.20.2 for the common library. The exact format of the
+ library names can vary between platforms due to how each platform can
+ handles library versioning.</p>
+
+ <h2><a name="ImportantNotes" href="#ImportantNotes">Important Notes About
+ Using ICU</a></h2>
+
+ <h3><a name="ImportantNotesCPlusPlus" href="#ImportantNotesCPlusPlus">Using
+ ICU in a Multithreaded Environment</a></h3>
+
+ <p>Upon the first usage of most ICU APIs, the global mutex will get
+ initialized properly, but you can use the <code>u_init()</code> function
+ from uclean.h to ensure that it is initialized properly. Without calling
+ this function from a single thread, the data caches inside ICU may get
+ initialized more than once from multiple threads, which may cause memory
+ leaks and other problems. There is no harm in calling <code>u_init()</code>
+ in a single threaded application.</p>
+
+ <h4><a name="ImportantNotesHPUX" href="#ImportantNotesHPUX">Using ICU in a
+ Multithreaded Environment on HP-UX</a></h4>
+
+ <p>If you are building ICU with a newer aCC compiler and you are planning
+ on using any RogueWave libraries, you will need to set a special flag
+ before building ICU. The <a href=
+ "http://docs.hp.com/hpux/onlinedocs/dev/aCC/a_03_30/options.htm#optioncap-AA">
+ -AA</a> flag is needed in order to make ICU thread safe with RogueWave.</p>
+<pre>
+<samp>CXXFLAGS="-AA" ./runConfigureICU HP-UX11ACC</samp>
+</pre>
+
+ <h3><a name="CharStrings" href="#CharStrings">char * strings in
+ ICU</a></h3>
+
+ <p>The C/C++ languages do not provide a portable way to specify Unicode
+ code point or string literals other than with arrays of numeric constants.
+ For convenience, ICU4C tends to use char * strings in places where only
+ "invariant characters" (a portable subset of the 7-bit ASCII repertoire)
+ are used. This allows locale IDs, charset names, resource bundle item keys
+ and similar items to be easily specified as string literals in the source
+ code. The same types of strings are also stored as "invariant character"
+ char * strings in the ICU data files.</p>
+
+ <p>ICU has hard coded mapping tables in <code>source/common/putil.c</code>
+ to convert invariant characters to and from Unicode without using a full
+ ICU converter. These tables must match the encoding of string literals in
+ the ICU code as well as in the ICU data files.</p>
+
+ <p><strong>Important:</strong> ICU assumes that at least the invariant
+ characters always have the same codes as is common on platforms with the
+ same charset family (ASCII vs. EBCDIC). <em>ICU has not been tested on
+ platforms where this is not the case.</em></p>
+
+ <p>Some usage of char * strings in ICU assumes the system charset instead
+ of invariant characters. Such strings are only handled with the default
+ converter (See the following section). The system charset is usually a
+ superset of the invariant characters.</p>
+
+ <p>The following are the ASCII and EBCDIC byte values for all of the
+ invariant characters (see also unicode/utypes.h):</p>
+
+ <table border="1" summary=
+ "There are a few invariant characters that can be used for char * strings">
+ <tr>
+ <th>Character(s)</th>
+
+ <th>ASCII</th>
+
+ <th>EBCDIC</th>
+ </tr>
+
+ <tr>
+ <td>a..i</td>
+
+ <td>61..69</td>
+
+ <td>81..89</td>
+ </tr>
+
+ <tr>
+ <td>j..r</td>
+
+ <td>6A..72</td>
+
+ <td>91..99</td>
+ </tr>
+
+ <tr>
+ <td>s..z</td>
+
+ <td>73..7A</td>
+
+ <td>A2..A9</td>
+ </tr>
+
+ <tr>
+ <td>A..I</td>
+
+ <td>41..49</td>
+
+ <td>C1..C9</td>
+ </tr>
+
+ <tr>
+ <td>J..R</td>
+
+ <td>4A..52</td>
+
+ <td>D1..D9</td>
+ </tr>
+
+ <tr>
+ <td>S..Z</td>
+
+ <td>53..5A</td>
+
+ <td>E2..E9</td>
+ </tr>
+
+ <tr>
+ <td>0..9</td>
+
+ <td>30..39</td>
+
+ <td>F0..F9</td>
+ </tr>
+
+ <tr>
+ <td>(space)</td>
+
+ <td>20</td>
+
+ <td>40</td>
+ </tr>
+
+ <tr>
+ <td>"</td>
+
+ <td>22</td>
+
+ <td>7F</td>
+ </tr>
+
+ <tr>
+ <td>%</td>
+
+ <td>25</td>
+
+ <td>6C</td>
+ </tr>
+
+ <tr>
+ <td>&</td>
+
+ <td>26</td>
+
+ <td>50</td>
+ </tr>
+
+ <tr>
+ <td>'</td>
+
+ <td>27</td>
+
+ <td>7D</td>
+ </tr>
+
+ <tr>
+ <td>(</td>
+
+ <td>28</td>
+
+ <td>4D</td>
+ </tr>
+
+ <tr>
+ <td>)</td>
+
+ <td>29</td>
+
+ <td>5D</td>
+ </tr>
+
+ <tr>
+ <td>*</td>
+
+ <td>2A</td>
+
+ <td>5C</td>
+ </tr>
+
+ <tr>
+ <td>+</td>
+
+ <td>2B</td>
+
+ <td>4E</td>
+ </tr>
+
+ <tr>
+ <td>,</td>
+
+ <td>2C</td>
+
+ <td>6B</td>
+ </tr>
+
+ <tr>
+ <td>-</td>
+
+ <td>2D</td>
+
+ <td>60</td>
+ </tr>
+
+ <tr>
+ <td>.</td>
+
+ <td>2E</td>
+
+ <td>4B</td>
+ </tr>
+
+ <tr>
+ <td>/</td>
+
+ <td>2F</td>
+
+ <td>61</td>
+ </tr>
+
+ <tr>
+ <td>:</td>
+
+ <td>3A</td>
+
+ <td>7A</td>
+ </tr>
+
+ <tr>
+ <td>;</td>
+
+ <td>3B</td>
+
+ <td>5E</td>
+ </tr>
+
+ <tr>
+ <td><</td>
+
+ <td>3C</td>
+
+ <td>4C</td>
+ </tr>
+
+ <tr>
+ <td>=</td>
+
+ <td>3D</td>
+
+ <td>7E</td>
+ </tr>
+
+ <tr>
+ <td>></td>
+
+ <td>3E</td>
+
+ <td>6E</td>
+ </tr>
+
+ <tr>
+ <td>?</td>
+
+ <td>3F</td>
+
+ <td>6F</td>
+ </tr>
+
+ <tr>
+ <td>_</td>
+
+ <td>5F</td>
+
+ <td>6D</td>
+ </tr>
+ </table>
+
+ <h3><a name="ImportantNotesDefaultCP" href="#ImportantNotesDefaultCP">Using
+ the default codepage</a></h3>
+
+ <p>ICU has code to determine the default codepage of the system or process.
+ This default codepage can be used to convert <code>char *</code> strings to
+ and from Unicode.</p>
+
+ <p>Depending on system design, setup and APIs, it may not always be
+ possible to find a default codepage that fully works as expected. For
+ example,</p>
+
+ <ul>
+ <li>On Windows there are three encodings in use at the same time. Unicode
+ (UTF-16) is always used inside of Windows, while for <code>char *</code>
+ encodings there are two classes, called "ANSI" and "OEM" codepages. ICU
+ will use the ANSI codepage. Note that the OEM codepage is used by default
+ for console window output.</li>
+
+ <li>On some UNIX-type systems, non-standard names are used for encodings,
+ or non-standard encodings are used altogether. Although ICU supports over
+ 200 encodings in its standard build and many more aliases for them, it
+ will not be able to recognize such non-standard names.</li>
+
+ <li>Some systems do not have a notion of a system or process codepage,
+ and may not have APIs for that.</li>
+ </ul>
+
+ <p>If you have means of detecting a default codepage name that are more
+ appropriate for your application, then you should set that name with
+ <code>ucnv_setDefaultName()</code> as the first ICU function call. This
+ makes sure that the internally cached default converter will be
+ instantiated from your preferred name.</p>
+
+ <p>Starting in ICU 2.0, when a converter for the default codepage cannot be
+ opened, a fallback default codepage name and converter will be used. On
+ most platforms, this will be US-ASCII. For z/OS (OS/390), ibm-1047-s390 is
+ the default fallback codepage. For AS/400 (iSeries), ibm-37 is the default
+ fallback codepage. This default fallback codepage is used when the
+ operating system is using a non-standard name for a default codepage, or
+ the converter was not packaged with ICU. The feature allows ICU to run in
+ unusual computing environments without completely failing.</p>
+
+ <h3><a name="ImportantNotesWindows" href="#ImportantNotesWindows">Windows
+ Platform</a></h3>
+
+ <p>If you are building on the Win32 platform, it is important that you
+ understand a few of the following build details.</p>
+
+ <h4>DLL directories and the PATH setting</h4>
+
+ <p>As delivered, the International Components for Unicode build as several
+ DLLs, which are placed in the "<i><ICU></i>\bin" directory. You must
+ add this directory to the PATH environment variable in your system, or any
+ executables you build will not be able to access International Components
+ for Unicode libraries. Alternatively, you can copy the DLL files into a
+ directory already in your PATH, but we do not recommend this. You can wind
+ up with multiple copies of the DLL and wind up using the wrong one.</p>
+
+ <h4><a name="ImportantNotesWindowsPath">Changing your PATH</a></h4>
+
+ <ul>
+ <li><strong>Windows 2000</strong>: Use the System Icon in the Control
+ Panel. Pick the "Advanced" tab. Select the "Environment Variables..."
+ button. Select the variable PATH in the lower box, and select the lower
+ "Edit..." button. In the "Variable Value" box, append the string
+ ";<i><ICU></i>\bin" to the end of the path string. If there is
+ nothing there, just type in "<i><ICU></i>\bin". Click the Set
+ button, then the OK button.</li>
+
+ <li><strong>Windows NT</strong>: Use the System Icon in the Control
+ Panel. Pick the "Environment" tab, and select the variable PATH in the
+ lower box. In the "value" box, append the string
+ ";<i><ICU></i>\bin" at the end of the path string. If there is
+ nothing there, just type in "<i><ICU></i>\bin". Click the Set
+ button, then the OK button.</li>
+
+ <li><strong>Windows 95/98/ME</strong>: Edit the autoexec.bat, and add the
+ following line to the end of file, "SET
+ PATH=%PATH%;<i><ICU></i>\bin"</li>
+ </ul>
+
+ <p>Note: When packaging a Windows application for distribution and
+ installation on user systems, copies of the ICU DLLs should be included
+ with the application, and installed for exclusive use by the application.
+ This is the only way to insure that your application is running with the
+ same version of ICU, built with exactly the same options, that you
+ developed and tested with. Refer to Microsoft's guidelines on the usage of
+ DLLs, or search for the phrase "DLL hell" on <a href=
+ "http://msdn.microsoft.com/">msdn.microsoft.com</a>.</p>
+
+ <h3><a name="ImportantNotesUNIX" href="#ImportantNotesUNIX">UNIX Type
+ Platform</a></h3>
+
+ <p>If you are building on a UNIX platform, and if you are installing ICU in
+ a non-standard location, you may need to add the location of your ICU
+ libraries to your <strong>LD_LIBRARY_PATH</strong> or
+ <strong>LIBPATH</strong> environment variable (or the equivalent runtime
+ library path environment variable for your system). The ICU libraries may
+ not link or load properly without doing this.</p>
+
+ <p>Note that if you do not want to have to set this variable, you may
+ instead use the --enable-rpath option at configuration time. This option
+ will instruct the linker to always look for the libraries where they are
+ installed. You will need to use the appropriate linker options when linking
+ your own applications and libraries against ICU, too. Please refer to your
+ system's linker manual for information about runtime paths. The use of
+ rpath also means that when building a new version of ICU you should not
+ have an older version installed in the same place as the new version's
+ installation directory, as the older libraries will used during the build,
+ instead of the new ones, likely leading to an incorrectly build ICU. (This
+ is the proper behavior of rpath.)</p>
+
+ <h2><a name="PlatformDependencies" href="#PlatformDependencies">Platform
+ Dependencies</a></h2>
+
+ <h3><a name="PlatformDependenciesNew" href=
+ "#PlatformDependenciesNew">Porting To A New Platform</a></h3>
+
+ <p>If you are using ICU's Makefiles to build ICU on a new platform, there
+ are a few places where you will need to add or modify some files. If you
+ need more help, you can always ask the <a href=
+ "http://oss.software.ibm.com/icu/archives/">icu4c-support mailing list</a>.
+ Once you have finished porting ICU to a new platform, it is recommended
+ that you contribute your changes back to ICU via the icu4c-support mailing
+ list. This will make it easier for everyone to benefit from your work.</p>
+
+ <h4>Data For a New Platform</h4>
+
+ <p>It may not be necessary for your use of ICU to make a full ICU build
+ work. Most of the makefiles and build targets are for tools that are used
+ for building ICU's data — and an application's data if the
+ application uses ICU resource bundles and similar for its data.</p>
+
+ <p>Data files can be built on a different platform if both platforms share
+ the same endianness and the same charset family, and if memory-mappable,
+ binary data files are used instead of DLLs/shared libraries. For details
+ see the User Guide <a href=
+ "http://oss.software.ibm.com/icu/userguide/icudata.html">ICU Data</a>
+ chapter.</p>
+
+ <p>ICU 2.8 eliminates the first condition: It adds the icuswap tool which
+ can be run on any platform to turn binary ICU data files from any one of
+ the three formats into any one of the other. This allows to use ICU data
+ built anywhere to be used for any target platform.</p>
+
+ <h4>Adapting Makefiles For a New Platform</h4>
+
+ <p>Try to follow the build steps from the <a href=
+ "#HowToBuildUNIX">UNIX</a> build instructions. If the configure script
+ fails, then you will need to modify some files. Here are the usual steps
+ for porting to a new platform:<br>
+ </p>
+
+ <ol>
+ <li>Create an mh file in icu/source/config/. You can use mh-linux or a
+ similar mh file as your base configuration.</li>
+
+ <li>Modify icu/source/aclocal.m4 to recognize your platform's mh
+ file.</li>
+
+ <li>Modify icu/source/configure.in to properly set your <b>platform</b> C
+ Macro define.</li>
+
+ <li>Run <a href="http://www.gnu.org/software/autoconf/">autoconf</a> in
+ icu/source/ without any options. The autoconf tool is standard on most
+ Linux systems.</li>
+
+ <li>If you have any optimization options that you want to normally use,
+ you can modify icu/source/runConfigureICU to specify those options for
+ your platform.</li>
+
+ <li>Build and test ICU on your platform. It is very important that you
+ run the tests. If you don't run the tests, there is no guarentee that you
+ have properly ported ICU.</li>
+ </ol>
+
+ <h3><a name="PlatformDependenciesImpl" href=
+ "#PlatformDependenciesImpl">Platform Dependent Implementations</a></h3>
+
+ <p>The platform dependencies have been mostly isolated into the following
+ files in the common library. This information can be useful if you are
+ porting ICU to a new platform.</p>
+
+ <ul>
+ <li>
+ <strong>unicode/platform.h.in</strong> (autoconf'ed platforms)<br>
+ <strong>unicode/p<i>XXXX</i>.h</strong> (others: pwin32.h, pmacos.h,
+ ..): Platform-dependent typedefs and defines:<br>
+ <br>
+
+
+ <ul>
+ <li>XP_CPLUSPLUS for C++ only.</li>
+
+ <li>TRUE and FALSE, UBool, int8_t, int16_t etc.</li>
+
+ <li>U_EXPORT and U_IMPORT for specifying dynamic library import and
+ export</li>
+
+ <li>int64_t and uint64_t. If the platform does not support 64 bit
+ values, the macro <tt>U_INT64_T_UNAVAILABLE</tt> must be defined. For
+ example, this will disable Rule-based number formatting.</li>
+ </ul>
+ <br>
+ </li>
+
+ <li>
+ <strong>unicode/putil.h, putil.c</strong>: platform-dependent
+ implementations of various functions that are platform dependent:<br>
+ <br>
+
+
+ <ul>
+ <li>uprv_isNaN, uprv_isInfinite, uprv_getNaN and uprv_getInfinity for
+ handling special floating point values.</li>
+
+ <li>uprv_tzset, uprv_timezone, uprv_tzname and time for getting
+ platform specific time and time zone information.</li>
+
+ <li>u_getDataDirectory for getting the default data directory.</li>
+
+ <li>uprv_getDefaultLocaleID for getting the default locale
+ setting.</li>
+
+ <li>uprv_getDefaultCodepage for getting the default codepage
+ encoding.</li>
+ </ul>
+ <br>
+ </li>
+
+ <li>
+ <strong>umutex.h, umutex.c</strong>: Code for doing synchronization in
+ multithreaded applications. If you wish to use International Components
+ for Unicode in a multithreaded application, you must provide a
+ synchronization primitive that the classes can use to protect their
+ global data against simultaneous modifications. See Users' guide for
+ more information.<br>
+ <br>
+
+
+ <ul>
+ <li>We supply sample implementations for WinNT, Win95, Win98,
+ Sun/Solaris, RedHat/Linux, HP-UX and for AIX on an RS/6000.</li>
+ </ul>
+ <br>
+ </li>
+
+ <li><strong>umapfile.h, umapfile.c</strong>: functions for mapping or
+ otherwise reading or loading files into memory. All access by ICU to data
+ from files makes use of these functions.<br>
+ <br>
+ </li>
+
+ <li>Using platform specific #ifdef macros are highly discouraged outside
+ of the scope of these files. When the source code gets updated in the
+ future, these #ifdef's can cause testing problems for your platform.</li>
+ </ul>
+
+ <h3><a name="PlatformDependenciesBuildOrder" href=
+ "#PlatformDependenciesBuildOrder">Build Order Without Using ICU's
+ Makefiles</a></h3>
+
+ <p>It is possible to build each library individually without our Makefiles.
+ They must be built in the following order:<br>
+ </p>
+
+ <ol>
+ <li>stubdata</li>
+
+ <li>common</li>
+
+ <li>i18n</li>
+
+ <li>toolutil</li>
+
+ <li>makeconv</li>
+
+ <li>gencnval</li>
+
+ <li>genprops</li>
+
+ <li>gennames</li>
+
+ <li>genpname</li>
+
+ <li>gennorm</li>
+
+ <li>gensprep</li>
+
+ <li>genbrk</li>
+
+ <li>genuca</li>
+
+ <li>genrb</li>
+
+ <li>genccode</li>
+
+ <li>gencmn</li>
+
+ <li>pkgdata</li>
+
+ <li>makedata (a project on Windows, or source/data/Makefile on UNIX)</li>
+
+ <li>layout (optional)</li>
+
+ <li>layoutex (optional)</li>
+
+ <li>ctestfw, intltest and cintltst, if you want to run the test
+ suite.</li>
+
+ <li>uconv, icuswap and ustdio can also be optionally built.</li>
+ </ol>
+ <hr>
+
+ <p>Copyright © 1997-2004 International Business Machines Corporation
+ and others. All Rights Reserved.<br>
+ IBM Globalization Center of Competency - San José<br>
+ 5600 Cottle Road<br>
+ San José, CA 95193<br>
+ USA</p>
+ </body>
+</html>
+
diff --git a/source/.cvsignore b/source/.cvsignore
new file mode 100644
index 0000000..228c5bb
--- /dev/null
+++ b/source/.cvsignore
@@ -0,0 +1,7 @@
+config.log
+config.cache
+config.status
+Makefile
+icudefs.mk
+README
+
diff --git a/source/Doxyfile.in b/source/Doxyfile.in
new file mode 100644
index 0000000..a72a66a
--- /dev/null
+++ b/source/Doxyfile.in
@@ -0,0 +1,791 @@
+# ********************************************************************
+# * COPYRIGHT:
+# * Copyright (c) 2002, International Business Machines Corporation and
+# * others. All Rights Reserved.
+# ********************************************************************
+# Doxyfile 1.2.6
+
+# This file describes the settings to be used by doxygen for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+# TAG = value [value, ...]
+# For lists items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# General configuration options
+#---------------------------------------------------------------------------
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
+# by quotes) that should identify the project.
+
+PROJECT_NAME = "ICU @VERSION@"
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
+# if some version control system is used.
+
+PROJECT_NUMBER =
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY = doc
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese,
+# Korean, Hungarian, Norwegian, Spanish, Romanian, Russian, Croatian,
+# Polish, Portuguese and Slovene.
+
+OUTPUT_LANGUAGE = English
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available.
+# Private class members and static file members will be hidden unless
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL = NO
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
+# will be included in the documentation.
+
+EXTRACT_PRIVATE = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
+# will be included in the documentation.
+
+EXTRACT_STATIC = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these class will be included in the various
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES = NO
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF = YES
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
+# description.
+
+ALWAYS_DETAILED_SEC = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. It is allowed to use relative paths in the argument list.
+
+STRIP_FROM_PATH =
+
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS = YES
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
+# generate a class diagram (in Html and LaTeX) for classes with base or
+# super classes. Setting the tag to NO turns the diagrams off.
+
+CLASS_DIAGRAMS = YES
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
+# be generated. Documented entities will be cross-referenced with these sources.
+
+SOURCE_BROWSER = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
+# doxygen to hide any special comment blocks from generated source code
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS = YES
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
+# file names in lower case letters. If set to YES upper case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# users are adviced to set this option to NO.
+
+CASE_SENSE_NAMES = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
+# will generate a verbatim copy of the header file for each class for
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS = YES
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put list of the files that are included by a file in the documentation
+# of that file.
+
+SHOW_INCLUDE_FILES = YES
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like the Qt-style comments (thus requiring an
+# explict @brief command for a brief description.
+
+JAVADOC_AUTOBRIEF = YES
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
+# reimplements.
+
+INHERIT_DOCS = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
+# is inserted in the documentation for inline members.
+
+INLINE_INFO = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
+# declaration order.
+
+SORT_MEMBER_DOCS = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE = 8
+
+# The ENABLE_SECTIONS tag can be used to enable conditional
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS =
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
+# commands in the documentation.
+
+GENERATE_TODOLIST = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
+# commands in the documentation.
+
+GENERATE_TESTLIST = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or
+# disable (NO) the bug list. This list is created by putting \bug
+# commands in the documentation.
+
+GENERATE_BUGLIST = YES
+
+# This tag can be used to specify a number of aliases that acts
+# as commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
+# put the command \sideeffect (or @sideeffect) in the documentation, which
+# will result in a user defined paragraph with heading "Side Effects:".
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
+# the initial value of a variable or define consist of for it to appear in
+# the documentation. If the initializer consists of more lines than specified
+# here it will be hidden. Use a value of 0 to hide initializers completely.
+# The appearance of the initializer of individual variables and defines in the
+# documentation can be controlled using \showinitializer or \hideinitializer
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES = 30
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
+# only. Doxygen will then generate output that is more tailored for C.
+# For instance some of the names that are used will be different. The list
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C = YES
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
+# at the bottom of the documentation of classes and structs. If set to YES the
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated by doxygen. Possible values are YES and NO. If left blank
+# NO is used.
+
+WARNINGS = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED = YES
+
+# The WARN_FORMAT tag determines the format of the warning messages that
+# doxygen can produce. The string should contain the $file, $line, and $text
+# tags, which will be replaced by the file and line number from which the
+# warning originated and the warning text.
+
+WARN_FORMAT = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning
+# and error messages should be written. If left blank the output is written
+# to stderr.
+
+WARN_LOGFILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain
+# documented source files. You may enter file names like "myfile.cpp" or
+# directories like "/usr/src/myproject". Separate the files or directories
+# with spaces.
+
+INPUT = ./common/unicode/platform.h @srcdir@/common/unicode @srcdir@/i18n/unicode @srcdir@/layout/unicode
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+FILE_PATTERNS = *.h *.c *.cpp
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
+# should be searched for input files as well. Possible values are YES and NO.
+# If left blank NO is used.
+
+RECURSIVE = NO
+
+# The EXCLUDE tag can be used to specify files and/or directories that should
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+EXCLUDE = @srcdir@/common/unicode/urename.h
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories.
+
+EXCLUDE_PATTERNS = *config*.h
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or
+# directories that contain example code fragments that are included (see
+# the \include command).
+
+EXAMPLE_PATH =
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+EXAMPLE_PATTERNS =
+
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
+# the \image command).
+
+IMAGE_PATH =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command <filter> <input-file>, where <filter>
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output.
+
+INPUT_FILTER =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will be used to filter the input files when producing source
+# files to browse.
+
+FILTER_SOURCE_FILES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
+# of all compounds will be generated. Enable this if the project
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX = YES
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX = 5
+
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX =
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
+# generate HTML output.
+
+GENERATE_HTML = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT = html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard header.
+
+HTML_HEADER =
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard footer.
+
+HTML_FOOTER =
+
+# The HTML_STYLESHEET tag can be used to specify a user defined cascading
+# style sheet that is used by each HTML page. It can be used to
+# fine-tune the look of the HTML output. If the tag is left blank doxygen
+# will generate a default style sheet
+
+HTML_STYLESHEET =
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
+# files or namespaces will be aligned in HTML using tables. If set to
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
+# will be generated that can be used as input for tools like the
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
+# controls if a separate .chi index file is generated (YES) or that
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
+# controls whether a binary table of contents is generated (YES) or a
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC = NO
+
+# The TOC_EXPAND flag can be set YES to add extra items for group members
+# to the contents of the Html help documentation and to the tree view.
+
+TOC_EXPAND = NO
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
+# top of each HTML page. The value NO (the default) enables the index and
+# the value YES disables it.
+
+DISABLE_INDEX = NO
+
+# This tag can be used to set the number of enum values (range [1..20])
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE = 4
+
+# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
+# generated containing a tree-like index structure (just like the one that
+# is generated for HTML Help). For this to work a browser that supports
+# JavaScript and frames is required (for instance Netscape 4.0+
+# or Internet explorer 4.0+).
+
+GENERATE_TREEVIEW = NO
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
+# used to set the initial width (in pixels) of the frame in which the tree
+# is shown.
+
+TREEVIEW_WIDTH = 250
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
+# generate Latex output.
+
+GENERATE_LATEX = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT = latex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
+# LaTeX documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_LATEX = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used
+# by the printer. Possible values are: a4, a4wide, letter, legal and
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
+# the generated latex document. The header should contain everything until
+# the first chapter. If it is left blank doxygen will generate a
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
+# contain links (just like the HTML output) instead of page references
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
+# plain latex in the generated Makefile. Set this option to YES to get a
+# higher quality PDF documentation.
+
+USE_PDFLATEX = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
+# command to the generated LaTeX files. This will instruct LaTeX to keep
+# running if errors occur, instead of asking the user for help.
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
+# The RTF output is optimised for Word 97 and may not look very pretty with
+# other RTF readers or editors.
+
+GENERATE_RTF = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
+# RTF documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_RTF = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
+# will contain hyperlink fields. The RTF file will
+# contain links (just like the HTML output) instead of page references.
+# This makes the output suitable for online browsing using a WORD or other.
+# programs which support those fields.
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's
+# config file, i.e. a series of assigments. You only have to provide
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
+# generate man pages
+
+GENERATE_MAN = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT = man
+
+# The MAN_EXTENSION tag determines the extension that is added to
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION = .3
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
+# evaluate all C-preprocessor directives found in the sources and include
+# files.
+
+ENABLE_PREPROCESSING = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
+# names in the source code. If set to NO (the default) only conditional
+# compilation will be performed. Macro expansion can be done in a controlled
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+# then the macro expansion is limited to the macros specified with the
+# PREDEFINED and EXPAND_AS_PREDEFINED tags.
+
+EXPAND_ONLY_PREDEF = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by
+# the preprocessor.
+
+INCLUDE_PATH =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will
+# be used.
+
+INCLUDE_FILE_PATTERNS =
+
+# The PREDEFINED tag can be used to specify one or more macro names that
+# are defined before the preprocessor is started (similar to the -D option of
+# gcc). The argument of the tag is a list of macros of the form: name
+# or name=definition (no spaces). If the definition and the = are
+# omitted =1 is assumed.
+
+PREDEFINED =
+
+# If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then
+# this tag can be used to specify a list of macro names that should be expanded.
+# The macro definition that is found in the sources will be used.
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED =
+
+#---------------------------------------------------------------------------
+# Configuration::addtions related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES tag can be used to specify one or more tagfiles.
+
+TAGFILES =
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE =
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
+# in the class index. If set to NO only the inherited external classes
+# will be listed.
+
+ALLEXTERNALS = NO
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz, a graph visualization
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT = NO
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect inheritance relations. Setting this tag to YES will force the
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect implementation dependencies (inheritance, containment, and
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH = YES
+
+# If the ENABLE_PREPROCESSING, INCLUDE_GRAPH, and HAVE_DOT tags are set to
+# YES then doxygen will generate a graph for each documented file showing
+# the direct and indirect include dependencies of the file with other
+# documented files.
+
+INCLUDE_GRAPH = YES
+
+# If the ENABLE_PREPROCESSING, INCLUDED_BY_GRAPH, and HAVE_DOT tags are set to
+# YES then doxygen will generate a graph for each documented header file showing
+# the documented files that directly or indirectly include this file
+
+INCLUDED_BY_GRAPH = YES
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY = YES
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found on the path.
+
+DOT_PATH =
+
+# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than
+# this value, doxygen will try to truncate the graph, so that it fits within
+# the specified constraint. Beware that most browsers cannot cope with very
+# large images.
+
+MAX_DOT_GRAPH_WIDTH = 1024
+
+# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than
+# this value, doxygen will try to truncate the graph, so that it fits within
+# the specified constraint. Beware that most browsers cannot cope with very
+# large images.
+
+MAX_DOT_GRAPH_HEIGHT = 1024
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
+# generate a legend page explaining the meaning of the various boxes and
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
+# remove the intermedate dot files that are used to generate
+# the various graphs.
+
+DOT_CLEANUP = YES
+
+#---------------------------------------------------------------------------
+# Configuration::addtions related to the search engine
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE = NO
+
+# The CGI_NAME tag should be the name of the CGI script that
+# starts the search engine (doxysearch) with the correct parameters.
+# A script with this name will be generated by doxygen.
+
+CGI_NAME = search.cgi
+
+# The CGI_URL tag should be the absolute URL to the directory where the
+# cgi binaries are located. See the documentation of your http daemon for
+# details.
+
+CGI_URL =
+
+# The DOC_URL tag should be the absolute URL to the directory where the
+# documentation is located. If left blank the absolute path to the
+# documentation, with file:// prepended to it, will be used.
+
+DOC_URL =
+
+# The DOC_ABSPATH tag should be the absolute path to the directory where the
+# documentation is located. If left blank the directory on the local machine
+# will be used.
+
+DOC_ABSPATH =
+
+# The BIN_ABSPATH tag must point to the directory where the doxysearch binary
+# is installed.
+
+BIN_ABSPATH = /usr/local/bin/
+
+# The EXT_DOC_PATHS tag can be used to specify one or more paths to
+# documentation generated for other projects. This allows doxysearch to search
+# the documentation for these projects as well.
+
+EXT_DOC_PATHS =
diff --git a/source/Makefile.in b/source/Makefile.in
new file mode 100644
index 0000000..781f69c
--- /dev/null
+++ b/source/Makefile.in
@@ -0,0 +1,205 @@
+#******************************************************************************
+#
+# Copyright (C) 1998-2003, International Business Machines
+# Corporation and others. All Rights Reserved.
+#
+#******************************************************************************
+## Top-level Makefile.in for ICU
+## Stephen F. Booth
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+
+top_builddir = .
+
+include $(top_builddir)/icudefs.mk
+
+docdir = $(datadir)/doc
+docsubdir = $(PACKAGE)$(ICULIBDASHSUFFIX)/html
+
+##
+
+## Build directory information
+subdir = .
+
+AUTOCONF = @AUTOCONF@
+
+## Platform-specific setup
+include @platform_make_fragment@
+
+## Optional directory setup
+@EXTRAS_TRUE@EXTRA = extra
+@EXTRAS_FALSE@EXTRA =
+@LAYOUT_TRUE@LAYOUT = layout layoutex
+@LAYOUT_FALSE@LAYOUT =
+@TESTS_TRUE@TEST = test
+@TESTS_FALSE@TEST =
+@SAMPLES_TRUE@SAMPLE = samples
+@SAMPLES_FALSE@SAMPLE =
+
+DOXYGEN = @DOXYGEN@
+
+## Files to remove for 'make clean'
+CLEANFILES = *~
+
+## Files built (autoconfed) and installed
+INSTALLED_BUILT_FILES = $(top_builddir)/config/Makefile.inc $(top_builddir)/config/icu-config @platform_make_fragment@ $(EXTRA_DATA:%=$(DESTDIR)$(pkglibdir)/%)
+
+## Files built (autoconfed) but not installed
+LOCAL_BUILT_FILES = icudefs.mk
+
+DOCDIRS = common i18n
+SUBDIRS = stubdata common i18n $(LAYOUT) tools data $(EXTRA) $(TEST) $(SAMPLE)
+
+SECTION = 1
+
+MANX_FILES = config/icu-config.$(SECTION)
+
+ALL_MAN_FILES = $(MANX_FILES)
+
+## Extra files to install [nothing at present]
+EXTRA_DATA =
+
+## List of phony targets
+.PHONY : all all-local all-recursive install install-local install-udata install-udata-files install-udata-dlls \
+install-recursive clean clean-local clean-recursive distclean \
+distclean-local distclean-recursive doc dist dist-local dist-recursive \
+check check-local check-recursive clean-recursive-with-twist install-icu \
+doc install-doc
+
+## Clear suffix list
+.SUFFIXES :
+
+## List of standard targets
+all: all-local all-recursive
+install: install-recursive install-local
+clean: clean-recursive-with-twist clean-local
+distclean : distclean-recursive distclean-local
+dist: dist-recursive dist-local
+check: all check-recursive check-local
+
+ifeq ($(DOXYGEN),)
+doc:
+ @echo you need Doxygen to generate documentation. Doxygen can be found on the Web
+ @echo at http://www.doxygen.org/
+else
+doc: doc/html/index.html
+
+doc/html/index.html: Doxyfile $(wildcard ./common/unicode/platform.h $(srcdir)/common/unicode/*.h $(srcdir)/i18n/unicode/*.h $(srcdir)/layout/unicode/*.h)
+ $(DOXYGEN)
+
+Doxyfile: $(srcdir)/Doxyfile.in
+ CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
+endif
+
+LOCAL_SUBDIRS = $(SUBDIRS)
+CLEAN_FIRST_SUBDIRS = tools
+
+## Recursive targets
+all-recursive install-recursive clean-recursive distclean-recursive dist-recursive check-recursive:
+ @dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(LOCAL_SUBDIRS)'; for subdir in $$list; do \
+ echo "$(MAKE)[$(MAKELEVEL)]: Making \`$$target' in \`$$subdir'"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-local"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) RECURSIVE=YES $$local_target) || exit; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) "$$target-local" || exit; \
+ fi
+
+clean-recursive-with-twist:
+ $(MAKE) clean-recursive LOCAL_SUBDIRS='$(CLEAN_FIRST_SUBDIRS) $(filter-out $(CLEAN_FIRST_SUBDIRS),$(LOCAL_SUBDIRS))'
+
+all-local: $(srcdir)/configure $(LOCAL_BUILT_FILES) $(INSTALLED_BUILT_FILES)
+
+install-local: install-icu install-manx
+
+install-icu: $(INSTALLED_BUILT_FILES)
+ @$(MKINSTALLDIRS) $(DESTDIR)$(pkgdatadir)/config
+ @$(MKINSTALLDIRS) $(DESTDIR)$(pkglibdir)
+ @$(MKINSTALLDIRS) $(DESTDIR)$(bindir)
+ @$(MKINSTALLDIRS) $(DESTDIR)$(sbindir)
+ $(INSTALL_DATA) $(top_builddir)/config/Makefile.inc $(DESTDIR)$(pkglibdir)/Makefile.inc
+ cd $(DESTDIR)$(pkglibdir)/..; \
+ $(RM) current && ln -s $(VERSION) current; \
+ $(RM) Makefile.inc && ln -s current/Makefile.inc .
+ $(INSTALL_DATA) @platform_make_fragment@ $(DESTDIR)$(pkgdatadir)/config/@platform_make_fragment_name@
+ $(INSTALL_SCRIPT) $(top_srcdir)/mkinstalldirs $(DESTDIR)$(pkgdatadir)/mkinstalldirs
+ $(INSTALL_DATA) $(top_srcdir)/../license.html $(DESTDIR)$(pkgdatadir)/license.html
+ $(INSTALL_SCRIPT) $(top_builddir)/config/icu-config $(DESTDIR)$(bindir)/icu-config
+
+ifeq ($(DOXYGEN),)
+install-doc:
+else
+install-doc: doc
+ $(RM) -r $(DESTDIR)$(docdir)/$(docsubdir)
+ $(MKINSTALLDIRS) $(DESTDIR)$(docdir)/$(docsubdir)
+ $(INSTALL_DATA) doc/html/* $(DESTDIR)$(docdir)/$(docsubdir)
+endif
+
+$(DESTDIR)$(pkglibdir)/%: $(top_srcdir)/../data/%
+ $(INSTALL_DATA) $< $@
+
+dist-local:
+
+clean-local:
+ test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES)
+ $(RMV) Doxyfile doc
+
+distclean-local: clean-local
+ $(RMV) Makefile config/Makefile icudefs.mk
+ $(RMV) $(top_builddir)/config/Makefile.inc $(top_builddir)/config/icu-config
+ $(RMV) config.cache config.log config.status
+
+check-local:
+
+#$(srcdir)/configure : $(srcdir)/configure.in $(top_srcdir)/aclocal.m4
+# cd $(srcdir) && $(AUTOCONF)
+
+icudefs.mk: $(srcdir)/icudefs.mk.in $(top_builddir)/config.status
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+Makefile: $(srcdir)/Makefile.in icudefs.mk $(top_builddir)/config.status
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+$(top_builddir)/config/Makefile.inc: $(srcdir)/config/Makefile.inc.in $(top_builddir)/config.status
+ cd $(top_builddir) \
+ && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+$(top_builddir)/config/icu-config: $(top_builddir)/Makefile $(top_srcdir)/config/icu-config-top $(top_srcdir)/config/icu-config-bottom $(top_builddir)/config/Makefile.inc @platform_make_fragment@ $(top_srcdir)/config/make2sh.sed
+ -$(RMV) $@
+ $(INSTALL_DATA) $(top_srcdir)/config/icu-config-top $@
+ @echo "# Following from @platform_make_fragment@" >> $@
+ sed -f $(top_srcdir)/config/make2sh.sed < $(top_builddir)/config/Makefile.inc | grep -v '#M#' | uniq >> $@
+ sed -f $(top_srcdir)/config/make2sh.sed < @platform_make_fragment@ | grep -v '#M#' | uniq >> $@
+ cat $(top_srcdir)/config/icu-config-bottom >> $@
+ echo "# Rebuilt on "`date` >> $@
+
+config.status: $(srcdir)/configure $(srcdir)/common/unicode/uversion.h
+ @echo
+ @echo
+ @echo "*** config.status has become stale ***"
+ @echo " 'configure' and/or 'uversion.h' have changed, please"
+ @echo " do 'runConfigureICU' (or 'configure') again, as per"
+ @echo " the readme.html."
+ @echo
+ @echo
+ exit 1
+
+
+install-manx: $(MANX_FILES)
+ $(MKINSTALLDIRS) $(DESTDIR)$(mandir)/man$(SECTION)
+ $(INSTALL_DATA) $? $(DESTDIR)$(mandir)/man$(SECTION)
+
+config/%.$(SECTION): $(srcdir)/config/%.$(SECTION).in
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
diff --git a/source/acconfig.h b/source/acconfig.h
new file mode 100644
index 0000000..76fed55
--- /dev/null
+++ b/source/acconfig.h
@@ -0,0 +1,29 @@
+/* Copyright (c) 1999-2000, International Business Machines Corporation and
+ others. All Rights Reserved. */
+/* Define to signed char if not in <sys/types.h> */
+#undef int8_t
+
+/* Define to unsigned char if not in <sys/types.h> */
+#undef uint8_t
+
+/* Define to signed short if not in <sys/types.h> */
+#undef int16_t
+
+/* Define to unsigned short if not in <sys/types.h> */
+#undef uint16_t
+
+/* Define to signed long if not in <sys/types.h> */
+#undef int32_t
+
+/* Define to unsigned long if not in <sys/types.h> */
+#undef uint32_t
+
+/* Define to signed char if not in <sys/types.h> */
+#undef bool_t
+
+/* Define if your system has <wchar.h> */
+#undef HAVE_WCHAR_H
+
+/* Define to the size of wchar_t */
+#undef SIZEOF_WCHAR_T
+
diff --git a/source/aclocal.m4 b/source/aclocal.m4
new file mode 100644
index 0000000..136e8c3
--- /dev/null
+++ b/source/aclocal.m4
@@ -0,0 +1,248 @@
+dnl aclocal.m4 for ICU
+dnl Copyright (c) 1999-2003, International Business Machines Corporation and
+dnl others. All Rights Reserved.
+dnl Stephen F. Booth
+
+dnl @TOP@
+
+dnl ICU_CHECK_MH_FRAG
+AC_DEFUN(ICU_CHECK_MH_FRAG, [
+ AC_CACHE_CHECK(
+ [which Makefile fragment to use],
+ [icu_cv_host_frag],
+ [
+case "${host}" in
+*-*-solaris*)
+ if test "$ac_cv_prog_gcc" = yes; then
+ icu_cv_host_frag=mh-solaris-gcc
+ else
+ icu_cv_host_frag=mh-solaris
+ fi ;;
+alpha*-*-linux-gnu)
+ if test "$ac_cv_prog_gcc" = yes; then
+ icu_cv_host_frag=mh-alpha-linux-gcc
+ else
+ icu_cv_host_frag=mh-alpha-linux-cc
+ fi ;;
+*-*-linux*) icu_cv_host_frag=mh-linux ;;
+*-*-cygwin)
+ if test "$ac_cv_prog_gcc" = yes; then
+ icu_cv_host_frag=mh-cygwin
+ else
+ icu_cv_host_frag=mh-cygwin-msvc
+ fi ;;
+*-*-*bsd*) icu_cv_host_frag=mh-bsd-gcc ;;
+*-*-aix*)
+ if test "$ac_cv_prog_gcc" = yes; then
+ icu_cv_host_frag=mh-aix-gcc
+ else
+ if test -n "`$CXX --help 2>&1 | grep 'IBM C and C++ Compilers$'`"; then
+ icu_cv_host_frag=mh-aix
+ else
+ icu_cv_host_frag=mh-aix-va
+ fi
+ fi ;;
+*-*-hpux*)
+ if test "$ac_cv_prog_gcc" = yes; then
+ icu_cv_host_frag=mh-hpux-gcc
+ else
+ case "$CXX" in
+ *aCC) icu_cv_host_frag=mh-hpux-acc ;;
+ *CC) icu_cv_host_frag=mh-hpux-cc ;;
+ esac
+ fi ;;
+*-*ibm-openedition*|*-*-os390*) icu_cv_host_frag=mh-os390 ;;
+*-*-os400*) icu_cv_host_frag=mh-os400 ;;
+*-apple-rhapsody*) icu_cv_host_frag=mh-darwin ;;
+*-apple-darwin*) icu_cv_host_frag=mh-darwin ;;
+*-*-beos) icu_cv_host_frag=mh-beos ;;
+*-*-irix*) icu_cv_host_frag=mh-irix ;;
+*-dec-osf*) icu_cv_host_frag=mh-alpha-osf ;;
+*-*-nto*) icu_cv_host_frag=mh-qnx ;;
+*-ncr-*) icu_cv_host_frag=mh-mpras ;;
+*-sequent-*) icu_cv_host_frag=mh-ptx ;;
+*) icu_cv_host_frag=mh-unknown ;;
+esac
+ ]
+ )
+])
+
+dnl ICU_CONDITIONAL - Taken from Automake 1.4
+AC_DEFUN(ICU_CONDITIONAL,
+[AC_SUBST($1_TRUE)
+AC_SUBST($1_FALSE)
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+else
+ $1_TRUE='#'
+ $1_FALSE=
+fi])
+
+dnl AC_SEARCH_LIBS_FIRST(FUNCTION, SEARCH-LIBS [, ACTION-IF-FOUND
+dnl [, ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]])
+dnl Search for a library defining FUNC, then see if it's not already available.
+
+AC_DEFUN(AC_SEARCH_LIBS_FIRST,
+[AC_PREREQ([2.13])
+AC_CACHE_CHECK([for library containing $1], [ac_cv_search_$1],
+[ac_func_search_save_LIBS="$LIBS"
+ac_cv_search_$1="no"
+for i in $2; do
+LIBS="-l$i $5 $ac_func_search_save_LIBS"
+AC_TRY_LINK_FUNC([$1],
+[ac_cv_search_$1="-l$i"
+break])
+done
+if test "$ac_cv_search_$1" = "no"; then
+AC_TRY_LINK_FUNC([$1], [ac_cv_search_$1="none required"])
+fi
+LIBS="$ac_func_search_save_LIBS"])
+if test "$ac_cv_search_$1" != "no"; then
+ test "$ac_cv_search_$1" = "none required" || LIBS="$ac_cv_search_$1 $LIBS"
+ $3
+else :
+ $4
+fi])
+
+dnl Check if we can build and use 64-bit libraries
+AC_DEFUN(AC_CHECK_64BIT_LIBS,
+[
+ AC_ARG_ENABLE(64bit-libs,
+ [ --enable-64bit-libs build 64-bit libraries [default=yes]],
+ [ENABLE_64BIT_LIBS=${enableval}],
+ [ENABLE_64BIT_LIBS=yes]
+ )
+ dnl These results can't be cached because is sets compiler flags.
+ AC_MSG_CHECKING([for 64-bit executable support])
+ if test "$ENABLE_64BIT_LIBS" = no; then
+ case "${host}" in
+ *-*-hpux*)
+# case "${CXX}" in
+# *CC)
+# CFLAGS="${CFLAGS} +DAportable"
+# CXXFLAGS="${CXXFLAGS} +DAportable"
+# ;;
+# esac;;
+ esac
+ else
+ case "${host}" in
+ *-*-solaris*)
+ if test "$ac_cv_prog_gcc" = no; then
+ SOL64=`$CXX -xarch=v9 2>&1 && $CC -xarch=v9 2>&1 | grep -v usage:`
+ SPARCV9=`isainfo -n 2>&1 | grep sparcv9`
+ if test -z "$SOL64" && test -n "$SPARCV9"; then
+ CFLAGS="${CFLAGS} -xtarget=ultra -xarch=v9"
+ CXXFLAGS="${CXXFLAGS} -xtarget=ultra -xarch=v9"
+ LDFLAGS="${LDFLAGS} -xtarget=ultra -xarch=v9"
+ ENABLE_64BIT_LIBS=yes
+ else
+ ENABLE_64BIT_LIBS=no
+ fi
+ else
+ ENABLE_64BIT_LIBS=no
+ fi
+ ;;
+ *-*-aix*)
+ if test "$ac_cv_prog_gcc" = no; then
+ # Note: Have not tested 64-bitness with gcc.
+ # Maybe the flag "-maix64" could be used with gcc?
+ OLD_CFLAGS="${CFLAGS}"
+ OLD_CXXFLAGS="${CXXFLAGS}"
+ OLD_LDFLAGS="${LDFLAGS}"
+ CFLAGS="${CFLAGS} -q64"
+ CXXFLAGS="${CXXFLAGS} -q64"
+ LDFLAGS="${LDFLAGS} -q64"
+ AC_TRY_RUN(int main(void) {return 0;},
+ ENABLE_64BIT_LIBS=yes, ENABLE_64BIT_LIBS=no, ENABLE_64BIT_LIBS=no)
+ if test "$ENABLE_64BIT_LIBS" = no; then
+ CFLAGS="${OLD_CFLAGS}"
+ CXXFLAGS="${OLD_CXXFLAGS}"
+ LDFLAGS="${OLD_LDFLAGS}"
+ else
+ ARFLAGS="${ARFLAGS} -X64"
+ fi
+ fi
+ ;;
+ *-*-hpux*)
+ OLD_CFLAGS="${CFLAGS}"
+ OLD_CXXFLAGS="${CXXFLAGS}"
+ CFLAGS="${CFLAGS} +DA2.0W"
+ CXXFLAGS="${CXXFLAGS} +DA2.0W"
+ AC_TRY_RUN(int main(void) {return 0;},
+ ENABLE_64BIT_LIBS=yes, ENABLE_64BIT_LIBS=no, ENABLE_64BIT_LIBS=no)
+ if test "$ENABLE_64BIT_LIBS" = no; then
+ CFLAGS="${OLD_CFLAGS}"
+ CXXFLAGS="${OLD_CXXFLAGS}"
+ fi
+ ;;
+ *)
+ ENABLE_64BIT_LIBS=no
+ ;;
+ esac
+ fi
+ dnl Individual tests that fail should reset their own flags.
+ AC_MSG_RESULT($ENABLE_64BIT_LIBS)
+])
+
+dnl Strict compilation options.
+AC_DEFUN(AC_CHECK_STRICT_COMPILE,
+[
+ AC_MSG_CHECKING([whether strict compiling is on])
+ AC_ARG_ENABLE(strict,[ --enable-strict compile with strict compiler options [default=no]], [
+ if test "$enableval" = no
+ then
+ ac_use_strict_options=no
+ else
+ ac_use_strict_options=yes
+ fi
+ ], [ac_use_strict_options=no])
+ AC_MSG_RESULT($ac_use_strict_options)
+
+ if test "$ac_use_strict_options" = yes
+ then
+ if test "$GCC" = yes
+ then
+ CFLAGS="$CFLAGS -Wall -ansi -pedantic -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -Winline -Wno-long-long"
+ case "${host}" in
+ *-*-solaris*)
+ CFLAGS="$CFLAGS -D__STDC__=0";;
+ esac
+ fi
+ if test "$GXX" = yes
+ then
+ CXXFLAGS="$CXXFLAGS -W -Wall -ansi -pedantic -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -Winline -Wno-long-long"
+ case "${host}" in
+ *-*-solaris*)
+ CXXFLAGS="$CXXFLAGS -D__STDC__=0";;
+ esac
+ fi
+ fi
+])
+
+dnl Define a sizeof checking macro that is a bit better than autoconf's
+dnl builtin (and heavily based on it, of course). The new macro is
+dnl AC_DO_CHECK_SIZEOF(TYPE [, CROSS_SIZE [, INCLUDES])
+AC_DEFUN(AC_DO_CHECK_SIZEOF,
+[changequote(<<, >>)dnl
+dnl The name to #define.
+define(<<AC_TYPE_NAME>>, translit(sizeof_$1, [a-z *], [A-Z_P]))dnl
+dnl The cache variable name.
+define(<<AC_CV_NAME>>, translit(ac_cv_sizeof_$1, [ *], [_p]))dnl
+changequote([, ])dnl
+AC_MSG_CHECKING(size of $1)
+AC_CACHE_VAL(AC_CV_NAME,
+[AC_TRY_RUN($3
+[#include <stdio.h>
+main()
+{
+ FILE *f=fopen("conftestval", "w");
+ if (!f) exit(1);
+ fprintf(f, "%d\n", sizeof($1));
+ exit(0);
+}], AC_CV_NAME=`cat conftestval`, AC_CV_NAME=0, ifelse([$2], , , AC_CV_NAME=$2))])dnl
+AC_MSG_RESULT($AC_CV_NAME)
+AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME)
+undefine([AC_TYPE_NAME])dnl
+undefine([AC_CV_NAME])dnl
+])
diff --git a/source/allinone/.cvsignore b/source/allinone/.cvsignore
new file mode 100644
index 0000000..4899cad
--- /dev/null
+++ b/source/allinone/.cvsignore
@@ -0,0 +1,3 @@
+*.ncb
+*.opt
+*.suo
\ No newline at end of file
diff --git a/source/allinone/all/.cvsignore b/source/allinone/all/.cvsignore
new file mode 100644
index 0000000..c6dfba6
--- /dev/null
+++ b/source/allinone/all/.cvsignore
@@ -0,0 +1 @@
+*.plg
diff --git a/source/allinone/all/all.dsp b/source/allinone/all/all.dsp
new file mode 100644
index 0000000..5336d61
--- /dev/null
+++ b/source/allinone/all/all.dsp
@@ -0,0 +1,93 @@
+# Microsoft Developer Studio Project File - Name="all" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Generic Project" 0x010a
+
+CFG=ALL - WIN32 DEBUG
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "all.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "all.mak" CFG="ALL - WIN32 DEBUG"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "all - Win32 Release" (based on "Win32 (x86) Generic Project")
+!MESSAGE "all - Win32 Debug" (based on "Win32 (x86) Generic Project")
+!MESSAGE "all - Win64 Release" (based on "Win32 (x86) Generic Project")
+!MESSAGE "all - Win64 Debug" (based on "Win32 (x86) Generic Project")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+MTL=midl.exe
+
+!IF "$(CFG)" == "all - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+
+!ELSEIF "$(CFG)" == "all - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+
+!ELSEIF "$(CFG)" == "all - Win64 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+
+!ELSEIF "$(CFG)" == "all - Win64 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+
+!ENDIF
+
+# Begin Target
+
+# Name "all - Win32 Release"
+# Name "all - Win32 Debug"
+# Name "all - Win64 Release"
+# Name "all - Win64 Debug"
+# End Target
+# End Project
diff --git a/source/allinone/all/all.vcproj b/source/allinone/all/all.vcproj
new file mode 100644
index 0000000..0bc7f68
--- /dev/null
+++ b/source/allinone/all/all.vcproj
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding = "Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.00"
+ Name="all"
+ SccProjectName=""
+ SccLocalPath=""
+ Keyword="MakeFileProj">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug"
+ ConfigurationType="10"
+ UseOfMFC="0">
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="10"
+ UseOfMFC="0">
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ </Configuration>
+ </Configurations>
+ <Files>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/source/allinone/allinone.dsw b/source/allinone/allinone.dsw
new file mode 100644
index 0000000..e030fda
--- /dev/null
+++ b/source/allinone/allinone.dsw
@@ -0,0 +1,707 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "all"=.\all\all.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name cintltst
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name common
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name ctestfw
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name decmn
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name derb
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name genccode
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name gencmn
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name gencnval
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name gennames
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name gennorm
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name genpname
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name genprops
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name genrb
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name gentest
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name genuca
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name i18n
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name ieeetest
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name intltest
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name layout
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name makeconv
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name makedata
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name pkgdata
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name stubdata
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name toolutil
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name uconv
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name ustdio
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name genbrk
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name layoutex
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name gensprep
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name icuswap
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "cintltst"=..\test\cintltst\cintltst.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name common
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name ctestfw
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name i18n
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name toolutil
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "common"=..\common\common.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name stubdata
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "ctestfw"=..\tools\ctestfw\ctestfw.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name common
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "decmn"=..\tools\gencmn\decmn.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name common
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name toolutil
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "derb"=..\TOOLS\GENRB\derb.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name common
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name stubdata
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "genbrk"=..\tools\genbrk\genbrk.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name common
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name toolutil
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "genccode"=..\tools\genccode\genccode.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name common
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name toolutil
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "gencmn"=..\tools\gencmn\gencmn.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name common
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name toolutil
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "gencnval"=..\tools\gencnval\gencnval.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name common
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name toolutil
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "gennames"=..\tools\gennames\gennames.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name common
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name toolutil
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "gennorm"=..\tools\gennorm\gennorm.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name common
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name toolutil
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "genpname"=..\tools\genpname\genpname.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name common
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name toolutil
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "genprops"=..\tools\genprops\genprops.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name common
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name toolutil
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "genrb"=..\tools\genrb\genrb.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name common
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name makeconv
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name i18n
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name toolutil
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "gensprep"=..\tools\gensprep\gensprep.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "gentest"=..\tools\gentest\gentest.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name common
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name toolutil
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "genuca"=..\TOOLS\genuca\genuca.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name common
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name i18n
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name toolutil
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "i18n"=..\i18n\i18n.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name common
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "icuswap"=..\tools\icuswap\icuswap.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name common
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name i18n
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name toolutil
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "ieeetest"=..\test\ieeetest\ieeetest.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name common
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "intltest"=..\test\intltest\intltest.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name common
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name i18n
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name toolutil
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "layout"=..\layout\layout.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name common
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "layoutex"=..\layoutex\layoutex.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name common
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name i18n
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name layout
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "makeconv"=..\tools\makeconv\makeconv.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name common
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name toolutil
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "makedata"=..\data\makedata.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name common
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name genccode
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name gencmn
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name gencnval
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name gennames
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name gennorm
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name genpname
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name genprops
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name genrb
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name gentest
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name genuca
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name i18n
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name makeconv
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name pkgdata
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name stubdata
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name toolutil
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name genbrk
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name gensprep
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "pkgdata"=..\tools\pkgdata\pkgdata.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name common
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name toolutil
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "stubdata"=..\STUBDATA\stubdata.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "toolutil"=..\tools\toolutil\toolutil.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name common
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "uconv"=..\extra\uconv\uconv.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name common
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name genrb
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name i18n
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name pkgdata
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "ustdio"=..\extra\ustdio\ustdio.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name common
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name i18n
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/source/allinone/allinone.sln b/source/allinone/allinone.sln
new file mode 100644
index 0000000..7ba4b5d
--- /dev/null
+++ b/source/allinone/allinone.sln
@@ -0,0 +1,309 @@
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "all", "all\all.vcproj", "{D6271E12-B9F5-49B8-BD94-62B236A96940}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cintltst", "..\test\cintltst\cintltst.vcproj", "{3D1246AE-1B32-479B-BECA-AEFA97BE2321}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "common", "..\common\common.vcproj", "{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ctestfw", "..\tools\ctestfw\ctestfw.vcproj", "{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "decmn", "..\tools\gencmn\decmn.vcproj", "{20869594-A3DD-4A75-8068-99B03A5CF4E4}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "derb", "..\tools\genrb\derb.vcproj", "{D3065ADB-8820-4CC7-9B6C-9510833961A3}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genbrk", "..\tools\genbrk\genbrk.vcproj", "{C2BE5000-7501-4E87-9724-B8D82494FAE6}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genccode", "..\tools\genccode\genccode.vcproj", "{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gencmn", "..\tools\gencmn\gencmn.vcproj", "{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gencnval", "..\tools\gencnval\gencnval.vcproj", "{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gennames", "..\tools\gennames\gennames.vcproj", "{F5281B04-A9E0-4680-BBA8-1D7F7D115458}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gennorm", "..\tools\gennorm\gennorm.vcproj", "{F5213103-6CBE-46E6-B4CC-2570B6837D86}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genpname", "..\tools\genpname\genpname.vcproj", "{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genprops", "..\tools\genprops\genprops.vcproj", "{6F744648-D15F-478A-90C6-58E353B5DDB3}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genrb", "..\tools\genrb\genrb.vcproj", "{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gentest", "..\tools\gentest\gentest.vcproj", "{77C78066-746F-4EA6-B3FE-B8C8A4A97891}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genuca", "..\tools\genuca\genuca.vcproj", "{86829694-A375-4C58-B4EA-96EF514E3225}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "i18n", "..\i18n\i18n.vcproj", "{0178B127-6269-407D-B112-93877BB62776}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ieeetest", "..\test\ieeetest\ieeetest.vcproj", "{10F01D38-993E-407A-89BD-5C1C63F3A08D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "intltest", "..\test\intltest\intltest.vcproj", "{73632960-B3A6-464D-83A3-4B43365F19B8}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "layout", "..\layout\layout.vcproj", "{C920062A-0647-4553-A3B2-37C58065664B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "layoutex", "..\layoutex\layoutex.vcproj", "{37FC2C7F-1904-4811-8955-2F478830EAD1}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "makeconv", "..\tools\makeconv\makeconv.vcproj", "{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "makedata", "..\data\makedata.vcproj", "{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pkgdata", "..\tools\pkgdata\pkgdata.vcproj", "{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stubdata", "..\stubdata\stubdata.vcproj", "{203EC78A-0531-43F0-A636-285439BDE025}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "toolutil", "..\tools\toolutil\toolutil.vcproj", "{6B231032-3CB5-4EED-9210-810D666A23A0}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "uconv", "..\extra\uconv\uconv.vcproj", "{DBA4088D-F6F9-4F8F-8820-082A4765C16C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ustdio", "..\extra\ustdio\ustdio.vcproj", "{C2B04507-2521-4801-BF0D-5FD79D6D518C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gensprep", "..\tools\gensprep\gensprep.vcproj", "{631C23CE-6C1D-4875-88F0-85E0A42B36EA}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "icuswap", "..\tools\icuswap\icuswap.vcproj", "{6FC24387-370C-4561-9582-7A819749E2C5}"
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ ConfigName.0 = Debug
+ ConfigName.1 = Release
+ EndGlobalSection
+ GlobalSection(ProjectDependencies) = postSolution
+ {D6271E12-B9F5-49B8-BD94-62B236A96940}.0 = {C2BE5000-7501-4E87-9724-B8D82494FAE6}
+ {D6271E12-B9F5-49B8-BD94-62B236A96940}.1 = {6FC24387-370C-4561-9582-7A819749E2C5}
+ {D6271E12-B9F5-49B8-BD94-62B236A96940}.2 = {37FC2C7F-1904-4811-8955-2F478830EAD1}
+ {D6271E12-B9F5-49B8-BD94-62B236A96940}.3 = {631C23CE-6C1D-4875-88F0-85E0A42B36EA}
+ {D6271E12-B9F5-49B8-BD94-62B236A96940}.4 = {3D1246AE-1B32-479B-BECA-AEFA97BE2321}
+ {D6271E12-B9F5-49B8-BD94-62B236A96940}.5 = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+ {D6271E12-B9F5-49B8-BD94-62B236A96940}.6 = {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}
+ {D6271E12-B9F5-49B8-BD94-62B236A96940}.7 = {20869594-A3DD-4A75-8068-99B03A5CF4E4}
+ {D6271E12-B9F5-49B8-BD94-62B236A96940}.8 = {D3065ADB-8820-4CC7-9B6C-9510833961A3}
+ {D6271E12-B9F5-49B8-BD94-62B236A96940}.9 = {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}
+ {D6271E12-B9F5-49B8-BD94-62B236A96940}.10 = {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}
+ {D6271E12-B9F5-49B8-BD94-62B236A96940}.11 = {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}
+ {D6271E12-B9F5-49B8-BD94-62B236A96940}.12 = {F5281B04-A9E0-4680-BBA8-1D7F7D115458}
+ {D6271E12-B9F5-49B8-BD94-62B236A96940}.13 = {F5213103-6CBE-46E6-B4CC-2570B6837D86}
+ {D6271E12-B9F5-49B8-BD94-62B236A96940}.14 = {DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}
+ {D6271E12-B9F5-49B8-BD94-62B236A96940}.15 = {6F744648-D15F-478A-90C6-58E353B5DDB3}
+ {D6271E12-B9F5-49B8-BD94-62B236A96940}.16 = {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}
+ {D6271E12-B9F5-49B8-BD94-62B236A96940}.17 = {77C78066-746F-4EA6-B3FE-B8C8A4A97891}
+ {D6271E12-B9F5-49B8-BD94-62B236A96940}.18 = {86829694-A375-4C58-B4EA-96EF514E3225}
+ {D6271E12-B9F5-49B8-BD94-62B236A96940}.19 = {0178B127-6269-407D-B112-93877BB62776}
+ {D6271E12-B9F5-49B8-BD94-62B236A96940}.20 = {10F01D38-993E-407A-89BD-5C1C63F3A08D}
+ {D6271E12-B9F5-49B8-BD94-62B236A96940}.21 = {73632960-B3A6-464D-83A3-4B43365F19B8}
+ {D6271E12-B9F5-49B8-BD94-62B236A96940}.22 = {C920062A-0647-4553-A3B2-37C58065664B}
+ {D6271E12-B9F5-49B8-BD94-62B236A96940}.23 = {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}
+ {D6271E12-B9F5-49B8-BD94-62B236A96940}.24 = {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}
+ {D6271E12-B9F5-49B8-BD94-62B236A96940}.25 = {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}
+ {D6271E12-B9F5-49B8-BD94-62B236A96940}.26 = {203EC78A-0531-43F0-A636-285439BDE025}
+ {D6271E12-B9F5-49B8-BD94-62B236A96940}.27 = {6B231032-3CB5-4EED-9210-810D666A23A0}
+ {D6271E12-B9F5-49B8-BD94-62B236A96940}.28 = {DBA4088D-F6F9-4F8F-8820-082A4765C16C}
+ {D6271E12-B9F5-49B8-BD94-62B236A96940}.29 = {C2B04507-2521-4801-BF0D-5FD79D6D518C}
+ {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.0 = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+ {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.1 = {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}
+ {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.2 = {0178B127-6269-407D-B112-93877BB62776}
+ {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.3 = {6B231032-3CB5-4EED-9210-810D666A23A0}
+ {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.0 = {203EC78A-0531-43F0-A636-285439BDE025}
+ {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.0 = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+ {20869594-A3DD-4A75-8068-99B03A5CF4E4}.0 = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+ {20869594-A3DD-4A75-8068-99B03A5CF4E4}.1 = {6B231032-3CB5-4EED-9210-810D666A23A0}
+ {D3065ADB-8820-4CC7-9B6C-9510833961A3}.0 = {6B231032-3CB5-4EED-9210-810D666A23A0}
+ {D3065ADB-8820-4CC7-9B6C-9510833961A3}.1 = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+ {C2BE5000-7501-4E87-9724-B8D82494FAE6}.0 = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+ {C2BE5000-7501-4E87-9724-B8D82494FAE6}.1 = {6B231032-3CB5-4EED-9210-810D666A23A0}
+ {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.0 = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+ {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.1 = {6B231032-3CB5-4EED-9210-810D666A23A0}
+ {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.0 = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+ {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.1 = {6B231032-3CB5-4EED-9210-810D666A23A0}
+ {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.0 = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+ {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.1 = {6B231032-3CB5-4EED-9210-810D666A23A0}
+ {F5281B04-A9E0-4680-BBA8-1D7F7D115458}.0 = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+ {F5281B04-A9E0-4680-BBA8-1D7F7D115458}.1 = {6B231032-3CB5-4EED-9210-810D666A23A0}
+ {F5213103-6CBE-46E6-B4CC-2570B6837D86}.0 = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+ {F5213103-6CBE-46E6-B4CC-2570B6837D86}.1 = {6B231032-3CB5-4EED-9210-810D666A23A0}
+ {DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.0 = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+ {DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.1 = {6B231032-3CB5-4EED-9210-810D666A23A0}
+ {6F744648-D15F-478A-90C6-58E353B5DDB3}.0 = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+ {6F744648-D15F-478A-90C6-58E353B5DDB3}.1 = {6B231032-3CB5-4EED-9210-810D666A23A0}
+ {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.0 = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+ {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.1 = {0178B127-6269-407D-B112-93877BB62776}
+ {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.2 = {6B231032-3CB5-4EED-9210-810D666A23A0}
+ {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.0 = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+ {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.1 = {6B231032-3CB5-4EED-9210-810D666A23A0}
+ {86829694-A375-4C58-B4EA-96EF514E3225}.0 = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+ {86829694-A375-4C58-B4EA-96EF514E3225}.1 = {0178B127-6269-407D-B112-93877BB62776}
+ {86829694-A375-4C58-B4EA-96EF514E3225}.2 = {6B231032-3CB5-4EED-9210-810D666A23A0}
+ {0178B127-6269-407D-B112-93877BB62776}.0 = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+ {10F01D38-993E-407A-89BD-5C1C63F3A08D}.0 = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+ {73632960-B3A6-464D-83A3-4B43365F19B8}.0 = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+ {73632960-B3A6-464D-83A3-4B43365F19B8}.1 = {0178B127-6269-407D-B112-93877BB62776}
+ {73632960-B3A6-464D-83A3-4B43365F19B8}.2 = {6B231032-3CB5-4EED-9210-810D666A23A0}
+ {C920062A-0647-4553-A3B2-37C58065664B}.0 = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+ {37FC2C7F-1904-4811-8955-2F478830EAD1}.0 = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+ {37FC2C7F-1904-4811-8955-2F478830EAD1}.1 = {C920062A-0647-4553-A3B2-37C58065664B}
+ {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.0 = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+ {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.1 = {6B231032-3CB5-4EED-9210-810D666A23A0}
+ {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.0 = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+ {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.1 = {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}
+ {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.2 = {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}
+ {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.3 = {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}
+ {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.4 = {F5281B04-A9E0-4680-BBA8-1D7F7D115458}
+ {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.5 = {F5213103-6CBE-46E6-B4CC-2570B6837D86}
+ {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.6 = {DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}
+ {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.7 = {6F744648-D15F-478A-90C6-58E353B5DDB3}
+ {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.8 = {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}
+ {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.9 = {77C78066-746F-4EA6-B3FE-B8C8A4A97891}
+ {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.10 = {86829694-A375-4C58-B4EA-96EF514E3225}
+ {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.11 = {0178B127-6269-407D-B112-93877BB62776}
+ {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.12 = {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}
+ {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.13 = {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}
+ {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.14 = {203EC78A-0531-43F0-A636-285439BDE025}
+ {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.15 = {6B231032-3CB5-4EED-9210-810D666A23A0}
+ {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.16 = {C2BE5000-7501-4E87-9724-B8D82494FAE6}
+ {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.17 = {631C23CE-6C1D-4875-88F0-85E0A42B36EA}
+ {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.0 = {6B231032-3CB5-4EED-9210-810D666A23A0}
+ {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.1 = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+ {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.2 = {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}
+ {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.3 = {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}
+ {6B231032-3CB5-4EED-9210-810D666A23A0}.0 = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+ {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.0 = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+ {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.1 = {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}
+ {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.2 = {0178B127-6269-407D-B112-93877BB62776}
+ {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.3 = {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}
+ {C2B04507-2521-4801-BF0D-5FD79D6D518C}.0 = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+ {C2B04507-2521-4801-BF0D-5FD79D6D518C}.1 = {0178B127-6269-407D-B112-93877BB62776}
+ {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.0 = {6B231032-3CB5-4EED-9210-810D666A23A0}
+ {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.1 = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+ {6FC24387-370C-4561-9582-7A819749E2C5}.0 = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+ {6FC24387-370C-4561-9582-7A819749E2C5}.1 = {0178B127-6269-407D-B112-93877BB62776}
+ {6FC24387-370C-4561-9582-7A819749E2C5}.2 = {6B231032-3CB5-4EED-9210-810D666A23A0}
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {D6271E12-B9F5-49B8-BD94-62B236A96940}.Debug.ActiveCfg = Debug|Win32
+ {D6271E12-B9F5-49B8-BD94-62B236A96940}.Debug.Build.0 = Debug|Win32
+ {D6271E12-B9F5-49B8-BD94-62B236A96940}.Release.ActiveCfg = Release|Win32
+ {D6271E12-B9F5-49B8-BD94-62B236A96940}.Release.Build.0 = Release|Win32
+ {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug.ActiveCfg = Debug|Win32
+ {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug.Build.0 = Debug|Win32
+ {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release.ActiveCfg = Release|Win32
+ {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release.Build.0 = Release|Win32
+ {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug.ActiveCfg = Debug|Win32
+ {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug.Build.0 = Debug|Win32
+ {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release.ActiveCfg = Release|Win32
+ {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release.Build.0 = Release|Win32
+ {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug.ActiveCfg = Debug|Win32
+ {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug.Build.0 = Debug|Win32
+ {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release.ActiveCfg = Release|Win32
+ {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release.Build.0 = Release|Win32
+ {20869594-A3DD-4A75-8068-99B03A5CF4E4}.Debug.ActiveCfg = Debug|Win32
+ {20869594-A3DD-4A75-8068-99B03A5CF4E4}.Debug.Build.0 = Debug|Win32
+ {20869594-A3DD-4A75-8068-99B03A5CF4E4}.Release.ActiveCfg = Release|Win32
+ {20869594-A3DD-4A75-8068-99B03A5CF4E4}.Release.Build.0 = Release|Win32
+ {D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug.ActiveCfg = Debug|Win32
+ {D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug.Build.0 = Debug|Win32
+ {D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release.ActiveCfg = Release|Win32
+ {D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release.Build.0 = Release|Win32
+ {C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug.ActiveCfg = Debug|Win32
+ {C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug.Build.0 = Debug|Win32
+ {C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release.ActiveCfg = Release|Win32
+ {C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release.Build.0 = Release|Win32
+ {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug.ActiveCfg = Debug|Win32
+ {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug.Build.0 = Debug|Win32
+ {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release.ActiveCfg = Release|Win32
+ {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release.Build.0 = Release|Win32
+ {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug.ActiveCfg = Debug|Win32
+ {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug.Build.0 = Debug|Win32
+ {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release.ActiveCfg = Release|Win32
+ {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release.Build.0 = Release|Win32
+ {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug.ActiveCfg = Debug|Win32
+ {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug.Build.0 = Debug|Win32
+ {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release.ActiveCfg = Release|Win32
+ {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release.Build.0 = Release|Win32
+ {F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Debug.ActiveCfg = Debug|Win32
+ {F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Debug.Build.0 = Debug|Win32
+ {F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Release.ActiveCfg = Release|Win32
+ {F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Release.Build.0 = Release|Win32
+ {F5213103-6CBE-46E6-B4CC-2570B6837D86}.Debug.ActiveCfg = Debug|Win32
+ {F5213103-6CBE-46E6-B4CC-2570B6837D86}.Debug.Build.0 = Debug|Win32
+ {F5213103-6CBE-46E6-B4CC-2570B6837D86}.Release.ActiveCfg = Release|Win32
+ {F5213103-6CBE-46E6-B4CC-2570B6837D86}.Release.Build.0 = Release|Win32
+ {DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Debug.ActiveCfg = Debug|Win32
+ {DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Debug.Build.0 = Debug|Win32
+ {DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Release.ActiveCfg = Release|Win32
+ {DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Release.Build.0 = Release|Win32
+ {6F744648-D15F-478A-90C6-58E353B5DDB3}.Debug.ActiveCfg = Debug|Win32
+ {6F744648-D15F-478A-90C6-58E353B5DDB3}.Debug.Build.0 = Debug|Win32
+ {6F744648-D15F-478A-90C6-58E353B5DDB3}.Release.ActiveCfg = Release|Win32
+ {6F744648-D15F-478A-90C6-58E353B5DDB3}.Release.Build.0 = Release|Win32
+ {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug.ActiveCfg = Debug|Win32
+ {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug.Build.0 = Debug|Win32
+ {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release.ActiveCfg = Release|Win32
+ {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release.Build.0 = Release|Win32
+ {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug.ActiveCfg = Debug|Win32
+ {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug.Build.0 = Debug|Win32
+ {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release.ActiveCfg = Release|Win32
+ {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release.Build.0 = Release|Win32
+ {86829694-A375-4C58-B4EA-96EF514E3225}.Debug.ActiveCfg = Debug|Win32
+ {86829694-A375-4C58-B4EA-96EF514E3225}.Debug.Build.0 = Debug|Win32
+ {86829694-A375-4C58-B4EA-96EF514E3225}.Release.ActiveCfg = Release|Win32
+ {86829694-A375-4C58-B4EA-96EF514E3225}.Release.Build.0 = Release|Win32
+ {0178B127-6269-407D-B112-93877BB62776}.Debug.ActiveCfg = Debug|Win32
+ {0178B127-6269-407D-B112-93877BB62776}.Debug.Build.0 = Debug|Win32
+ {0178B127-6269-407D-B112-93877BB62776}.Release.ActiveCfg = Release|Win32
+ {0178B127-6269-407D-B112-93877BB62776}.Release.Build.0 = Release|Win32
+ {10F01D38-993E-407A-89BD-5C1C63F3A08D}.Debug.ActiveCfg = Debug|Win32
+ {10F01D38-993E-407A-89BD-5C1C63F3A08D}.Debug.Build.0 = Debug|Win32
+ {10F01D38-993E-407A-89BD-5C1C63F3A08D}.Release.ActiveCfg = Release|Win32
+ {10F01D38-993E-407A-89BD-5C1C63F3A08D}.Release.Build.0 = Release|Win32
+ {73632960-B3A6-464D-83A3-4B43365F19B8}.Debug.ActiveCfg = Debug|Win32
+ {73632960-B3A6-464D-83A3-4B43365F19B8}.Debug.Build.0 = Debug|Win32
+ {73632960-B3A6-464D-83A3-4B43365F19B8}.Release.ActiveCfg = Release|Win32
+ {73632960-B3A6-464D-83A3-4B43365F19B8}.Release.Build.0 = Release|Win32
+ {C920062A-0647-4553-A3B2-37C58065664B}.Debug.ActiveCfg = Debug|Win32
+ {C920062A-0647-4553-A3B2-37C58065664B}.Debug.Build.0 = Debug|Win32
+ {C920062A-0647-4553-A3B2-37C58065664B}.Release.ActiveCfg = Release|Win32
+ {C920062A-0647-4553-A3B2-37C58065664B}.Release.Build.0 = Release|Win32
+ {37FC2C7F-1904-4811-8955-2F478830EAD1}.Debug.ActiveCfg = Debug|Win32
+ {37FC2C7F-1904-4811-8955-2F478830EAD1}.Debug.Build.0 = Debug|Win32
+ {37FC2C7F-1904-4811-8955-2F478830EAD1}.Release.ActiveCfg = Release|Win32
+ {37FC2C7F-1904-4811-8955-2F478830EAD1}.Release.Build.0 = Release|Win32
+ {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug.ActiveCfg = Debug|Win32
+ {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug.Build.0 = Debug|Win32
+ {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release.ActiveCfg = Release|Win32
+ {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release.Build.0 = Release|Win32
+ {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug.ActiveCfg = Debug|Win32
+ {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug.Build.0 = Debug|Win32
+ {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release.ActiveCfg = Release|Win32
+ {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release.Build.0 = Release|Win32
+ {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug.ActiveCfg = Debug|Win32
+ {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug.Build.0 = Debug|Win32
+ {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release.ActiveCfg = Release|Win32
+ {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release.Build.0 = Release|Win32
+ {203EC78A-0531-43F0-A636-285439BDE025}.Debug.ActiveCfg = Debug|Win32
+ {203EC78A-0531-43F0-A636-285439BDE025}.Debug.Build.0 = Debug|Win32
+ {203EC78A-0531-43F0-A636-285439BDE025}.Release.ActiveCfg = Release|Win32
+ {203EC78A-0531-43F0-A636-285439BDE025}.Release.Build.0 = Release|Win32
+ {6B231032-3CB5-4EED-9210-810D666A23A0}.Debug.ActiveCfg = Debug|Win32
+ {6B231032-3CB5-4EED-9210-810D666A23A0}.Debug.Build.0 = Debug|Win32
+ {6B231032-3CB5-4EED-9210-810D666A23A0}.Release.ActiveCfg = Release|Win32
+ {6B231032-3CB5-4EED-9210-810D666A23A0}.Release.Build.0 = Release|Win32
+ {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug.ActiveCfg = Debug|Win32
+ {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug.Build.0 = Debug|Win32
+ {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release.ActiveCfg = Release|Win32
+ {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release.Build.0 = Release|Win32
+ {C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug.ActiveCfg = Debug|Win32
+ {C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug.Build.0 = Debug|Win32
+ {C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release.ActiveCfg = Release|Win32
+ {C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release.Build.0 = Release|Win32
+ {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug.ActiveCfg = Debug|Win32
+ {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug.Build.0 = Debug|Win32
+ {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release.ActiveCfg = Release|Win32
+ {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release.Build.0 = Release|Win32
+ {6FC24387-370C-4561-9582-7A819749E2C5}.Debug.ActiveCfg = Debug|Win32
+ {6FC24387-370C-4561-9582-7A819749E2C5}.Debug.Build.0 = Debug|Win32
+ {6FC24387-370C-4561-9582-7A819749E2C5}.Release.ActiveCfg = Release|Win32
+ {6FC24387-370C-4561-9582-7A819749E2C5}.Release.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/source/common/.cvsignore b/source/common/.cvsignore
new file mode 100644
index 0000000..1e8aecb
--- /dev/null
+++ b/source/common/.cvsignore
@@ -0,0 +1,9 @@
+*.d
+libicu*.*
+Debug
+Release
+Makefile
+icucfg.h
+*.ao
+*.plg
+
diff --git a/source/common/Makefile.in b/source/common/Makefile.in
new file mode 100644
index 0000000..16ed8e3
--- /dev/null
+++ b/source/common/Makefile.in
@@ -0,0 +1,178 @@
+#******************************************************************************
+#
+# Copyright (C) 1999-2003, International Business Machines
+# Corporation and others. All Rights Reserved.
+#
+#******************************************************************************
+## Makefile.in for ICU - icuuc.so
+## Stephen F. Booth
+
+## Source directory information
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+
+top_builddir = ..
+
+## All the flags and other definitions are included here.
+include $(top_builddir)/icudefs.mk
+
+## Build directory information
+subdir = common
+
+## Extra files to remove for 'make clean'
+CLEANFILES = *~ $(DEPS)
+
+## Target information
+
+TARGET_STUBNAME=uc
+
+ifneq ($(ENABLE_STATIC),)
+TARGET = $(LIBSICU)$(TARGET_STUBNAME)$(ICULIBSUFFIX).$(A)
+endif
+
+ifneq ($(ENABLE_SHARED),)
+SO_TARGET = $(LIBICU)$(TARGET_STUBNAME)$(ICULIBSUFFIX).$(SO)
+ALL_SO_TARGETS = $(SO_TARGET) $(MIDDLE_SO_TARGET) $(FINAL_SO_TARGET)
+
+ifeq ($(ENABLE_SO_VERSION_DATA),1)
+SO_VERSION_DATA = common.res
+endif
+
+ifeq ($(OS390BATCH),1)
+BATCH_TARGET = $(BATCH_COMMON_TARGET)
+BATCH_LIBS = $(BATCH_LIBICUDT) -lm
+endif # OS390BATCH
+
+endif # ENABLE_SHARED
+
+ALL_TARGETS = $(TARGET) $(ALL_SO_TARGETS) $(BATCH_TARGET)
+
+DYNAMICCPPFLAGS = $(SHAREDLIBCPPFLAGS)
+DYNAMICCFLAGS = $(SHAREDLIBCFLAGS)
+DYNAMICCXXFLAGS = $(SHAREDLIBCXXFLAGS)
+
+CPPFLAGS += -I. -I$(srcdir) -I$(srcdir)/../i18n $(LIBCPPFLAGS)
+DEFS += -DU_COMMON_IMPLEMENTATION
+
+# $(LIBICUDT) is either stub data or the real DLL common data.
+LIBS = $(LIBICUDT) $(DEFAULT_LIBS)
+
+OBJECTS = putil.o uobject.o cmemory.o umutex.o \
+udata.o ucmndata.o udatamem.o udataswp.o umapfile.o ucol_swp.o \
+uresbund.o uresdata.o resbund.o ucat.o locmap.o uloc.o locid.o \
+uhash.o uhash_us.o \
+ucnv.o ucnv_bld.o ucnv_cb.o ucnv_cnv.o ucnv_err.o ucnv_ext.o ucnv_io.o ucnvlat1.o \
+ucnv_u7.o ucnv_u8.o ucnv_u16.o ucnv_u32.o ucnvscsu.o ucnvbocu.o \
+ucnvmbcs.o ucnv2022.o ucnvhz.o ucnv_lmb.o ucnvisci.o \
+unistr.o utf_impl.o ustring.o ustrcase.o cstring.o ustrfmt.o ustrtrns.o \
+normlzr.o unorm.o unorm_it.o chariter.o schriter.o uchriter.o uiter.o \
+uchar.o uprops.o propname.o ubidi.o ubidiwrt.o ubidiln.o ushape.o unames.o \
+ucln_cmn.o uscript.o usc_impl.o uvector.o ustack.o uvectr32.o ucmp8.o \
+uarrsort.o utrie.o uset.o uniset.o ruleiter.o caniter.o unifilt.o unifunct.o usetiter.o \
+brkiter.o brkdict.o ubrk.o dbbi.o dbbi_tbl.o \
+rbbi.o rbbidata.o rbbinode.o rbbirb.o rbbiscan.o rbbisetb.o rbbistbl.o rbbitblb.o \
+icuserv.o iculserv.o icunotif.o uenum.o ustrenum.o \
+uidna.o usprep.o punycode.o \
+cwchar.o filestrm.o umemstrm.o util.o parsepos.o utrace.o
+
+STATIC_OBJECTS = $(OBJECTS:.o=.$(STATIC_O))
+
+DEPS = $(OBJECTS:.o=.d)
+
+## Header files to install
+HEADERS = unicode/*.h $(srcdir)/unicode/*.h
+
+## List of phony targets
+.PHONY : all all-local install install-local clean clean-local \
+distclean distclean-local install-library install-headers dist \
+dist-local check check-local
+
+## Clear suffix list
+.SUFFIXES :
+
+## List of standard targets
+all: all-local
+install: install-local
+clean: clean-local
+distclean : distclean-local
+dist: dist-local
+check: all check-local
+
+-include Makefile.local
+
+all-local: $(ALL_TARGETS) unicode/platform.h
+
+install-local: install-headers install-library
+
+install-library: all-local
+ $(MKINSTALLDIRS) $(DESTDIR)$(libdir)
+ifneq ($(ENABLE_STATIC),)
+ $(INSTALL-L) $(TARGET) $(DESTDIR)$(libdir)/$(TARGET)
+endif
+ifneq ($(ENABLE_SHARED),)
+ $(INSTALL-L) $(FINAL_SO_TARGET) $(DESTDIR)$(libdir)/$(FINAL_SO_TARGET)
+ifneq ($(FINAL_SO_TARGET),$(SO_TARGET))
+ cd $(DESTDIR)$(libdir) && $(RM) $(SO_TARGET) && ln -s $(FINAL_SO_TARGET) $(SO_TARGET)
+ifneq ($(FINAL_SO_TARGET),$(MIDDLE_SO_TARGET))
+ cd $(DESTDIR)$(libdir) && $(RM) $(MIDDLE_SO_TARGET) && ln -s $(FINAL_SO_TARGET) $(MIDDLE_SO_TARGET)
+endif
+endif
+endif
+ifneq ($(IMPORT_LIB_EXT),)
+ $(INSTALL-L) $(FINAL_IMPORT_LIB) $(DESTDIR)$(libdir)/$(FINAL_IMPORT_LIB)
+ cd $(DESTDIR)$(libdir) && $(RM) $(IMPORT_LIB) && ln -s $(FINAL_IMPORT_LIB) $(IMPORT_LIB)
+ifneq ($(MIDDLE_IMPORT_LIB),$(FINAL_IMPORT_LIB))
+ cd $(DESTDIR)$(libdir) && $(RM) $(MIDDLE_IMPORT_LIB) && ln -s $(FINAL_IMPORT_LIB) $(MIDDLE_IMPORT_LIB)
+endif
+endif
+
+install-headers:
+ $(MKINSTALLDIRS) $(DESTDIR)$(includedir)/unicode
+ @for file in $(HEADERS); do \
+ echo "$(INSTALL_DATA) $$file $(DESTDIR)$(includedir)/unicode"; \
+ $(INSTALL_DATA) $$file $(DESTDIR)$(includedir)/unicode || exit; \
+ done
+
+dist-local:
+
+clean-local:
+ test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES)
+ $(RMV) $(OBJECTS) $(STATIC_OBJECTS) $(ALL_TARGETS) $(SO_VERSION_DATA)
+
+distclean-local: clean-local
+ $(RMV) Makefile icucfg.h unicode/platform.h
+
+check-local:
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+unicode/platform.h: $(srcdir)/unicode/platform.h.in $(top_builddir)/config.status
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+ifneq ($(ENABLE_STATIC),)
+$(TARGET): $(TARGET)($(STATIC_OBJECTS))
+ $(RANLIB) $@
+endif
+
+ifneq ($(ENABLE_SHARED),)
+$(FINAL_SO_TARGET): $(OBJECTS) $(SO_VERSION_DATA)
+ $(SHLIB.cc) $(LD_SONAME) $(OUTOPT)$@ $^ $(LIBS)
+
+ifeq ($(OS390BATCH),1)
+$(BATCH_TARGET): $(OBJECTS)
+ $(SHLIB.cc) $(LD_SONAME) $(OUTOPT)$@ $^ $(BATCH_LIBS)
+endif # OS390BATCH
+
+endif # ENABLE_SHARED
+
+ifeq (,$(MAKECMDGOALS))
+-include $(DEPS)
+else
+ifneq ($(patsubst %clean,,$(MAKECMDGOALS)),)
+-include $(DEPS)
+endif
+endif
+
diff --git a/source/common/brkdict.cpp b/source/common/brkdict.cpp
new file mode 100644
index 0000000..6fc6cc6
--- /dev/null
+++ b/source/common/brkdict.cpp
@@ -0,0 +1,246 @@
+/*
+**********************************************************************
+* Copyright (C) 1999-2000 IBM and others. All rights reserved.
+**********************************************************************
+* Date Name Description
+* 12/1/99 rtg Ported from Java
+* 01/13/2000 helena Added UErrorCode to ctors.
+**********************************************************************
+*/
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_BREAK_ITERATION
+
+#include "unicode/resbund.h"
+#include "brkdict.h"
+#include "cmemory.h"
+
+U_NAMESPACE_BEGIN
+
+//=================================================================================
+// deserialization
+//=================================================================================
+
+BreakDictionary::BreakDictionary(const char* /*dictionaryFilename*/, UErrorCode& status)
+ : columnMap(NULL),
+ table(NULL),
+ rowIndex(NULL),
+ rowIndexFlags(NULL),
+ rowIndexFlagsIndex(NULL),
+ rowIndexShifts(NULL)
+{
+ if (U_FAILURE(status)) return;
+
+ ResourceBundle th((char *)0, Locale("th"), status);
+
+ if (U_FAILURE(status)) return;
+
+ ResourceBundle th_dict = th.get("BreakDictionaryData", status);
+ if (U_FAILURE(status)) return;
+
+ int32_t len;
+ const uint8_t * data = th_dict.getBinary(len, status);
+ if (U_FAILURE(status)) return;
+
+ UMemoryStream* dictionaryStream = uprv_mstrm_openBuffer(data, len);
+
+ if (dictionaryStream == 0) {
+ status = U_FILE_ACCESS_ERROR;
+ return;
+ }
+ readDictionaryFile(dictionaryStream);
+ uprv_mstrm_close(dictionaryStream);
+}
+
+BreakDictionary::~BreakDictionary()
+{
+ ucmp8_close(columnMap);
+ uprv_free(table);
+ uprv_free(rowIndex);
+ uprv_free(rowIndexFlags);
+ uprv_free(rowIndexFlagsIndex);
+ uprv_free(rowIndexShifts);
+}
+
+// macros to support readDictionaryFile. The data files originated from a Java
+// program, and Java always writes data out in big-endian format. These macros will
+// byte-swap the data for appropriate use on Windows.
+
+#if U_IS_BIG_ENDIAN
+#define SWAP32(x)
+#define SWAP16(x)
+#else
+#define SWAP32(x) x = (uint32_t)((x >> 24 & 0xff) | (x >> 8 & 0xff00) | (x << 8 & 0xff0000) | (x << 24 & 0xff000000))
+#define SWAP16(x) x = (uint16_t)((x << 8 & 0xff00) | (x >> 8 & 0xff))
+#endif
+
+void
+BreakDictionary::readDictionaryFile(UMemoryStream* in)
+{
+ int32_t l;
+ int32_t version;
+
+ int i;
+
+ // read in the version number (right now we just ignore it)
+ uprv_mstrm_read(in, &version, 4);
+
+ // read in the column map (this is serialized in its internal form:
+ // an index array followed by a data array)
+ uprv_mstrm_read(in, &l, 4);
+ SWAP32(l);
+ uint16_t* temp = (uint16_t*) uprv_malloc(sizeof(uint16_t)*l);
+ uprv_mstrm_read(in, temp, l * sizeof (int16_t) );
+ for (i = 0; i < l; i++) {
+ SWAP16(temp[i]);
+ }
+ uprv_mstrm_read(in, &l, 4);
+ SWAP32(l);
+ int8_t* temp2 = (int8_t*) uprv_malloc(sizeof(int8_t)*l);
+ uprv_mstrm_read(in, temp2, l);
+ columnMap = ucmp8_openAdopt(temp, temp2, l);
+
+ // read in numCols and numColGroups
+ uprv_mstrm_read(in, &numCols, 4);
+ SWAP32(numCols);
+ uprv_mstrm_read(in, &numColGroups, 4);
+ SWAP32(numColGroups);
+
+ // read in the row-number index
+ uprv_mstrm_read(in, &l, 4);
+ SWAP32(l);
+ rowIndex = (int16_t *)uprv_malloc(l*2);
+ uprv_mstrm_read(in, rowIndex, l * sizeof (int16_t) );
+ for (i = 0; i < l; i++) {
+ SWAP16(rowIndex[i]);
+ }
+
+ // load in the populated-cells bitmap: index first, then bitmap list
+ uprv_mstrm_read(in, &l, 4);
+ SWAP32(l);
+ rowIndexFlagsIndex = (int16_t *)uprv_malloc(l*2);
+ uprv_mstrm_read(in, rowIndexFlagsIndex, l * sizeof(int16_t) );
+ for (i = 0; i < l; i++) {
+ SWAP16(rowIndexFlagsIndex[i]);
+ }
+ uprv_mstrm_read(in, &l, 4);
+ SWAP32(l);
+ rowIndexFlags = (int32_t *)uprv_malloc(l*4);
+ uprv_mstrm_read(in, rowIndexFlags, l * sizeof(int32_t));
+ for (i = 0; i < l; i++) {
+ SWAP32(rowIndexFlags[i]);
+ }
+
+ // load in the row-shift index
+ uprv_mstrm_read(in, &l, 4);
+ SWAP32(l);
+ rowIndexShifts = (int8_t *)uprv_malloc(l);
+ uprv_mstrm_read(in, rowIndexShifts, l);
+
+ // finally, load in the actual state table
+ uprv_mstrm_read(in, &l, 4);
+ SWAP32(l);
+ table = (int16_t *)uprv_malloc(l*2);
+ uprv_mstrm_read(in, table, l * sizeof(int16_t) );
+ for (i = 0; i < l; i++) {
+ SWAP16(table[i]);
+ }
+
+ // the reverse column map occurs next in the file. In the C/C++ code, for the
+ // time being, we're not going to worry about that.
+}
+
+//=================================================================================
+// access to the words
+//=================================================================================
+
+/**
+ * Uses the column map to map the character to a column number, then
+ * passes the row and column number to the other version of at()
+ * @param row The current state
+ * @param ch The character whose column we're interested in
+ * @return The new state to transition to
+ */
+int16_t
+BreakDictionary::at(int32_t row, UChar ch) const
+{
+ int16_t col = ucmp8_get(columnMap, ch);
+ return at(row, (int32_t)col);
+}
+
+/**
+ * Returns the value in the cell with the specified (logical) row and
+ * column numbers. In DictionaryBasedBreakIterator, the row number is
+ * a state number, the column number is an input, and the return value
+ * is the row number of the new state to transition to. (0 is the
+ * "error" state, and -1 is the "end of word" state in a dictionary)
+ * @param row The row number of the current state
+ * @param col The column number of the input character (0 means "not a
+ * dictionary character")
+ * @return The row number of the new state to transition to
+ */
+int16_t
+BreakDictionary::at(int32_t row, int32_t col) const
+{
+ if (cellIsPopulated(row, col)) {
+ // we map from logical to physical row number by looking up the
+ // mapping in rowIndex; we map from logical column number to
+ // physical column number by looking up a shift value for this
+ // logical row and offsetting the logical column number by
+ // the shift amount. Then we can use internalAt() to actually
+ // get the value out of the table.
+ return internalAt(rowIndex[row], col + rowIndexShifts[row]);
+ }
+ else {
+ return 0;
+ }
+}
+
+//=================================================================================
+// implementation
+//=================================================================================
+/**
+ * Given (logical) row and column numbers, returns true if the
+ * cell in that position is populated
+ */
+UBool
+BreakDictionary::cellIsPopulated(int32_t row, int32_t col) const
+{
+ // look up the entry in the bitmap index for the specified row.
+ // If it's a negative number, it's the column number of the only
+ // populated cell in the row
+ if (rowIndexFlagsIndex[row] < 0) {
+ return col == -rowIndexFlagsIndex[row];
+ }
+
+ // if it's a positive number, it's the offset of an entry in the bitmap
+ // list. If the table is more than 32 columns wide, the bitmap is stored
+ // successive entries in the bitmap list, so we have to divide the column
+ // number by 32 and offset the number we got out of the index by the result.
+ // Once we have the appropriate piece of the bitmap, test the appropriate
+ // bit and return the result.
+ else {
+ int32_t flags = rowIndexFlags[rowIndexFlagsIndex[row] + (col >> 5)];
+ return (flags & (1 << (col & 0x1f))) != 0;
+ }
+}
+
+/**
+ * Implementation of at() when we know the specified cell is populated.
+ * @param row The PHYSICAL row number of the cell
+ * @param col The PHYSICAL column number of the cell
+ * @return The value stored in the cell
+ */
+int16_t
+BreakDictionary::internalAt(int32_t row, int32_t col) const
+{
+ // the table is a one-dimensional array, so this just does the math necessary
+ // to treat it as a two-dimensional array (we don't just use a two-dimensional
+ // array because two-dimensional arrays are inefficient in Java)
+ return table[row * numCols + col];
+}
+
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_BREAK_ITERATION */
diff --git a/source/common/brkdict.h b/source/common/brkdict.h
new file mode 100644
index 0000000..3daaf4f
--- /dev/null
+++ b/source/common/brkdict.h
@@ -0,0 +1,175 @@
+/*
+**********************************************************************
+* Copyright (C) 1999-2000 IBM and others. All rights reserved.
+**********************************************************************
+* Date Name Description
+* 12/1/99 rtg Ported from Java
+* 01/13/2000 helena Added UErrorCode to ctors.
+**********************************************************************
+*/
+
+#ifndef BRKDICT_H
+#define BRKDICT_H
+
+#include "unicode/utypes.h"
+#include "unicode/uobject.h"
+#include "ucmp8.h"
+#include "umemstrm.h"
+
+U_NAMESPACE_BEGIN
+
+/**
+ * This is the class that represents the list of known words used by
+ * DictionaryBasedBreakIterator. The conceptual data structure used
+ * here is a trie: there is a node hanging off the root node for every
+ * letter that can start a word. Each of these nodes has a node hanging
+ * off of it for every letter that can be the second letter of a word
+ * if this node is the first letter, and so on. The trie is represented
+ * as a two-dimensional array that can be treated as a table of state
+ * transitions. Indexes are used to compress this array, taking
+ * advantage of the fact that this array will always be very sparse.
+ */
+class BreakDictionary : public UMemory {
+ //=================================================================================
+ // data members
+ //=================================================================================
+private:
+
+ /**
+ * Maps from characters to column numbers. The main use of this is to
+ * avoid making room in the array for empty columns.
+ */
+ CompactByteArray* columnMap;
+
+ /**
+ * The number of actual columns in the table
+ */
+ int32_t numCols;
+
+ /**
+ * Columns are organized into groups of 32. This says how many
+ * column groups. (We could calculate this, but we store the
+ * value to avoid having to repeatedly calculate it.)
+ */
+ int32_t numColGroups;
+
+ /**
+ * The actual compressed state table. Each conceptual row represents
+ * a state, and the cells in it contain the row numbers of the states
+ * to transition to for each possible letter. 0 is used to indicate
+ * an illegal combination of letters (i.e., the error state). The
+ * table is compressed by eliminating all the unpopulated (i.e., zero)
+ * cells. Multiple conceptual rows can then be doubled up in a single
+ * physical row by sliding them up and possibly shifting them to one
+ * side or the other so the populated cells don't collide. Indexes
+ * are used to identify unpopulated cells and to locate populated cells.
+ */
+ int16_t* table;
+
+ /**
+ * This index maps logical row numbers to physical row numbers
+ */
+ int16_t* rowIndex;
+
+ /**
+ * A bitmap is used to tell which cells in the comceptual table are
+ * populated. This array contains all the unique bit combinations
+ * in that bitmap. If the table is more than 32 columns wide,
+ * successive entries in this array are used for a single row.
+ */
+ int32_t* rowIndexFlags;
+
+ /**
+ * This index maps from a logical row number into the bitmap table above.
+ * (This keeps us from storing duplicate bitmap combinations.) Since there
+ * are a lot of rows with only one populated cell, instead of wasting space
+ * in the bitmap table, we just store a negative number in this index for
+ * rows with one populated cell. The absolute value of that number is
+ * the column number of the populated cell.
+ */
+ int16_t* rowIndexFlagsIndex;
+
+ /**
+ * For each logical row, this index contains a constant that is added to
+ * the logical column number to get the physical column number
+ */
+ int8_t* rowIndexShifts;
+
+ //=================================================================================
+ // deserialization
+ //=================================================================================
+
+public:
+ /**
+ * Constructor. Creates the BreakDictionary by using readDictionaryFile() to
+ * load the dictionary tables from the disk.
+ * @param dictionaryFilename The name of the dictionary file
+ * @param status for errors if it occurs
+ */
+ BreakDictionary(const char* dictionaryFilename, UErrorCode& status);
+
+ /**
+ * Destructor.
+ */
+ ~BreakDictionary();
+
+ /**
+ * Reads the dictionary file on the disk and constructs the appropriate in-memory
+ * representation.
+ * @param in The given memory stream
+ */
+ void readDictionaryFile(UMemoryStream* in);
+
+ //=================================================================================
+ // access to the words
+ //=================================================================================
+
+ /**
+ * Uses the column map to map the character to a column number, then
+ * passes the row and column number to the other version of at()
+ * @param row The current state
+ * @param ch The character whose column we're interested in
+ * @return The new state to transition to
+ */
+ int16_t at(int32_t row, UChar ch) const;
+
+ /**
+ * Returns the value in the cell with the specified (logical) row and
+ * column numbers. In DictionaryBasedBreakIterator, the row number is
+ * a state number, the column number is an input, and the return value
+ * is the row number of the new state to transition to. (0 is the
+ * "error" state, and -1 is the "end of word" state in a dictionary)
+ * @param row The row number of the current state
+ * @param col The column number of the input character (0 means "not a
+ * dictionary character")
+ * @return The row number of the new state to transition to
+ */
+ int16_t at(int32_t row, int32_t col) const;
+
+private:
+ /**
+ * Given (logical) row and column numbers, returns true if the
+ * cell in that position is populated
+ * @param row The LOGICAL row number of the cell
+ * @param col The PHYSICAL row number of the cell
+ * @return true if the cell in that position is populated
+ */
+ UBool cellIsPopulated(int32_t row, int32_t col) const;
+
+ /**
+ * Implementation of at() when we know the specified cell is populated.
+ * @param row The PHYSICAL row number of the cell
+ * @param col The PHYSICAL column number of the cell
+ * @return The value stored in the cell
+ */
+ int16_t internalAt(int32_t row, int32_t col) const;
+
+ // the following methods are never meant to be called and so are not defined
+ // (if you don't declare them, you get default implementations)
+ BreakDictionary(const BreakDictionary& that);
+ BreakDictionary& operator=(const BreakDictionary& that);
+};
+
+U_NAMESPACE_END
+
+#endif
diff --git a/source/common/brkiter.cpp b/source/common/brkiter.cpp
new file mode 100644
index 0000000..20eb825
--- /dev/null
+++ b/source/common/brkiter.cpp
@@ -0,0 +1,540 @@
+/*
+*******************************************************************************
+* Copyright (C) 1997-2003, International Business Machines Corporation and *
+* others. All Rights Reserved. *
+*******************************************************************************
+*
+* File TXTBDRY.CPP
+*
+* Modification History:
+*
+* Date Name Description
+* 02/18/97 aliu Converted from OpenClass. Added DONE.
+* 01/13/2000 helena Added UErrorCode parameter to createXXXInstance methods.
+*****************************************************************************************
+*/
+
+// *****************************************************************************
+// This file was generated from the java source file BreakIterator.java
+// *****************************************************************************
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_BREAK_ITERATION
+
+#include "unicode/dbbi.h"
+#include "unicode/brkiter.h"
+#include "unicode/udata.h"
+#include "unicode/resbund.h"
+#include "cstring.h"
+#include "mutex.h"
+#include "iculserv.h"
+
+// *****************************************************************************
+// class BreakIterator
+// This class implements methods for finding the location of boundaries in text.
+// Instances of BreakIterator maintain a current position and scan over text
+// returning the index of characters where boundaries occur.
+// *****************************************************************************
+
+U_NAMESPACE_BEGIN
+
+const int32_t BreakIterator::DONE = (int32_t)-1;
+
+// -------------------------------------
+
+// Creates a break iterator for word breaks.
+BreakIterator*
+BreakIterator::createWordInstance(const Locale& key, UErrorCode& status)
+{
+ return createInstance(key, UBRK_WORD, status);
+}
+
+BreakIterator*
+BreakIterator::makeWordInstance(const Locale& key, UErrorCode& status)
+{
+ // WARNING: This routine is currently written specifically to handle only the
+ // default rules files and the alternate rules files for Thai. This function
+ // will have to be made fully general at some time in the future!
+ BreakIterator* result = NULL;
+ const char* filename = "word";
+
+ if (U_FAILURE(status))
+ return NULL;
+
+ if (!uprv_strcmp(key.getLanguage(), "th"))
+ {
+ filename = "word_th";
+ }
+
+ UDataMemory* file = udata_open(NULL, "brk", filename, &status);
+ if (U_FAILURE(status)) {
+ return NULL;
+ }
+ // The UDataMemory is adopted by the break iterator.
+
+ if(!uprv_strcmp(filename, "word_th")) {
+ filename = "thaidict.brk";
+ result = new DictionaryBasedBreakIterator(file, filename, status);
+ }
+ else {
+ result = new RuleBasedBreakIterator(file, status);
+ }
+ if (U_FAILURE(status)) { // Sometimes redundant check, but simple.
+ if (result != NULL) {
+ delete result;
+ }
+ return NULL;
+ }
+ if (result == NULL) {
+ udata_close(file);
+ status = U_MEMORY_ALLOCATION_ERROR;
+ }
+
+ return result;
+}
+
+// -------------------------------------
+
+// Creates a break iterator for line breaks.
+BreakIterator*
+BreakIterator::createLineInstance(const Locale& key, UErrorCode& status)
+{
+ return createInstance(key, UBRK_LINE, status);
+}
+
+BreakIterator*
+BreakIterator::makeLineInstance(const Locale& key, UErrorCode& status)
+{
+ // WARNING: This routine is currently written specifically to handle only the
+ // default rules files and the alternate rules files for Thai. This function
+ // will have to be made fully general at some time in the future!
+ BreakIterator* result = NULL;
+ const char* filename = "line";
+
+ if (U_FAILURE(status))
+ return NULL;
+
+ if (!uprv_strcmp(key.getLanguage(), "th"))
+ {
+ filename = "line_th";
+ }
+
+ UDataMemory* file = udata_open(NULL, "brk", filename, &status);
+ if (U_FAILURE(status)) {
+ return NULL;
+ }
+ // The UDataMemory is adopted by the break iterator.
+
+ if (!uprv_strcmp(key.getLanguage(), "th")) {
+ filename = "thaidict.brk";
+ result = new DictionaryBasedBreakIterator(file, filename, status);
+ }
+ else {
+ result = new RuleBasedBreakIterator(file, status);
+ }
+ if (U_FAILURE(status)) { // Sometimes redundant check, but simple.
+ if (result != NULL) {
+ delete result;
+ }
+ return NULL;
+ }
+ if (result == NULL) {
+ udata_close(file);
+ status = U_MEMORY_ALLOCATION_ERROR;
+ }
+ return result;
+}
+
+// -------------------------------------
+
+// Creates a break iterator for character breaks.
+BreakIterator*
+BreakIterator::createCharacterInstance(const Locale& key, UErrorCode& status)
+{
+ return createInstance(key, UBRK_CHARACTER, status);
+}
+
+BreakIterator*
+BreakIterator::makeCharacterInstance(const Locale& /* key */, UErrorCode& status)
+{
+ // WARNING: This routine is currently written specifically to handle only the
+ // default rules files and the alternate rules files for Thai. This function
+ // will have to be made fully general at some time in the future!
+ BreakIterator* result = NULL;
+ static const char filename[] = "char";
+
+ if (U_FAILURE(status))
+ return NULL;
+ UDataMemory* file = udata_open(NULL, "brk", filename, &status);
+ if (U_FAILURE(status)) {
+ return NULL;
+ }
+ // The UDataMemory is adopted by the break iterator.
+
+ result = new RuleBasedBreakIterator(file, status);
+
+ if (U_FAILURE(status)) { // Sometimes redundant check, but simple.
+ if (result != NULL) {
+ delete result;
+ }
+ return NULL;
+ }
+ if (result == NULL) {
+ udata_close(file);
+ status = U_MEMORY_ALLOCATION_ERROR;
+ }
+ return result;
+}
+
+// -------------------------------------
+
+// Creates a break iterator for sentence breaks.
+BreakIterator*
+BreakIterator::createSentenceInstance(const Locale& key, UErrorCode& status)
+{
+ return createInstance(key, UBRK_SENTENCE, status);
+}
+
+BreakIterator*
+BreakIterator::makeSentenceInstance(const Locale& /*key */, UErrorCode& status)
+{
+ // WARNING: This routine is currently written specifically to handle only the
+ // default rules files and the alternate rules files for Thai. This function
+ // will have to be made fully general at some time in the future!
+ BreakIterator* result = NULL;
+ static const char filename[] = "sent";
+
+ if (U_FAILURE(status))
+ return NULL;
+ UDataMemory* file = udata_open(NULL, "brk", filename, &status);
+ if (U_FAILURE(status)) {
+ return NULL;
+ }
+ // The UDataMemory is adopted by the break iterator.
+
+ result = new RuleBasedBreakIterator(file, status);
+ if (U_FAILURE(status)) { // Sometimes redundant check, but simple.
+ if (result != NULL) {
+ delete result;
+ }
+ return NULL;
+ }
+ if (result == NULL) {
+ udata_close(file);
+ status = U_MEMORY_ALLOCATION_ERROR;
+ }
+
+ return result;
+}
+
+// -------------------------------------
+
+// Creates a break iterator for title casing breaks.
+BreakIterator*
+BreakIterator::createTitleInstance(const Locale& key, UErrorCode& status)
+{
+ return createInstance(key, UBRK_TITLE, status);
+}
+
+BreakIterator*
+BreakIterator::makeTitleInstance(const Locale& /* key */, UErrorCode& status)
+{
+ // WARNING: This routine is currently written specifically to handle only the
+ // default rules files. This function will have to be made fully general
+ // at some time in the future!
+ BreakIterator* result = NULL;
+ static const char filename[] = "title";
+
+ if (U_FAILURE(status))
+ return NULL;
+ UDataMemory* file = udata_open(NULL, "brk", filename, &status);
+ if (U_FAILURE(status)) {
+ return NULL;
+ }
+ // The UDataMemory is adopted by the break iterator.
+
+ result = new RuleBasedBreakIterator(file, status);
+ if (U_FAILURE(status)) { // Sometimes redundant check, but simple.
+ if (result != NULL) {
+ delete result;
+ }
+ return NULL;
+ }
+ if (result == NULL) {
+ udata_close(file);
+ status = U_MEMORY_ALLOCATION_ERROR;
+ }
+
+ return result;
+}
+
+// -------------------------------------
+
+// Gets all the available locales that has localized text boundary data.
+const Locale*
+BreakIterator::getAvailableLocales(int32_t& count)
+{
+ return Locale::getAvailableLocales(count);
+}
+
+// -------------------------------------
+// Gets the objectLocale display name in the default locale language.
+UnicodeString&
+BreakIterator::getDisplayName(const Locale& objectLocale,
+ UnicodeString& name)
+{
+ return objectLocale.getDisplayName(name);
+}
+
+// -------------------------------------
+// Gets the objectLocale display name in the displayLocale language.
+UnicodeString&
+BreakIterator::getDisplayName(const Locale& objectLocale,
+ const Locale& displayLocale,
+ UnicodeString& name)
+{
+ return objectLocale.getDisplayName(displayLocale, name);
+}
+
+// ------------------------------------------
+//
+// Default constructor and destructor
+//
+//-------------------------------------------
+
+BreakIterator::BreakIterator()
+{
+ fBufferClone = FALSE;
+}
+
+BreakIterator::~BreakIterator()
+{
+}
+
+// ------------------------------------------
+//
+// Registration
+//
+//-------------------------------------------
+
+static ICULocaleService* gService = NULL;
+
+// -------------------------------------
+
+class ICUBreakIteratorFactory : public ICUResourceBundleFactory {
+protected:
+ virtual UObject* handleCreate(const Locale& loc, int32_t kind, const ICUService* /*service*/, UErrorCode& status) const {
+ return BreakIterator::makeInstance(loc, kind, status);
+ }
+};
+
+// -------------------------------------
+
+class ICUBreakIteratorService : public ICULocaleService {
+public:
+ ICUBreakIteratorService()
+ : ICULocaleService("Break Iterator")
+ {
+ UErrorCode status = U_ZERO_ERROR;
+ registerFactory(new ICUBreakIteratorFactory(), status);
+ }
+
+ virtual UObject* cloneInstance(UObject* instance) const {
+ return ((BreakIterator*)instance)->clone();
+ }
+
+ virtual UObject* handleDefault(const ICUServiceKey& key, UnicodeString* /*actualID*/, UErrorCode& status) const {
+ LocaleKey& lkey = (LocaleKey&)key;
+ int32_t kind = lkey.kind();
+ Locale loc;
+ lkey.currentLocale(loc);
+ return BreakIterator::makeInstance(loc, kind, status);
+ }
+
+ virtual UBool isDefault() const {
+ return countFactories() == 1;
+ }
+};
+
+// -------------------------------------
+
+static ICULocaleService*
+getService(void)
+{
+ UBool needsInit;
+ umtx_lock(NULL);
+ needsInit = (UBool)(gService == NULL);
+ umtx_unlock(NULL);
+
+ if (needsInit) {
+ ICULocaleService *tService = new ICUBreakIteratorService();
+ umtx_lock(NULL);
+ if (gService == NULL) {
+ gService = tService;
+ tService = NULL;
+ }
+ umtx_unlock(NULL);
+ delete tService;
+ }
+ return gService;
+}
+
+// -------------------------------------
+
+static UBool
+hasService(void)
+{
+ Mutex mutex;
+ return gService != NULL;
+}
+
+// -------------------------------------
+
+BreakIterator*
+BreakIterator::createInstance(const Locale& loc, UBreakIteratorType kind, UErrorCode& status)
+{
+ if (U_FAILURE(status)) {
+ return NULL;
+ }
+
+ u_init(&status);
+ if (hasService()) {
+ Locale validLoc;
+ BreakIterator *result = (BreakIterator*)gService->get(loc, kind, &validLoc, status);
+ uprv_strcpy(result->validLocale, validLoc.getName());
+ return result;
+ } else {
+ return makeInstance(loc, kind, status);
+ }
+}
+
+// -------------------------------------
+
+URegistryKey
+BreakIterator::registerInstance(BreakIterator* toAdopt, const Locale& locale, UBreakIteratorType kind, UErrorCode& status)
+{
+ return getService()->registerInstance(toAdopt, locale, kind, status);
+}
+
+// -------------------------------------
+
+UBool
+BreakIterator::unregister(URegistryKey key, UErrorCode& status)
+{
+ if (U_SUCCESS(status)) {
+ if (hasService()) {
+ return gService->unregister(key, status);
+ }
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ }
+ return FALSE;
+}
+
+// -------------------------------------
+
+StringEnumeration*
+BreakIterator::getAvailableLocales(void)
+{
+ return getService()->getAvailableLocales();
+}
+
+// -------------------------------------
+
+BreakIterator*
+BreakIterator::makeInstance(const Locale& loc, int32_t kind, UErrorCode& status)
+{
+
+ if (U_FAILURE(status)) {
+ return NULL;
+ }
+
+ BreakIterator *result = NULL;
+ switch (kind) {
+ case UBRK_CHARACTER:
+ result = BreakIterator::makeCharacterInstance(loc, status);
+ break;
+ case UBRK_WORD:
+ result = BreakIterator::makeWordInstance(loc, status);
+ break;
+ case UBRK_LINE:
+ result = BreakIterator::makeLineInstance(loc, status);
+ break;
+ case UBRK_SENTENCE:
+ result = BreakIterator::makeSentenceInstance(loc, status);
+ break;
+ case UBRK_TITLE:
+ result = BreakIterator::makeTitleInstance(loc, status);
+ break;
+ default:
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ }
+
+ if (U_FAILURE(status)) {
+ return NULL;
+ }
+
+ // this is more of a placeholder. All the break iterators have the same actual locale: root
+ // except the Thai one
+ ResourceBundle res(NULL, loc, status);
+ uprv_strcpy(result->validLocale, res.getLocale(ULOC_VALID_LOCALE, status).getName());
+ if(uprv_strcmp(loc.getLanguage(), "th") == 0) {
+ uprv_strcpy(result->actualLocale, "th");
+ } else {
+ uprv_strcpy(result->actualLocale, "root");
+ }
+ return result;
+}
+
+Locale
+BreakIterator::getLocale(ULocDataLocaleType type, UErrorCode& status) const
+{
+ switch(type) {
+ case ULOC_VALID_LOCALE:
+ // TODO: need bufferClone problems fixed before this code can work.
+ return Locale(validLocale);
+ break;
+ case ULOC_ACTUAL_LOCALE:
+ return Locale(actualLocale);
+ break;
+ default:
+ status = U_UNSUPPORTED_ERROR;
+ return Locale("");
+ }
+}
+
+const char *
+BreakIterator::getLocaleInternal(ULocDataLocaleType type, UErrorCode& status) const
+{
+ switch(type) {
+ case ULOC_VALID_LOCALE:
+ // TODO: need bufferClone problems fixed before this code can work.
+ return validLocale;
+ break;
+ case ULOC_ACTUAL_LOCALE:
+ return actualLocale;
+ break;
+ default:
+ status = U_UNSUPPORTED_ERROR;
+ return NULL;
+ }
+}
+
+U_NAMESPACE_END
+
+// defined in ucln_cmn.h
+
+/**
+ * Release all static memory held by breakiterator.
+ */
+U_CFUNC UBool breakiterator_cleanup(void) {
+ if (gService) {
+ delete gService;
+ gService = NULL;
+ }
+ return TRUE;
+}
+
+#endif /* #if !UCONFIG_NO_BREAK_ITERATION */
+
+//eof
diff --git a/source/common/caniter.cpp b/source/common/caniter.cpp
new file mode 100644
index 0000000..05acfc1
--- /dev/null
+++ b/source/common/caniter.cpp
@@ -0,0 +1,703 @@
+/*
+ *****************************************************************************
+ * Copyright (C) 1996-2003, International Business Machines Corporation and *
+ * others. All Rights Reserved. *
+ *****************************************************************************
+ */
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_NORMALIZATION
+
+#include "unicode/uset.h"
+#include "unicode/ustring.h"
+#include "hash.h"
+#include "unormimp.h"
+#include "unicode/caniter.h"
+#include "unicode/normlzr.h"
+#include "unicode/uchar.h"
+#include "cmemory.h"
+
+/**
+ * This class allows one to iterate through all the strings that are canonically equivalent to a given
+ * string. For example, here are some sample results:
+Results for: {LATIN CAPITAL LETTER A WITH RING ABOVE}{LATIN SMALL LETTER D}{COMBINING DOT ABOVE}{COMBINING CEDILLA}
+1: \u0041\u030A\u0064\u0307\u0327
+ = {LATIN CAPITAL LETTER A}{COMBINING RING ABOVE}{LATIN SMALL LETTER D}{COMBINING DOT ABOVE}{COMBINING CEDILLA}
+2: \u0041\u030A\u0064\u0327\u0307
+ = {LATIN CAPITAL LETTER A}{COMBINING RING ABOVE}{LATIN SMALL LETTER D}{COMBINING CEDILLA}{COMBINING DOT ABOVE}
+3: \u0041\u030A\u1E0B\u0327
+ = {LATIN CAPITAL LETTER A}{COMBINING RING ABOVE}{LATIN SMALL LETTER D WITH DOT ABOVE}{COMBINING CEDILLA}
+4: \u0041\u030A\u1E11\u0307
+ = {LATIN CAPITAL LETTER A}{COMBINING RING ABOVE}{LATIN SMALL LETTER D WITH CEDILLA}{COMBINING DOT ABOVE}
+5: \u00C5\u0064\u0307\u0327
+ = {LATIN CAPITAL LETTER A WITH RING ABOVE}{LATIN SMALL LETTER D}{COMBINING DOT ABOVE}{COMBINING CEDILLA}
+6: \u00C5\u0064\u0327\u0307
+ = {LATIN CAPITAL LETTER A WITH RING ABOVE}{LATIN SMALL LETTER D}{COMBINING CEDILLA}{COMBINING DOT ABOVE}
+7: \u00C5\u1E0B\u0327
+ = {LATIN CAPITAL LETTER A WITH RING ABOVE}{LATIN SMALL LETTER D WITH DOT ABOVE}{COMBINING CEDILLA}
+8: \u00C5\u1E11\u0307
+ = {LATIN CAPITAL LETTER A WITH RING ABOVE}{LATIN SMALL LETTER D WITH CEDILLA}{COMBINING DOT ABOVE}
+9: \u212B\u0064\u0307\u0327
+ = {ANGSTROM SIGN}{LATIN SMALL LETTER D}{COMBINING DOT ABOVE}{COMBINING CEDILLA}
+10: \u212B\u0064\u0327\u0307
+ = {ANGSTROM SIGN}{LATIN SMALL LETTER D}{COMBINING CEDILLA}{COMBINING DOT ABOVE}
+11: \u212B\u1E0B\u0327
+ = {ANGSTROM SIGN}{LATIN SMALL LETTER D WITH DOT ABOVE}{COMBINING CEDILLA}
+12: \u212B\u1E11\u0307
+ = {ANGSTROM SIGN}{LATIN SMALL LETTER D WITH CEDILLA}{COMBINING DOT ABOVE}
+ *<br>Note: the code is intended for use with small strings, and is not suitable for larger ones,
+ * since it has not been optimized for that situation.
+ *@author M. Davis
+ *@draft
+ */
+#if 0
+static UBool PROGRESS = FALSE;
+
+#include <stdio.h>
+#include "unicode/translit.h"
+
+UErrorCode status = U_ZERO_ERROR;
+
+// Just for testing - remove, not thread safe.
+static const char* UToS(const UnicodeString &source) {
+ static char buffer[256];
+ buffer[source.extract(0, source.length(), buffer)] = 0;
+ return buffer;
+}
+
+static const UnicodeString &Tr(const UnicodeString &source) {
+ static Transliterator *NAME = Transliterator::createInstance("name", UTRANS_FORWARD, status);
+ static UnicodeString result;
+ result = source;
+ NAME->transliterate(result);
+ return result;
+}
+#endif
+// public
+
+U_NAMESPACE_BEGIN
+
+// TODO: add boilerplate methods.
+
+UOBJECT_DEFINE_RTTI_IMPLEMENTATION(CanonicalIterator)
+
+/**
+ *@param source string to get results for
+ */
+CanonicalIterator::CanonicalIterator(const UnicodeString &sourceStr, UErrorCode &status) :
+ pieces(NULL),
+ pieces_length(0),
+ pieces_lengths(NULL),
+ current(NULL),
+ current_length(0)
+{
+ if(U_SUCCESS(status)) {
+ setSource(sourceStr, status);
+ }
+}
+
+CanonicalIterator::~CanonicalIterator() {
+ cleanPieces();
+}
+
+void CanonicalIterator::cleanPieces() {
+ int32_t i = 0;
+ if(pieces != NULL) {
+ for(i = 0; i < pieces_length; i++) {
+ if(pieces[i] != NULL) {
+ delete[] pieces[i];
+ }
+ }
+ uprv_free(pieces);
+ pieces = NULL;
+ if(pieces_lengths != NULL) {
+ uprv_free(pieces_lengths);
+ }
+ pieces_lengths = NULL;
+ if(current != NULL) {
+ uprv_free(current);
+ }
+ current = NULL;
+ }
+}
+
+/**
+ *@return gets the source: NOTE: it is the NFD form of source
+ */
+UnicodeString CanonicalIterator::getSource() {
+ return source;
+}
+
+/**
+ * Resets the iterator so that one can start again from the beginning.
+ */
+void CanonicalIterator::reset() {
+ done = FALSE;
+ for (int i = 0; i < current_length; ++i) {
+ current[i] = 0;
+ }
+}
+
+/**
+ *@return the next string that is canonically equivalent. The value null is returned when
+ * the iteration is done.
+ */
+UnicodeString CanonicalIterator::next() {
+ int32_t i = 0;
+
+ if (done) {
+ buffer.setToBogus();
+ return buffer;
+ }
+
+ // delete old contents
+ buffer.remove();
+
+ // construct return value
+
+ for (i = 0; i < pieces_length; ++i) {
+ buffer.append(pieces[i][current[i]]);
+ }
+ //String result = buffer.toString(); // not needed
+
+ // find next value for next time
+
+ for (i = current_length - 1; ; --i) {
+ if (i < 0) {
+ done = TRUE;
+ break;
+ }
+ current[i]++;
+ if (current[i] < pieces_lengths[i]) break; // got sequence
+ current[i] = 0;
+ }
+ return buffer;
+}
+
+/**
+ *@param set the source string to iterate against. This allows the same iterator to be used
+ * while changing the source string, saving object creation.
+ */
+void CanonicalIterator::setSource(const UnicodeString &newSource, UErrorCode &status) {
+ Normalizer::normalize(newSource, UNORM_NFD, 0, source, status);
+ if(U_FAILURE(status)) {
+ return;
+ }
+ done = FALSE;
+
+ cleanPieces();
+
+ // catch degenerate case
+ if (newSource.length() == 0) {
+ pieces_length = 1;
+ pieces = (UnicodeString **)uprv_malloc(sizeof(UnicodeString *));
+ /* test for NULL */
+ if (pieces == NULL) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return;
+ }
+ current_length = 1;
+ current = (int32_t*)uprv_malloc(1 * sizeof(int32_t));
+ /* test for NULL */
+ if (current == NULL) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ uprv_free(pieces);
+ pieces = NULL;
+ return;
+ }
+ current[0] = 0;
+ pieces[0] = new UnicodeString[1];
+ /* test for NULL */
+ if (pieces[0] == 0) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ uprv_free(pieces);
+ pieces = NULL;
+ uprv_free(current);
+ return;
+ }
+ pieces[0][0] = UnicodeString("");
+ pieces_lengths = (int32_t*)uprv_malloc(1 * sizeof(int32_t));
+ /* test for NULL */
+ if (pieces_lengths == 0) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ uprv_free(pieces);
+ pieces = NULL;
+ uprv_free(current);
+ return;
+ }
+ pieces_lengths[0] = 1;
+ return;
+ }
+
+
+ UnicodeString *list = new UnicodeString[source.length()];
+ /* test for NULL */
+ if (list == 0) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return;
+ }
+
+ int32_t list_length = 0;
+ UChar32 cp = 0;
+ int32_t start = 0;
+ // i should initialy be the number of code units at the
+ // start of the string
+ int32_t i = UTF16_CHAR_LENGTH(source.char32At(0));
+ //int32_t i = 1;
+ // find the segments
+ // This code iterates through the source string and
+ // extracts segments that end up on a codepoint that
+ // doesn't start any decompositions. (Analysis is done
+ // on the NFD form - see above).
+ for (; i < source.length(); i += UTF16_CHAR_LENGTH(cp)) {
+ cp = source.char32At(i);
+ if (unorm_isCanonSafeStart(cp)) {
+ source.extract(start, i-start, list[list_length++]); // add up to i
+ start = i;
+ }
+ }
+ source.extract(start, i-start, list[list_length++]); // add last one
+
+
+ // allocate the arrays, and find the strings that are CE to each segment
+ pieces = (UnicodeString **)uprv_malloc(list_length * sizeof(UnicodeString *));
+ /* test for NULL */
+ if (pieces == NULL) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ delete[] list;
+ return;
+ }
+ pieces_length = list_length;
+ pieces_lengths = (int32_t*)uprv_malloc(list_length * sizeof(int32_t));
+ /* test for NULL */
+ if (pieces_lengths == 0) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ delete[] list;
+ uprv_free(pieces);
+ pieces = NULL;
+ return;
+ }
+
+ current_length = list_length;
+ current = (int32_t*)uprv_malloc(list_length * sizeof(int32_t));
+ /* test for NULL */
+ if (current == 0) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ delete[] list;
+ uprv_free(pieces);
+ pieces = NULL;
+ uprv_free(pieces_lengths);
+ return;
+ }
+ for (i = 0; i < current_length; i++) {
+ current[i] = 0;
+ }
+ // for each segment, get all the combinations that can produce
+ // it after NFD normalization
+ for (i = 0; i < pieces_length; ++i) {
+ //if (PROGRESS) printf("SEGMENT\n");
+ pieces[i] = getEquivalents(list[i], pieces_lengths[i], status);
+ }
+
+ delete[] list;
+}
+
+/**
+ * Dumb recursive implementation of permutation.
+ * TODO: optimize
+ * @param source the string to find permutations for
+ * @return the results in a set.
+ */
+void CanonicalIterator::permute(UnicodeString &source, UBool skipZeros, Hashtable *result, UErrorCode &status) {
+ if(U_FAILURE(status)) {
+ return;
+ }
+ //if (PROGRESS) printf("Permute: %s\n", UToS(Tr(source)));
+ int32_t i = 0;
+
+ // optimization:
+ // if zero or one character, just return a set with it
+ // we check for length < 2 to keep from counting code points all the time
+ if (source.length() <= 2 && source.countChar32() <= 1) {
+ UnicodeString *toPut = new UnicodeString(source);
+ /* test for NULL */
+ if (toPut == 0) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return;
+ }
+ result->put(source, toPut, status);
+ return;
+ }
+
+ // otherwise iterate through the string, and recursively permute all the other characters
+ UChar32 cp;
+ Hashtable *subpermute = new Hashtable(FALSE, status);
+ /* test for NULL */
+ if (subpermute == 0) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return;
+ }
+ if (U_SUCCESS(status)) {
+ subpermute->setValueDeleter(uhash_deleteUnicodeString);
+ }
+
+ for (i = 0; i < source.length(); i += UTF16_CHAR_LENGTH(cp)) {
+ cp = source.char32At(i);
+ const UHashElement *ne = NULL;
+ int32_t el = -1;
+ UnicodeString subPermuteString = source;
+
+ // optimization:
+ // if the character is canonical combining class zero,
+ // don't permute it
+ if (skipZeros && i != 0 && u_getCombiningClass(cp) == 0) {
+ //System.out.println("Skipping " + Utility.hex(UTF16.valueOf(source, i)));
+ continue;
+ }
+
+ subpermute->removeAll();
+
+ // see what the permutations of the characters before and after this one are
+ //Hashtable *subpermute = permute(source.substring(0,i) + source.substring(i + UTF16.getCharCount(cp)));
+ permute(subPermuteString.replace(i, UTF16_CHAR_LENGTH(cp), NULL, 0), skipZeros, subpermute, status);
+ /* Test for buffer overflows */
+ if(U_FAILURE(status)) {
+ delete subpermute;
+ return;
+ }
+ // The upper replace is destructive. The question is do we have to make a copy, or we don't care about the contents
+ // of source at this point.
+
+ // prefix this character to all of them
+ ne = subpermute->nextElement(el);
+ while (ne != NULL) {
+ UnicodeString *permRes = (UnicodeString *)(ne->value.pointer);
+ UnicodeString *chStr = new UnicodeString(cp);
+ //test for NULL
+ if (chStr == NULL) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ delete subpermute;
+ return;
+ }
+ chStr->append(*permRes); //*((UnicodeString *)(ne->value.pointer));
+ //if (PROGRESS) printf(" Piece: %s\n", UToS(*chStr));
+ result->put(*chStr, chStr, status);
+ ne = subpermute->nextElement(el);
+ }
+ }
+ delete subpermute;
+ //return result;
+}
+
+// privates
+
+// we have a segment, in NFD. Find all the strings that are canonically equivalent to it.
+UnicodeString* CanonicalIterator::getEquivalents(const UnicodeString &segment, int32_t &result_len, UErrorCode &status) {
+ //private String[] getEquivalents(String segment)
+
+ Hashtable *result = new Hashtable(FALSE, status);
+ /* test for NULL */
+ if (result == 0) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return 0;
+ }
+ if (U_SUCCESS(status)) {
+ result->setValueDeleter(uhash_deleteUnicodeString);
+ }
+ UChar USeg[256];
+ int32_t segLen = segment.extract(USeg, 256, status);
+ Hashtable *basic = getEquivalents2(USeg, segLen, status);
+ //Hashtable *basic = getEquivalents2(segment, segLen, status);
+
+ // now get all the permutations
+ // add only the ones that are canonically equivalent
+ // TODO: optimize by not permuting any class zero.
+
+ Hashtable *permutations = new Hashtable(FALSE, status);
+ /* test for NULL */
+ if (permutations == 0) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ delete result;
+ delete basic;
+ return 0;
+ }
+ if (U_SUCCESS(status)) {
+ permutations->setValueDeleter(uhash_deleteUnicodeString);
+ }
+
+ const UHashElement *ne = NULL;
+ int32_t el = -1;
+ //Iterator it = basic.iterator();
+ ne = basic->nextElement(el);
+ //while (it.hasNext())
+ while (ne != NULL) {
+ //String item = (String) it.next();
+ UnicodeString item = *((UnicodeString *)(ne->value.pointer));
+
+ permutations->removeAll();
+ permute(item, CANITER_SKIP_ZEROES, permutations, status);
+ const UHashElement *ne2 = NULL;
+ int32_t el2 = -1;
+ //Iterator it2 = permutations.iterator();
+ ne2 = permutations->nextElement(el2);
+ //while (it2.hasNext())
+ while (ne2 != NULL) {
+ //String possible = (String) it2.next();
+ //UnicodeString *possible = new UnicodeString(*((UnicodeString *)(ne2->value.pointer)));
+ UnicodeString possible(*((UnicodeString *)(ne2->value.pointer)));
+ UnicodeString attempt;
+ Normalizer::normalize(possible, UNORM_NFD, 0, attempt, status);
+
+ // TODO: check if operator == is semanticaly the same as attempt.equals(segment)
+ if (attempt==segment) {
+ //if (PROGRESS) printf("Adding Permutation: %s\n", UToS(Tr(*possible)));
+ // TODO: use the hashtable just to catch duplicates - store strings directly (somehow).
+ result->put(possible, new UnicodeString(possible), status); //add(possible);
+ } else {
+ //if (PROGRESS) printf("-Skipping Permutation: %s\n", UToS(Tr(*possible)));
+ }
+
+ ne2 = permutations->nextElement(el2);
+ }
+ ne = basic->nextElement(el);
+ }
+
+ /* Test for buffer overflows */
+ if(U_FAILURE(status)) {
+ delete result;
+ delete permutations;
+ delete basic;
+ return 0;
+ }
+ // convert into a String[] to clean up storage
+ //String[] finalResult = new String[result.size()];
+ UnicodeString *finalResult = NULL;
+ int32_t resultCount;
+ if((resultCount = result->count())) {
+ finalResult = new UnicodeString[resultCount];
+ } else {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ }
+ /* test for NULL */
+ if (finalResult == 0) {
+ if(U_SUCCESS(status)) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ }
+ delete result;
+ delete permutations;
+ delete basic;
+ return 0;
+ }
+ //result.toArray(finalResult);
+ result_len = 0;
+ el = -1;
+ ne = result->nextElement(el);
+ while(ne != NULL) {
+ UnicodeString finResult = *((UnicodeString *)(ne->value.pointer));
+ finalResult[result_len++] = finResult;
+ ne = result->nextElement(el);
+ }
+
+
+ delete permutations;
+ delete basic;
+ delete result;
+ return finalResult;
+}
+
+Hashtable *CanonicalIterator::getEquivalents2(const UChar *segment, int32_t segLen, UErrorCode &status) {
+//Hashtable *CanonicalIterator::getEquivalents2(const UnicodeString &segment, int32_t segLen, UErrorCode &status) {
+
+ Hashtable *result = new Hashtable(FALSE, status);
+ /* test for NULL */
+ if (result == 0) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return 0;
+ }
+ if (U_SUCCESS(status)) {
+ result->setValueDeleter(uhash_deleteUnicodeString);
+ }
+
+ //if (PROGRESS) printf("Adding: %s\n", UToS(Tr(segment)));
+
+ UnicodeString toPut(segment, segLen);
+
+ result->put(toPut, new UnicodeString(toPut), status);
+
+ USerializedSet starts;
+
+ // cycle through all the characters
+ UChar32 cp, end = 0;
+ int32_t i = 0, j;
+ for (i = 0; i < segLen; i += UTF16_CHAR_LENGTH(cp)) {
+ // see if any character is at the start of some decomposition
+ UTF_GET_CHAR(segment, 0, i, segLen, cp);
+ if (!unorm_getCanonStartSet(cp, &starts)) {
+ continue;
+ }
+ // if so, see which decompositions match
+ for(j = 0, cp = end+1; cp <= end || uset_getSerializedRange(&starts, j++, &cp, &end); ++cp) {
+ //Hashtable *remainder = extract(cp, segment, segLen, i, status);
+ Hashtable *remainder = extract(cp, segment, segLen, i, status);
+ if (remainder == NULL) continue;
+
+ // there were some matches, so add all the possibilities to the set.
+ UnicodeString prefix(segment, i);
+ prefix += cp;
+
+ const UHashElement *ne = NULL;
+ int32_t el = -1;
+ ne = remainder->nextElement(el);
+ while (ne != NULL) {
+ UnicodeString item = *((UnicodeString *)(ne->value.pointer));
+ UnicodeString *toAdd = new UnicodeString(prefix);
+ /* test for NULL */
+ if (toAdd == 0) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ delete result;
+ delete remainder;
+ return 0;
+ }
+ *toAdd += item;
+ result->put(*toAdd, toAdd, status);
+
+ //if (PROGRESS) printf("Adding: %s\n", UToS(Tr(*toAdd)));
+
+ ne = remainder->nextElement(el);
+ }
+
+ delete remainder;
+ }
+ }
+
+ /* Test for buffer overflows */
+ if(U_FAILURE(status)) {
+ return 0;
+ }
+ return result;
+}
+
+/**
+ * See if the decomposition of cp2 is at segment starting at segmentPos
+ * (with canonical rearrangment!)
+ * If so, take the remainder, and return the equivalents
+ */
+Hashtable *CanonicalIterator::extract(UChar32 comp, const UChar *segment, int32_t segLen, int32_t segmentPos, UErrorCode &status) {
+//Hashtable *CanonicalIterator::extract(UChar32 comp, const UnicodeString &segment, int32_t segLen, int32_t segmentPos, UErrorCode &status) {
+ //if (PROGRESS) printf(" extract: %s, ", UToS(Tr(UnicodeString(comp))));
+ //if (PROGRESS) printf("%s, %i\n", UToS(Tr(segment)), segmentPos);
+
+ const int32_t bufSize = 256;
+ int32_t bufLen = 0;
+ UChar temp[bufSize];
+
+ const int32_t decompSize = 64;
+ int32_t inputLen = 0;
+ UChar decomp[decompSize];
+
+ U16_APPEND_UNSAFE(temp, inputLen, comp);
+ int32_t decompLen = unorm_getDecomposition(comp, FALSE, decomp, decompSize);
+ if(decompLen < 0) {
+ decompLen = -decompLen;
+ }
+
+ UChar *buff = temp+inputLen;
+
+ // See if it matches the start of segment (at segmentPos)
+ UBool ok = FALSE;
+ UChar32 cp;
+ int32_t decompPos = 0;
+ UChar32 decompCp;
+ UTF_NEXT_CHAR(decomp, decompPos, decompLen, decompCp);
+
+ int32_t i;
+ UBool overflow = FALSE;
+
+ i = segmentPos;
+ while(i < segLen) {
+ UTF_NEXT_CHAR(segment, i, segLen, cp);
+
+ if (cp == decompCp) { // if equal, eat another cp from decomp
+
+ //if (PROGRESS) printf(" matches: %s\n", UToS(Tr(UnicodeString(cp))));
+
+ if (decompPos == decompLen) { // done, have all decomp characters!
+ //u_strcat(buff+bufLen, segment+i);
+ uprv_memcpy(buff+bufLen, segment+i, (segLen-i)*sizeof(UChar));
+ bufLen+=segLen-i;
+
+ ok = TRUE;
+ break;
+ }
+ UTF_NEXT_CHAR(decomp, decompPos, decompLen, decompCp);
+ } else {
+ //if (PROGRESS) printf(" buffer: %s\n", UToS(Tr(UnicodeString(cp))));
+
+ // brute force approach
+
+ U16_APPEND(buff, bufLen, bufSize, cp, overflow);
+
+ if(overflow) {
+ /*
+ * ### TODO handle buffer overflow
+ * The buffer is large, but an overflow may still happen with
+ * unusual input (many combining marks?).
+ * Reallocate buffer and continue.
+ * markus 20020929
+ */
+
+ overflow = FALSE;
+ }
+
+ /* TODO: optimize
+ // since we know that the classes are monotonically increasing, after zero
+ // e.g. 0 5 7 9 0 3
+ // we can do an optimization
+ // there are only a few cases that work: zero, less, same, greater
+ // if both classes are the same, we fail
+ // if the decomp class < the segment class, we fail
+
+ segClass = getClass(cp);
+ if (decompClass <= segClass) return null;
+ */
+ }
+ }
+ if (!ok) return NULL; // we failed, characters left over
+
+ //if (PROGRESS) printf("Matches\n");
+
+ if (bufLen == 0) {
+ Hashtable *result = new Hashtable(FALSE, status);
+ /* test for NULL */
+ if (result == 0) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return 0;
+ }
+ result->setValueDeleter(uhash_deleteUnicodeString);
+ result->put(UnicodeString(), new UnicodeString(), status);
+ return result; // succeed, but no remainder
+ }
+
+ // brute force approach
+ // check to make sure result is canonically equivalent
+ int32_t tempLen = inputLen + bufLen;
+
+ UChar trial[bufSize];
+ unorm_decompose(trial, bufSize, temp, tempLen, FALSE, 0, &status);
+
+ /* Test for buffer overflows */
+ if(U_FAILURE(status)) {
+ return 0;
+ }
+
+ if(uprv_memcmp(segment+segmentPos, trial, (segLen - segmentPos)*sizeof(UChar)) != 0) {
+ return NULL;
+ }
+
+ return getEquivalents2(buff, bufLen, status);
+}
+
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_NORMALIZATION */
diff --git a/source/common/chariter.cpp b/source/common/chariter.cpp
new file mode 100644
index 0000000..5569876
--- /dev/null
+++ b/source/common/chariter.cpp
@@ -0,0 +1,90 @@
+/*
+**********************************************************************
+* Copyright (C) 1999-2003, International Business Machines
+* Corporation and others. All Rights Reserved.
+**********************************************************************
+*/
+
+#include "unicode/chariter.h"
+
+U_NAMESPACE_BEGIN
+
+ForwardCharacterIterator::~ForwardCharacterIterator() {}
+
+
+CharacterIterator::CharacterIterator()
+: textLength(0), pos(0), begin(0), end(0) {
+}
+
+CharacterIterator::CharacterIterator(int32_t length)
+: textLength(length), pos(0), begin(0), end(length) {
+ if(textLength < 0) {
+ textLength = end = 0;
+ }
+}
+
+CharacterIterator::CharacterIterator(int32_t length, int32_t position)
+: textLength(length), pos(position), begin(0), end(length) {
+ if(textLength < 0) {
+ textLength = end = 0;
+ }
+ if(pos < 0) {
+ pos = 0;
+ } else if(pos > end) {
+ pos = end;
+ }
+}
+
+CharacterIterator::CharacterIterator(int32_t length, int32_t textBegin, int32_t textEnd, int32_t position)
+: textLength(length), pos(position), begin(textBegin), end(textEnd) {
+ if(textLength < 0) {
+ textLength = 0;
+ }
+ if(begin < 0) {
+ begin = 0;
+ } else if(begin > textLength) {
+ begin = textLength;
+ }
+ if(end < begin) {
+ end = begin;
+ } else if(end > textLength) {
+ end = textLength;
+ }
+ if(pos < begin) {
+ pos = begin;
+ } else if(pos > end) {
+ pos = end;
+ }
+}
+
+CharacterIterator::CharacterIterator(const CharacterIterator &that) :
+ForwardCharacterIterator(that),
+textLength(that.textLength), pos(that.pos), begin(that.begin), end(that.end)
+{
+}
+
+CharacterIterator &
+CharacterIterator::operator=(const CharacterIterator &that) {
+ ForwardCharacterIterator::operator=(that);
+ textLength = that.textLength;
+ pos = that.pos;
+ begin = that.begin;
+ end = that.end;
+ return *this;
+}
+
+// implementing first[32]PostInc() directly in a subclass should be faster
+// but these implementations make subclassing a little easier
+UChar
+CharacterIterator::firstPostInc(void) {
+ setToStart();
+ return nextPostInc();
+}
+
+UChar32
+CharacterIterator::first32PostInc(void) {
+ setToStart();
+ return next32PostInc();
+}
+
+U_NAMESPACE_END
diff --git a/source/common/charstr.h b/source/common/charstr.h
new file mode 100644
index 0000000..20ea9a7
--- /dev/null
+++ b/source/common/charstr.h
@@ -0,0 +1,63 @@
+/*
+**********************************************************************
+* Copyright (c) 2001-2003, International Business Machines
+* Corporation and others. All Rights Reserved.
+**********************************************************************
+* Date Name Description
+* 11/19/2001 aliu Creation.
+**********************************************************************
+*/
+
+#include "unicode/utypes.h"
+#include "unicode/uobject.h"
+#include "unicode/unistr.h"
+#include "cmemory.h"
+
+//--------------------------------------------------------------------
+// class CharString
+//
+// This is a tiny wrapper class that is used internally to make a
+// UnicodeString look like a const char*. It can be allocated on the
+// stack. It only creates a heap buffer if it needs to.
+//--------------------------------------------------------------------
+
+U_NAMESPACE_BEGIN
+
+class U_COMMON_API CharString : public UMemory {
+public:
+ // Constructor
+ // @param str The unicode string to be converted to char *
+ // @param codepage The char * code page. "" for invariant conversion.
+ // NULL for default code page.
+ inline CharString(const UnicodeString& str, const char *codepage = "");
+ inline ~CharString();
+ inline operator const char*() const { return ptr; }
+
+private:
+ char buf[128];
+ char* ptr;
+
+ CharString(const CharString &other); // forbid copying of this class
+ CharString &operator=(const CharString &other); // forbid copying of this class
+};
+
+inline CharString::CharString(const UnicodeString& str, const char *codepage) {
+ int32_t len;
+ ptr = buf;
+ len = str.extract(0, 0x7FFFFFFF, buf ,sizeof(buf)-1, codepage);
+ buf[sizeof(buf)-1] = 0; // extract does not add null if it thinks there is no space for it.
+ if (len >= (int32_t)(sizeof(buf)-1)) {
+ ptr = (char *)uprv_malloc(len+1);
+ str.extract(0, 0x7FFFFFFF, ptr, len+1, codepage);
+ }
+}
+
+inline CharString::~CharString() {
+ if (ptr != buf) {
+ uprv_free(ptr);
+ }
+}
+
+U_NAMESPACE_END
+
+//eof
diff --git a/source/common/cmemory.c b/source/common/cmemory.c
new file mode 100644
index 0000000..45902dc
--- /dev/null
+++ b/source/common/cmemory.c
@@ -0,0 +1,123 @@
+/*
+******************************************************************************
+*
+* Copyright (C) 2002-2003, International Business Machines
+* Corporation and others. All Rights Reserved.
+*
+******************************************************************************
+*
+* File cmemory.c ICU Heap allocation.
+* All ICU heap allocation, both for C and C++ new of ICU
+* class types, comes through these functions.
+*
+* If you have a need to replace ICU allocation, this is the
+* place to do it.
+*
+* Note that uprv_malloc(0) returns a non-NULL pointer, and
+* that a subsequent free of that pointer value is a NOP.
+*
+******************************************************************************
+*/
+#include "cmemory.h"
+#include "unicode/uclean.h"
+
+/* uprv_malloc(0) returns a pointer to this read-only data. */
+static const int32_t zeroMem[] = {0, 0, 0, 0, 0, 0};
+
+/* Function Pointers for user-supplied heap functions */
+static const void *pContext;
+static UMemAllocFn *pAlloc;
+static UMemReallocFn *pRealloc;
+static UMemFreeFn *pFree;
+
+/* Flag indicating whether any heap allocations have happened.
+ * Used to prevent changing out the heap functions after allocations have been made */
+static UBool gHeapInUse;
+
+U_CAPI void * U_EXPORT2
+uprv_malloc(size_t s) {
+ if (s > 0) {
+ gHeapInUse = TRUE;
+ if (pAlloc) {
+ return (*pAlloc)(pContext, s);
+ } else {
+ return malloc(s);
+ }
+ } else {
+ return (void *)zeroMem;
+ }
+}
+
+U_CAPI void * U_EXPORT2
+uprv_realloc(void * buffer, size_t size) {
+ if (buffer == zeroMem) {
+ return uprv_malloc(size);
+ } else if (size == 0) {
+ if (pFree) {
+ (*pFree)(pContext, buffer);
+ } else {
+ free(buffer);
+ }
+ return (void *)zeroMem;
+ } else {
+ gHeapInUse = TRUE;
+ if (pRealloc) {
+ return (*pRealloc)(pContext, buffer, size);
+ } else {
+ return realloc(buffer, size);
+ }
+ }
+}
+
+U_CAPI void U_EXPORT2
+uprv_free(void *buffer) {
+ if (buffer != zeroMem) {
+ if (pFree) {
+ (*pFree)(pContext, buffer);
+ } else {
+ free(buffer);
+ }
+ }
+}
+
+U_CAPI void U_EXPORT2
+u_setMemoryFunctions(const void *context, UMemAllocFn *a, UMemReallocFn *r, UMemFreeFn *f, UErrorCode *status)
+{
+ if (U_FAILURE(*status)) {
+ return;
+ }
+ if (a==NULL || r==NULL || f==NULL) {
+ *status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
+ if (gHeapInUse) {
+ *status = U_INVALID_STATE_ERROR;
+ return;
+ }
+ pContext = context;
+ pAlloc = a;
+ pRealloc = r;
+ pFree = f;
+}
+
+
+U_CFUNC UBool cmemory_cleanup(void) {
+ pContext = NULL;
+ pAlloc = NULL;
+ pRealloc = NULL;
+ pFree = NULL;
+ gHeapInUse = FALSE;
+ return TRUE;
+}
+
+
+/*
+ * gHeapInUse
+ * Return True if ICU has allocated any memory.
+ * Used by u_SetMutexFunctions() and similar to verify that ICU has not
+ * been used, that it is in a pristine initial state.
+ */
+U_CFUNC UBool cmemory_inUse() {
+ return gHeapInUse;
+}
+
diff --git a/source/common/cmemory.h b/source/common/cmemory.h
new file mode 100644
index 0000000..ffcfa2d
--- /dev/null
+++ b/source/common/cmemory.h
@@ -0,0 +1,83 @@
+/*
+******************************************************************************
+*
+* Copyright (C) 1997-2003, International Business Machines
+* Corporation and others. All Rights Reserved.
+*
+******************************************************************************
+*
+* File CMEMORY.H
+*
+* Contains stdlib.h/string.h memory functions
+*
+* @author Bertrand A. Damiba
+*
+* Modification History:
+*
+* Date Name Description
+* 6/20/98 Bertrand Created.
+* 05/03/99 stephen Changed from functions to macros.
+*
+******************************************************************************
+*/
+
+#ifndef CMEMORY_H
+#define CMEMORY_H
+
+#include "unicode/utypes.h"
+#include <stdlib.h>
+#include <string.h>
+
+
+#define uprv_memcpy(dst, src, size) U_STANDARD_CPP_NAMESPACE memcpy(dst, src, size)
+#define uprv_memmove(dst, src, size) U_STANDARD_CPP_NAMESPACE memmove(dst, src, size)
+#define uprv_memset(buffer, mark, size) U_STANDARD_CPP_NAMESPACE memset(buffer, mark, size)
+#define uprv_memcmp(buffer1, buffer2, size) U_STANDARD_CPP_NAMESPACE memcmp(buffer1, buffer2,size)
+
+U_CAPI void * U_EXPORT2
+uprv_malloc(size_t s);
+
+U_CAPI void * U_EXPORT2
+uprv_realloc(void *mem, size_t size);
+
+U_CAPI void U_EXPORT2
+uprv_free(void *mem);
+
+/**
+ * This should align the memory properly on any machine.
+ * This is very useful for the safeClone functions.
+ */
+typedef union {
+ long t1;
+ double t2;
+ void *t3;
+} UAlignedMemory;
+
+/**
+ * Get the amount of bytes that a pointer is off by from
+ * the previous aligned pointer
+ */
+#define U_ALIGNMENT_OFFSET(ptr) (((size_t)ptr) & (sizeof(UAlignedMemory) - 1))
+
+/**
+ * Get the amount of bytes to add to a pointer
+ * in order to get the next aligned address
+ */
+#define U_ALIGNMENT_OFFSET_UP(ptr) (sizeof(UAlignedMemory) - U_ALIGNMENT_OFFSET(ptr))
+
+/**
+ * Indicate whether the ICU allocation functions have been used.
+ * This is used to determine whether ICU is in an initial, unused state.
+ */
+U_CFUNC UBool
+cmemory_inUse(void);
+
+/**
+ * Heap clean up function, called from u_cleanup()
+ * Clears any user heap functions from u_setMemoryFunctions()
+ * Does NOT deallocate any remaining allocated memory.
+ */
+U_CFUNC UBool
+cmemory_cleanup(void);
+
+#endif
diff --git a/source/common/common.dsp b/source/common/common.dsp
new file mode 100644
index 0000000..1f25289
--- /dev/null
+++ b/source/common/common.dsp
@@ -0,0 +1,3562 @@
+# Microsoft Developer Studio Project File - Name="common" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=common - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "common.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "common.mak" CFG="common - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "common - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "common - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "common - Win64 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "common - Win64 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "common - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\lib\"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "COMMON_EXPORTS" /FD /c
+# ADD CPP /nologo /G6 /MD /Za /W3 /GX /Zi /O2 /Ob2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "COMMON_EXPORTS" /D "U_COMMON_IMPLEMENTATION" /D "UDATA_STATIC_LIB" /FR /FD /GF /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 icudata.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x4a800000" /dll /machine:I386 /out:"..\..\bin\icuuc28.dll" /implib:"..\..\lib\icuuc.lib" /libpath:"..\..\lib"
+# SUBTRACT LINK32 /pdb:none /debug
+
+!ELSEIF "$(CFG)" == "common - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\lib\"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "COMMON_EXPORTS" /FD /GZ /c
+# ADD CPP /nologo /G6 /MDd /Za /W3 /Gm /GX /ZI /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "COMMON_EXPORTS" /D "U_COMMON_IMPLEMENTATION" /D "UDATA_STATIC_LIB" /D "RBBI_DEBUG" /FR /FD /GF /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 icudata.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x4a800000" /dll /debug /machine:I386 /out:"..\..\bin\icuuc28d.dll" /implib:"..\..\lib\icuucd.lib" /pdbtype:sept /libpath:"..\..\lib"
+# SUBTRACT LINK32 /pdb:none
+
+!ELSEIF "$(CFG)" == "common - Win64 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\lib\"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "COMMON_EXPORTS" /FD /c
+# ADD CPP /nologo /MD /Za /W3 /GX /Zi /O2 /D "NDEBUG" /D "WIN64" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "COMMON_EXPORTS" /D "U_COMMON_IMPLEMENTATION" /D "UDATA_STATIC_LIB" /D "_IA64_" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /GF /QIA64_fmaopt /Zm600 /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win64
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win64
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:IX86 /machine:IA64
+# ADD LINK32 icudata.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x4a800000" /dll /machine:IX86 /out:"..\..\bin\icuuc28.dll" /implib:"..\..\lib\icuuc.lib" /libpath:"..\..\lib" /machine:IA64
+# SUBTRACT LINK32 /debug
+
+!ELSEIF "$(CFG)" == "common - Win64 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\lib\"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN64" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "COMMON_EXPORTS" /FD /GZ /c
+# ADD CPP /nologo /MDd /Za /W3 /Gm /GX /Zi /Od /D "_DEBUG" /D "WIN64" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "COMMON_EXPORTS" /D "U_COMMON_IMPLEMENTATION" /D "UDATA_STATIC_LIB" /D "_IA64_" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FR /FD /GF /GZ /QIA64_fmaopt /Zm600 /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win64
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win64
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:IX86 /pdbtype:sept /machine:IA64
+# ADD LINK32 icudata.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x4a800000" /dll /incremental:no /debug /machine:IX86 /out:"..\..\bin\icuuc28d.dll" /implib:"..\..\lib\icuucd.lib" /pdbtype:sept /libpath:"..\..\lib" /machine:IA64
+
+!ENDIF
+
+# Begin Target
+
+# Name "common - Win32 Release"
+# Name "common - Win32 Debug"
+# Name "common - Win64 Release"
+# Name "common - Win64 Debug"
+# Begin Group "bidi"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\ubidi.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\unicode\ubidi.h
+
+!IF "$(CFG)" == "common - Win32 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\ubidi.h
+
+"..\..\include\unicode\ubidi.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win32 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\ubidi.h
+
+"..\..\include\unicode\ubidi.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\ubidi.h
+
+"..\..\include\unicode\ubidi.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\ubidi.h
+
+"..\..\include\unicode\ubidi.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\ubidiimp.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\ubidiln.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\ubidiwrt.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\ushape.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\unicode\ushape.h
+
+!IF "$(CFG)" == "common - Win32 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\ushape.h
+
+"..\..\include\unicode\ushape.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win32 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\ushape.h
+
+"..\..\include\unicode\ushape.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\ushape.h
+
+"..\..\include\unicode\ushape.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\ushape.h
+
+"..\..\include\unicode\ushape.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# End Group
+# Begin Group "break iteration"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\brkdict.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\brkdict.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\brkiter.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\unicode\brkiter.h
+
+!IF "$(CFG)" == "common - Win32 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\brkiter.h
+
+"..\..\include\unicode\brkiter.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win32 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\brkiter.h
+
+"..\..\include\unicode\brkiter.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\brkiter.h
+
+"..\..\include\unicode\brkiter.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\brkiter.h
+
+"..\..\include\unicode\brkiter.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\dbbi.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\unicode\dbbi.h
+
+!IF "$(CFG)" == "common - Win32 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\dbbi.h
+
+"..\..\include\unicode\dbbi.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win32 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\dbbi.h
+
+"..\..\include\unicode\dbbi.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\dbbi.h
+
+"..\..\include\unicode\dbbi.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\dbbi.h
+
+"..\..\include\unicode\dbbi.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\dbbi_tbl.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\dbbi_tbl.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\rbbi.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\unicode\rbbi.h
+
+!IF "$(CFG)" == "common - Win32 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\rbbi.h
+
+"..\..\include\unicode\rbbi.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win32 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\rbbi.h
+
+"..\..\include\unicode\rbbi.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\rbbi.h
+
+"..\..\include\unicode\rbbi.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\rbbi.h
+
+"..\..\include\unicode\rbbi.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\rbbidata.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\rbbidata.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\rbbinode.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\rbbinode.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\rbbirb.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\rbbirb.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\rbbirpt.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\rbbiscan.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\rbbiscan.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\rbbisetb.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\rbbisetb.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\rbbistbl.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\rbbitblb.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\rbbitblb.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\ubrk.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\unicode\ubrk.h
+
+!IF "$(CFG)" == "common - Win32 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\ubrk.h
+
+"..\..\include\unicode\ubrk.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win32 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\ubrk.h
+
+"..\..\include\unicode\ubrk.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\ubrk.h
+
+"..\..\include\unicode\ubrk.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\ubrk.h
+
+"..\..\include\unicode\ubrk.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# End Group
+# Begin Group "collation"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\ucol_swp.c
+# ADD CPP /I "..\i18n"
+# End Source File
+# Begin Source File
+
+SOURCE=.\ucol_swp.h
+# End Source File
+# End Group
+# Begin Group "collections"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\hash.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\unicode\strenum.h
+
+!IF "$(CFG)" == "common - Win32 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\strenum.h
+
+"..\..\include\unicode\strenum.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win32 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\strenum.h
+
+"..\..\include\unicode\strenum.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\strenum.h
+
+"..\..\include\unicode\strenum.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\strenum.h
+
+"..\..\include\unicode\strenum.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\uarrsort.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\uarrsort.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\ucmp8.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\ucmp8.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\uenum.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\unicode\uenum.h
+
+!IF "$(CFG)" == "common - Win32 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\uenum.h
+
+"..\..\include\unicode\uenum.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win32 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\uenum.h
+
+"..\..\include\unicode\uenum.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\uenum.h
+
+"..\..\include\unicode\uenum.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\uenum.h
+
+"..\..\include\unicode\uenum.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\uenumimp.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\uhash.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\uhash.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\uhash_us.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\ustack.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\ustrenum.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\ustrenum.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\utrie.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\utrie.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\uvector.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\uvector.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\uvectr32.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\uvectr32.h
+# End Source File
+# End Group
+# Begin Group "configuration"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\common.rc
+# End Source File
+# Begin Source File
+
+SOURCE=.\cpputils.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\filestrm.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\filestrm.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\locmap.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\locmap.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\mutex.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\putil.c
+# ADD CPP /Ze
+# End Source File
+# Begin Source File
+
+SOURCE=.\unicode\putil.h
+
+!IF "$(CFG)" == "common - Win32 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\putil.h
+
+"..\..\include\unicode\putil.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win32 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\putil.h
+
+"..\..\include\unicode\putil.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\putil.h
+
+"..\..\include\unicode\putil.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\putil.h
+
+"..\..\include\unicode\putil.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\unicode\pwin32.h
+
+!IF "$(CFG)" == "common - Win32 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\pwin32.h
+
+"..\..\include\unicode\pwin32.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win32 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\pwin32.h
+
+"..\..\include\unicode\pwin32.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\pwin32.h
+
+"..\..\include\unicode\pwin32.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\pwin32.h
+
+"..\..\include\unicode\pwin32.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\uassert.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\unicode\uconfig.h
+
+!IF "$(CFG)" == "common - Win32 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\uconfig.h
+
+"..\..\include\unicode\uconfig.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win32 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\uconfig.h
+
+"..\..\include\unicode\uconfig.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\uconfig.h
+
+"..\..\include\unicode\uconfig.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\uconfig.h
+
+"..\..\include\unicode\uconfig.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\unicode\umachine.h
+
+!IF "$(CFG)" == "common - Win32 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\umachine.h
+
+"..\..\include\unicode\umachine.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win32 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\umachine.h
+
+"..\..\include\unicode\umachine.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\umachine.h
+
+"..\..\include\unicode\umachine.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\umachine.h
+
+"..\..\include\unicode\umachine.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\umemstrm.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\umemstrm.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\umutex.c
+# ADD CPP /Ze
+# End Source File
+# Begin Source File
+
+SOURCE=.\umutex.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\unicode\urename.h
+
+!IF "$(CFG)" == "common - Win32 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\urename.h
+
+"..\..\include\unicode\urename.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win32 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\urename.h
+
+"..\..\include\unicode\urename.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\urename.h
+
+"..\..\include\unicode\urename.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\urename.h
+
+"..\..\include\unicode\urename.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\utrace.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\unicode\utrace.h
+
+!IF "$(CFG)" == "common - Win32 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\utrace.h
+
+"..\..\include\unicode\utrace.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win32 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\utrace.h
+
+"..\..\include\unicode\utrace.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\utrace.h
+
+"..\..\include\unicode\utrace.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\utrace.h
+
+"..\..\include\unicode\utrace.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\utracimp.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\unicode\utypes.h
+
+!IF "$(CFG)" == "common - Win32 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\utypes.h
+
+"..\..\include\unicode\utypes.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win32 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\utypes.h
+
+"..\..\include\unicode\utypes.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\utypes.h
+
+"..\..\include\unicode\utypes.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\utypes.h
+
+"..\..\include\unicode\utypes.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\unicode\uversion.h
+
+!IF "$(CFG)" == "common - Win32 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\uversion.h
+
+"..\..\include\unicode\uversion.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win32 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\uversion.h
+
+"..\..\include\unicode\uversion.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\uversion.h
+
+"..\..\include\unicode\uversion.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\uversion.h
+
+"..\..\include\unicode\uversion.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# End Group
+# Begin Group "conversion"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\ucnv.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\unicode\ucnv.h
+
+!IF "$(CFG)" == "common - Win32 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\ucnv.h
+
+"..\..\include\unicode\ucnv.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win32 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\ucnv.h
+
+"..\..\include\unicode\ucnv.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\ucnv.h
+
+"..\..\include\unicode\ucnv.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\ucnv.h
+
+"..\..\include\unicode\ucnv.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\ucnv2022.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\ucnv_bld.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\ucnv_bld.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\ucnv_cb.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\unicode\ucnv_cb.h
+
+!IF "$(CFG)" == "common - Win32 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\ucnv_cb.h
+
+"..\..\include\unicode\ucnv_cb.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win32 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\ucnv_cb.h
+
+"..\..\include\unicode\ucnv_cb.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\ucnv_cb.h
+
+"..\..\include\unicode\ucnv_cb.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\ucnv_cb.h
+
+"..\..\include\unicode\ucnv_cb.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\ucnv_cnv.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\ucnv_cnv.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\ucnv_err.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\unicode\ucnv_err.h
+
+!IF "$(CFG)" == "common - Win32 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\ucnv_err.h
+
+"..\..\include\unicode\ucnv_err.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win32 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\ucnv_err.h
+
+"..\..\include\unicode\ucnv_err.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\ucnv_err.h
+
+"..\..\include\unicode\ucnv_err.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\ucnv_err.h
+
+"..\..\include\unicode\ucnv_err.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\ucnv_ext.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\ucnv_ext.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\ucnv_imp.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\ucnv_io.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\ucnv_io.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\ucnv_lmb.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\ucnv_u16.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\ucnv_u32.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\ucnv_u7.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\ucnv_u8.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\ucnvbocu.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\ucnvhz.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\ucnvisci.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\ucnvlat1.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\ucnvmbcs.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\ucnvmbcs.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\ucnvscsu.c
+# End Source File
+# End Group
+# Begin Group "data & memory"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\cmemory.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\cmemory.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\unicode\uclean.h
+
+!IF "$(CFG)" == "common - Win32 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\uclean.h
+
+"..\..\include\unicode\uclean.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win32 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\uclean.h
+
+"..\..\include\unicode\uclean.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\uclean.h
+
+"..\..\include\unicode\uclean.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\uclean.h
+
+"..\..\include\unicode\uclean.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\ucln.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\ucln_cmn.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\ucln_cmn.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\ucmndata.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\ucmndata.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\udata.c
+# ADD CPP /Za
+# End Source File
+# Begin Source File
+
+SOURCE=.\unicode\udata.h
+
+!IF "$(CFG)" == "common - Win32 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\udata.h
+
+"..\..\include\unicode\udata.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win32 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\udata.h
+
+"..\..\include\unicode\udata.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\udata.h
+
+"..\..\include\unicode\udata.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\udata.h
+
+"..\..\include\unicode\udata.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\udatamem.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\udatamem.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\udataswp.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\udataswp.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\umapfile.c
+# ADD CPP /Ze
+# End Source File
+# Begin Source File
+
+SOURCE=.\umapfile.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\uobject.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\unicode\uobject.h
+
+!IF "$(CFG)" == "common - Win32 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\uobject.h
+
+"..\..\include\unicode\uobject.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win32 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\uobject.h
+
+"..\..\include\unicode\uobject.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\uobject.h
+
+"..\..\include\unicode\uobject.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\uobject.h
+
+"..\..\include\unicode\uobject.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# End Group
+# Begin Group "formatting"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\unicode\parseerr.h
+
+!IF "$(CFG)" == "common - Win32 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\parseerr.h
+
+"..\..\include\unicode\parseerr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win32 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\parseerr.h
+
+"..\..\include\unicode\parseerr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\parseerr.h
+
+"..\..\include\unicode\parseerr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\parseerr.h
+
+"..\..\include\unicode\parseerr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\parsepos.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\unicode\parsepos.h
+
+!IF "$(CFG)" == "common - Win32 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\parsepos.h
+
+"..\..\include\unicode\parsepos.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win32 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\parsepos.h
+
+"..\..\include\unicode\parsepos.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\parsepos.h
+
+"..\..\include\unicode\parsepos.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\parsepos.h
+
+"..\..\include\unicode\parsepos.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\unicode\umisc.h
+
+!IF "$(CFG)" == "common - Win32 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\umisc.h
+InputName=umisc
+
+"..\..\include\unicode\$(InputName).h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win32 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\umisc.h
+InputName=umisc
+
+"..\..\include\unicode\$(InputName).h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Release"
+
+# Begin Custom Build
+InputPath=.\unicode\umisc.h
+InputName=umisc
+
+"..\..\include\unicode\$(InputName).h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) ..\..\include\unicode
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "common - Win64 Debug"
+
+# Begin Custom Build
+InputPath=.\unicode\umisc.h
+InputName=umisc
+
+"..\..\include\unicode\$(InputName).h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ co