Home | History | Annotate | only in /external/icu4c
Up to higher level directory
NameDateSize
aclocal.m431-Jul-201017.4K
allinone/31-Jul-2010
Android.mk31-Jul-2010781
APIChangeReport.html31-Jul-2010146.1K
CleanSpec.mk31-Jul-20102.2K
common/31-Jul-2010
config/31-Jul-2010
config.guess31-Jul-201043.9K
config.log31-Jul-201030.7K
config.status31-Jul-201034.7K
config.sub31-Jul-201032.6K
configure31-Jul-2010322.5K
configure.in31-Jul-201035.1K
configure.mk31-Jul-2010540
data/31-Jul-2010
Doxyfile.in31-Jul-20109.6K
extra/31-Jul-2010
i18n/31-Jul-2010
icu4c.css31-Jul-20106.3K
icudefs.mk31-Jul-20107.5K
icudefs.mk.in31-Jul-20108.5K
install-sh31-Jul-20105.5K
io/31-Jul-2010
layout/31-Jul-2010
layoutex/31-Jul-2010
license.html31-Jul-20101.9K
Makefile.in31-Jul-20108.7K
Makefile.org31-Jul-20106.7K
mkinstalldirs31-Jul-2010935
NOTICE31-Jul-20105.4K
readme.html31-Jul-201074.3K
runConfigureICU31-Jul-20109.4K
samples/31-Jul-2010
stubdata/31-Jul-2010
test/31-Jul-2010
tools/31-Jul-2010
unicode-license.txt31-Jul-20102.8K

readme.html

      1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
      2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
      3 
      4 <html lang="en-US" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
      5   <head>
      6 
      7     <title>ReadMe for ICU</title>
      8     <meta name="COPYRIGHT" content=
      9     "Copyright (c) 1997-2009 IBM Corporation and others. All Rights Reserved." />
     10     <meta name="KEYWORDS" content=
     11     "ICU; International Components for Unicode; ICU4C; what's new; readme; read me; introduction; downloads; downloading; building; installation;" />
     12     <meta name="DESCRIPTION" content=
     13     "The introduction to the International Components for Unicode with instructions on building, installation, usage and other information about ICU." />
     14     <meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
     15 	<link type="text/css" href="./icu4c.css" rel="stylesheet"/>
     16   </head>
     17 
     18   <body class="readme">
     19     <h1>International Components for Unicode<br />
     20      <abbr title="International Components for Unicode">ICU</abbr> 4.2.1 ReadMe</h1>
     21 
     22     <p>Version: 2009 July 1st<br />
     23      Copyright &copy; 1997-2009 International Business Machines Corporation and
     24     others. All Rights Reserved.</p>
     25     <!-- Remember that there is a copyright at the end too -->
     26     <hr />
     27 
     28     <h2 class="TOC">Table of Contents</h2>
     29 
     30     <ul class="TOC">
     31       <li><a href="#Introduction">Introduction</a></li>
     32 
     33       <li><a href="#GettingStarted">Getting Started</a></li>
     34 
     35       <li><a href="#News">What Is New In This release?</a></li>
     36 
     37       <li><a href="#Download">How To Download the Source Code</a></li>
     38 
     39       <li><a href="#SourceCode">ICU Source Code Organization</a></li>
     40 
     41       <li>
     42         <a href="#HowToBuild">How To Build And Install ICU</a> 
     43 
     44         <ul >
     45           <li><a href="#HowToBuildSupported">Supported Platforms</a></li>
     46 
     47           <li><a href="#HowToBuildWindows">Windows</a></li>
     48 
     49           <li><a href="#HowToBuildCygwin">Cygwin</a></li>
     50 
     51           <li><a href="#HowToBuildUNIX">UNIX</a></li>
     52 
     53           <li><a href="#HowToBuildZOS">z/OS (os/390)</a></li>
     54 
     55           <li><a href="#HowToBuildOS400">IBM i family (IBM i, i5/OS, OS/400)</a></li>
     56 
     57 		  <li><a href="#HowToCrossCompileICU">How to Cross Compile ICU</a></li>
     58         </ul>
     59       </li>
     60 
     61 
     62       <li><a href="#HowToPackage">How To Package ICU</a></li>
     63 
     64       <li>
     65         <a href="#ImportantNotes">Important Notes About Using ICU</a> 
     66 
     67         <ul >
     68           <li><a href="#ImportantNotesMultithreaded">Using ICU in a Multithreaded
     69           Environment</a></li>
     70 
     71           <li><a href="#ImportantNotesWindows">Windows Platform</a></li>
     72 
     73           <li><a href="#ImportantNotesUNIX">UNIX Type Platforms</a></li>
     74         </ul>
     75       </li>
     76 
     77       <li>
     78         <a href="#PlatformDependencies">Platform Dependencies</a> 
     79 
     80         <ul >
     81           <li><a href="#PlatformDependenciesNew">Porting To A New
     82           Platform</a></li>
     83 
     84           <li><a href="#PlatformDependenciesImpl">Platform Dependent
     85           Implementations</a></li>
     86         </ul>
     87       </li>
     88     </ul>
     89     <hr />
     90 
     91     <h2><a name="Introduction" href="#Introduction" id=
     92     "Introduction">Introduction</a></h2>
     93 
     94     <p>Today's software market is a global one in which it is desirable to
     95     develop and maintain one application (single source/single binary) that
     96     supports a wide variety of languages. The International Components for
     97     Unicode (ICU) libraries provide robust and full-featured Unicode services on
     98     a wide variety of platforms to help this design goal. The ICU libraries
     99     provide support for:</p>
    100 
    101     <ul>
    102       <li>The latest version of the Unicode standard</li>
    103 
    104       <li>Character set conversions with support for over 220 codepages</li>
    105 
    106       <li>Locale data for more than 250 locales</li>
    107 
    108       <li>Language sensitive text collation (sorting) and searching based on the
    109       Unicode Collation Algorithm (=ISO 14651)</li>
    110 
    111       <li>Regular expression matching and Unicode sets</li>
    112 
    113       <li>Transformations for normalization, upper/lowercase, script
    114       transliterations (50+ pairs)</li>
    115 
    116       <li>Resource bundles for storing and accessing localized information</li>
    117 
    118       <li>Date/Number/Message formatting and parsing of culture specific
    119       input/output formats</li>
    120 
    121       <li>Calendar specific date and time manipulation</li>
    122 
    123       <li>Complex text layout for Arabic, Hebrew, Indic and Thai</li>
    124 
    125       <li>Text boundary analysis for finding characters, word and sentence
    126       boundaries</li>
    127     </ul>
    128 
    129     <p>ICU has a sister project ICU4J that extends the internationalization
    130     capabilities of Java to a level similar to ICU. The ICU C/C++ project is also
    131     called ICU4C when a distinction is necessary.</p>
    132 
    133     <h2><a name="GettingStarted" href="#GettingStarted" id=
    134     "GettingStarted">Getting started</a></h2>
    135 
    136     <p>This document describes how to build and install ICU on your machine. For
    137     other information about ICU please see the following table of links.<br />
    138      The ICU homepage also links to related information about writing
    139     internationalized software.</p>
    140 
    141     <table class="docTable" summary="These are some useful links regarding ICU and internationalization in general.">
    142       <caption>
    143         Here are some useful links regarding ICU and internationalization in
    144         general.
    145       </caption>
    146 
    147       <tr>
    148         <td>ICU, ICU4C &amp; ICU4J Homepage</td>
    149 
    150         <td><a href=
    151         "http://www.icu-project.org/">http://www.icu-project.org/</a></td>
    152       </tr>
    153 
    154       <tr>
    155         <td>FAQ - Frequently Asked Questions about ICU</td>
    156 
    157         <td><a href=
    158         "http://www.icu-project.org/userguide/icufaq.html">http://www.icu-project.org/userguide/icufaq.html</a></td>
    159       </tr>
    160 
    161       <tr>
    162         <td>ICU User's Guide</td>
    163 
    164         <td><a href=
    165         "http://www.icu-project.org/userguide/">http://www.icu-project.org/userguide/</a></td>
    166       </tr>
    167 
    168       <tr>
    169         <td>Download ICU Releases</td>
    170 
    171         <td><a href=
    172         "http://www.icu-project.org/download/">http://www.icu-project.org/download/</a></td>
    173       </tr>
    174 
    175       <tr>
    176         <td>ICU4C API Documentation Online</td>
    177 
    178         <td><a href=
    179         "http://www.icu-project.org/apiref/icu4c/">http://www.icu-project.org/apiref/icu4c/</a></td>
    180       </tr>
    181 
    182       <tr>
    183         <td>Online ICU Demos</td>
    184 
    185         <td><a href=
    186         "http://demo.icu-project.org/icu-bin/icudemos">http://demo.icu-project.org/icu-bin/icudemos</a></td>
    187       </tr>
    188 
    189       <tr>
    190         <td>Contacts and Bug Reports/Feature Requests</td>
    191 
    192         <td><a href=
    193         "http://www.icu-project.org/contacts.html">http://www.icu-project.org/contacts.html</a></td>
    194       </tr>
    195     </table>
    196 
    197     <p><strong>Important:</strong> Please make sure you understand the <a href=
    198     "license.html">Copyright and License Information</a>.</p>
    199 
    200     <h2><a name="News" href="#News" id="News">What is new in this release?</a></h2>
    201     
    202 
    203     <p>ICU for C/C++ version 4.2.1 is a maintenance release of 4.2, containing fixes and updates in both code and data. It does
    204      not introduce new API or functionality relative to 4.2. These changes will be rolled into the next release of ICU.  
    205      	The overall ticket used for the 4.2.1 release is <a href="http://bugs.icu-project.org/trac/ticket/7018">#7018</a>.
    206      	 Here is a list of the bug fixes included in 4.2.1, and the revisions used  4.2.1:
    207      </p>
    208      <ul>
    209      	<li>
    210      		<a href="http://bugs.icu-project.org/trac/ticket/6905">#6905</a> 
    211      		<a href="http://bugs.icu-project.org/trac/changeset/26084">r26084</a> &mdash;
    212      		Make sure cintltst and intltest pass w/o data
    213      	</li>
    214      	<li>
    215      		<a href="http://bugs.icu-project.org/trac/ticket/6919">#6919</a> 
    216      		<a href="http://bugs.icu-project.org/trac/changeset/26063">r26063</a> &mdash;
    217      		icu-config generation errors
    218      	</li>
    219      	<li>
    220      		<a href="http://bugs.icu-project.org/trac/ticket/6979">#6979</a> 
    221      		<a href="http://bugs.icu-project.org/trac/changeset/26138">r26138</a> &mdash;
    222      		Integrate CLDR 1.7.1
    223      	</li>
    224      	<li>
    225      		<a href="http://bugs.icu-project.org/trac/ticket/6980">#6980</a> 
    226      		<a href="http://bugs.icu-project.org/trac/changeset/26005">r26005</a> &mdash;
    227      		SimpleDateFormat serious compilation warnings
    228      	</li>
    229      	<li>
    230      		<a href="http://bugs.icu-project.org/trac/ticket/6908">#6908</a> 
    231      		<a href="http://bugs.icu-project.org/trac/changeset/25978">r25978</a> &mdash;
    232      		Numbering Systems - Malayalam msising digit 5
    233      	</li>
    234      	<li>
    235      		<a href="http://bugs.icu-project.org/trac/ticket/6990">#6990</a> 
    236      		<a href="http://bugs.icu-project.org/trac/changeset/26002">r26164</a> &mdash;
    237      		Update time zone data to version 2009j
    238      	</li>
    239      </ul>
    240     <p> 
    241      	The overall ticket used for the 4.2.0.1 release was <a href="http://bugs.icu-project.org/trac/ticket/6953">#6953</a>.
    242      	 Here is a list of the bug fixes included in 4.2.0.1, and the revisions used to patch 4.2.0.1:
    243      </p>
    244      <ul>
    245      	<li>
    246      		<a href="http://bugs.icu-project.org/trac/ticket/6929">#6929</a> 
    247      		<a href="http://bugs.icu-project.org/trac/changeset/26005">r26005</a> &mdash;
    248      		Symbol Renaming disabled on Windows by default
    249      	</li>
    250      	<li>
    251      		<a href="http://bugs.icu-project.org/trac/ticket/6936">#6936</a> 
    252      		<a href="http://bugs.icu-project.org/trac/changeset/26018">r26018</a> &mdash;
    253      		Data Building Difficulty on IBM i
    254      	</li>
    255      	<li>
    256      		<a href="http://bugs.icu-project.org/trac/ticket/6925">#6925</a> 
    257      		<a href="http://bugs.icu-project.org/trac/changeset/26002">r26002</a> &mdash;
    258      		Data Building Difficulty on IBM zOS under ASCII Mode
    259      	</li>
    260      </ul>
    261 
    262     <p>To see which APIs are new or changed in the 4.2 release, view the <a href="APIChangeReport.html">ICU4C API Change Report</a>. </p>
    263 
    264 
    265     <p><!-- The following list concentrates on <em>changes that affect existing
    266     applications migrating from previous ICU releases</em>. --> For more news about
    267     this release, see the <a href="http://www.icu-project.org/download/">ICU 4.2
    268     download page</a>.</p>
    269 
    270     <h3>Cross compilation and 64-bit support</h3>
    271     <p>ICU may now be cross compiled, see <a href="#HowToCrossCompileICU">How To Cross Compile ICU</a>.</p>
    272     <p>The --enable-64bit-libs and --disable-64bit-libs options are now deprecated. By default, ICU will build binaries using the compiler's default setting. To request 32 or 64 bit libraries, use --with-library-bits=32 or --with-library-bits=64.  For the old behavior, of attempting 64 bit libraries if possible, use --with-library-bits=64else32.   Intltest now reports the bit width that ICU is currently running under.</p>
    273 
    274 
    275     <h3>u_strToUTF32() and u_strFromUTF32() validate input UTF strings</h3>
    276     <p>
    277       Before ICU 4.2, the ustring.h functions u_strToUTF32() and u_strFromUTF32()
    278       were not fully validating their input strings.
    279       In particular, u_strToUTF32() passed unpaired surrogates through as
    280       surrogate code points, and u_strFromUTF32() accepted surrogate code points
    281       and passed them through as unpaired surrogates
    282       (which may by chance end up in a pair,
    283       indistinguishable from a supplementary code point).
    284       This is inconsistent with the function names,
    285       with the use of "UTF-16" and "UTF-32" in the documentation,
    286       and with their sibling UTF-8 functions which do validate fully.
    287     </p>
    288 
    289     <p>
    290       ICU 4.2 changes the u_strToUTF32() and u_strFromUTF32() implementations
    291       to treat malformed UTF input as an error.
    292       The API documentation has been clarified.
    293     </p>
    294 
    295     <p>
    296       Background: The implementation of these functions predates
    297       Unicode's tightening of the UTF specifications.
    298       We adapted the UTF-8 ustring.h functions and the ucnv_ converter functions
    299       but not these UTF-32 ustring.h functions.
    300       See the Unicode Standard chapter 3
    301       <a href="http://www.unicode.org/versions/Unicode5.0.0/ch03.pdf#G7404">section 3.9 Unicode Encoding Forms</a>
    302       for details, in particular definitions D79 Unicode encoding form
    303       and D80 Unicode string.
    304     </p>
    305 
    306     <h2><a name="Download" href="#Download" id="Download">How To Download the
    307     Source Code</a></h2>
    308 
    309     <p>There are two ways to download ICU releases:</p>
    310 
    311     <ul>
    312       <li><strong>Official Release Snapshot:</strong><br />
    313        If you want to use ICU (as opposed to developing it), you should download
    314       an official packaged version of the ICU source code. These versions are
    315       tested more thoroughly than day-to-day development builds of the system,
    316       and they are packaged in zip and tar files for convenient download. These
    317       packaged files can be found at <a href=
    318       "http://www.icu-project.org/download/">http://www.icu-project.org/download/</a>.<br />
    319        The packaged snapshots are named <strong>icu-nnnn.zip</strong> or
    320       <strong>icu-nnnn.tgz</strong>, where nnnn is the version number. The .zip
    321       file is used for Windows platforms, while the .tgz file is preferred on
    322       most other platforms.<br />
    323        Please unzip this file. </li>
    324 
    325       <li><strong>Subversion Source Repository:</strong><br />
    326        If you are interested in developing features, patches, or bug fixes for
    327       ICU, you should probably be working with the latest version of the ICU
    328       source code. You will need to check the code out of our Subversion repository to
    329       ensure that you have the most recent version of all of the files. See our
    330       <a href="http://www.icu-project.org/repository/">source
    331       repository</a> for details.</li>
    332     </ul>
    333 
    334     <h2><a name="SourceCode" href="#SourceCode" id="SourceCode">ICU Source Code
    335     Organization</a></h2>
    336 
    337     <p>In the descriptions below, <strong><i>&lt;ICU&gt;</i></strong> is the full
    338     path name of the ICU directory (the top level directory from the distribution
    339     archives) in your file system. You can also view the <a href=
    340     "http://www.icu-project.org/userguide/design.html">ICU Architectural
    341     Design</a> section of the User's Guide to see which libraries you need for
    342     your software product. You need at least the data (<code>[lib]icudt</code>)
    343     and the common (<code>[lib]icuuc</code>) libraries in order to use ICU.</p>
    344 
    345     <table class="docTable" summary="The following files describe the code drop.">
    346       <caption>
    347         The following files describe the code drop.
    348       </caption>
    349 
    350       <tr>
    351         <th scope="col">File</th>
    352 
    353         <th scope="col">Description</th>
    354       </tr>
    355 
    356       <tr>
    357         <td>readme.html</td>
    358 
    359         <td>Describes the International Components for Unicode (this file)</td>
    360       </tr>
    361 
    362       <tr>
    363         <td>license.html</td>
    364 
    365         <td>Contains the text of the ICU license</td>
    366       </tr>
    367     </table>
    368 
    369     <p><br />
    370     </p>
    371 
    372     <table class="docTable" summary=
    373     "The following directories contain source code and data files.">
    374       <caption>
    375         The following directories contain source code and data files.
    376       </caption>
    377 
    378       <tr>
    379         <th scope="col">Directory</th>
    380 
    381         <th scope="col">Description</th>
    382       </tr>
    383 
    384       <tr>
    385         <td><i>&lt;ICU&gt;</i>/source/<b>common</b>/</td>
    386 
    387         <td>The core Unicode and support functionality, such as resource bundles,
    388         character properties, locales, codepage conversion, normalization,
    389         Unicode properties, Locale, and UnicodeString.</td>
    390       </tr>
    391 
    392       <tr>
    393         <td><i>&lt;ICU&gt;</i>/source/<b>i18n</b>/</td>
    394 
    395         <td>Modules in i18n are generally the more data-driven, that is to say
    396         resource bundle driven, components. These deal with higher-level
    397         internationalization issues such as formatting, collation, text break
    398         analysis, and transliteration.</td>
    399       </tr>
    400 
    401       <tr>
    402         <td><i>&lt;ICU&gt;</i>/source/<b>layout</b>/</td>
    403 
    404         <td>Contains the ICU layout engine (not a rasterizer).</td>
    405       </tr>
    406 
    407       <tr>
    408         <td><i>&lt;ICU&gt;</i>/source/<b>io</b>/</td>
    409 
    410         <td>Contains the ICU I/O library.</td>
    411       </tr>
    412 
    413       <tr>
    414         <td><i>&lt;ICU&gt;</i>/source/<b>data</b>/</td>
    415 
    416         <td>
    417           <p>This directory contains the source data in text format, which is
    418           compiled into binary form during the ICU build process. It contains
    419           several subdirectories, in which the data files are grouped by
    420           function. Note that the build process must be run again after any
    421           changes are made to this directory.</p>
    422 
    423           <p>If some of the following directories are missing, it's probably
    424           because you got an official download. If you need the data source files
    425           for customization, then please download the ICU source code from <a
    426           href="http://www.icu-project.org/repository/">subversion</a>.</p>
    427 
    428           <ul>
    429             <li><b>in/</b> A directory that contains a pre-built data library for
    430             ICU. A standard source code package will contain this file without
    431             several of the following directories. This is to simplify the build
    432             process for the majority of users and to reduce platform porting
    433             issues.</li>
    434 
    435             <li><b>brkitr/</b> Data files for character, word, sentence, title
    436             casing and line boundary analysis.</li>
    437 
    438             <li><b>locales/</b> These .txt files contain ICU language and
    439             culture-specific localization data. Two special bundles are
    440             <b>root</b>, which is the fallback data and parent of other bundles,
    441             and <b>index</b>, which contains a list of installed bundles. The
    442             makefile <b>resfiles.mk</b> contains the list of resource bundle
    443             files.</li>
    444 
    445             <li><b>mappings/</b> Here are the code page converter tables. These
    446             .ucm files contain mappings to and from Unicode. These are compiled
    447             into .cnv files. <b>convrtrs.txt</b> is the alias mapping table from
    448             various converter name formats to ICU internal format and vice versa.
    449             It produces cnvalias.icu. The makefiles <b>ucmfiles.mk,
    450             ucmcore.mk,</b> and <b>ucmebcdic.mk</b> contain the list of
    451             converters to be built.</li>
    452 
    453             <li><b>translit/</b> This directory contains transliterator rules as
    454             resource bundles, a makefile <b>trnsfiles.mk</b> containing the list
    455             of installed system translitaration files, and as well the special
    456             bundle <b>translit_index</b> which lists the system transliterator
    457             aliases.</li>
    458 
    459             <li><b>unidata/</b> This directory contains the Unicode data files.
    460             Please see <a href=
    461             "http://www.unicode.org/">http://www.unicode.org/</a> for more
    462             information.</li>
    463 
    464             <li><b>misc/</b> The misc directory contains other data files which
    465             did not fit into the above categories. Currently it only contains
    466             time zone information, and a name preperation file for <a href=
    467             "http://www.ietf.org/rfc/rfc3490.txt">IDNA</a>.</li>
    468 
    469             <li><b>out/</b> This directory contains the assembled memory mapped
    470             files.</li>
    471 
    472             <li><b>out/build/</b> This directory contains intermediate (compiled)
    473             files, such as .cnv, .res, etc.</li>
    474           </ul>
    475 
    476           <p>If you are creating a special ICU build, you can set the ICU_DATA
    477           environment variable to the out/ or the out/build/ directories, but
    478           this is generally discouraged because most people set it incorrectly.
    479           You can view the <a href=
    480           "http://www.icu-project.org/userguide/icudata.html">ICU Data
    481           Management</a> section of the ICU User's Guide for details.</p>
    482         </td>
    483       </tr>
    484 
    485       <tr>
    486         <td><i>&lt;ICU&gt;</i>/source/test/<b>intltest</b>/</td>
    487 
    488         <td>A test suite including all C++ APIs. For information about running
    489         the test suite, see the build instructions specific to your platform
    490         later in this document.</td>
    491       </tr>
    492 
    493       <tr>
    494         <td><i>&lt;ICU&gt;</i>/source/test/<b>cintltst</b>/</td>
    495 
    496         <td>A test suite written in C, including all C APIs. For information
    497         about running the test suite, see the build instructions specific to your
    498         platform later in this document.</td>
    499       </tr>
    500 
    501       <tr>
    502         <td><i>&lt;ICU&gt;</i>/source/test/<b>iotest</b>/</td>
    503 
    504         <td>A test suite written in C and C++ to test the icuio library. For
    505         information about running the test suite, see the build instructions
    506         specific to your platform later in this document.</td>
    507       </tr>
    508 
    509       <tr>
    510         <td><i>&lt;ICU&gt;</i>/source/test/<b>testdata</b>/</td>
    511 
    512         <td>Source text files for data, which are read by the tests. It contains
    513         the subdirectories <b>out/build/</b> which is used for intermediate
    514         files, and <b>out/</b> which contains <b>testdata.dat.</b></td>
    515       </tr>
    516 
    517       <tr>
    518         <td><i>&lt;ICU&gt;</i>/source/<b>tools</b>/</td>
    519 
    520         <td>Tools for generating the data files. Data files are generated by
    521         invoking <i>&lt;ICU&gt;</i>/source/data/build/makedata.bat on Win32 or
    522         <i>&lt;ICU&gt;</i>/source/make on UNIX.</td>
    523       </tr>
    524 
    525       <tr>
    526         <td><i>&lt;ICU&gt;</i>/source/<b>samples</b>/</td>
    527 
    528         <td>Various sample programs that use ICU</td>
    529       </tr>
    530 
    531       <tr>
    532         <td><i>&lt;ICU&gt;</i>/source/<b>extra</b>/</td>
    533 
    534         <td>Non-supported API additions. Currently, it contains the 'uconv' tool
    535         to perform codepage conversion on files.</td>
    536       </tr>
    537 
    538       <tr>
    539         <td><i>&lt;ICU&gt;</i>/<b>packaging</b>/</td>
    540 
    541         <td>This directory contain scripts and tools for packaging the final
    542         ICU build for various release platforms.</td>
    543       </tr>
    544 
    545       <tr>
    546         <td><i>&lt;ICU&gt;</i>/source/<b>config</b>/</td>
    547 
    548         <td>Contains helper makefiles for platform specific build commands. Used
    549         by 'configure'.</td>
    550       </tr>
    551 
    552       <tr>
    553         <td><i>&lt;ICU&gt;</i>/source/<b>allinone</b>/</td>
    554 
    555         <td>Contains top-level ICU workspace and project files, for instance to
    556         build all of ICU under one MSVC project.</td>
    557       </tr>
    558 
    559       <tr>
    560         <td><i>&lt;ICU&gt;</i>/<b>include</b>/</td>
    561 
    562         <td>Contains the headers needed for developing software that uses ICU on
    563         Windows.</td>
    564       </tr>
    565 
    566       <tr>
    567         <td><i>&lt;ICU&gt;</i>/<b>lib</b>/</td>
    568 
    569         <td>Contains the import libraries for linking ICU into your Windows
    570         application.</td>
    571       </tr>
    572 
    573       <tr>
    574         <td><i>&lt;ICU&gt;</i>/<b>bin</b>/</td>
    575 
    576         <td>Contains the libraries and executables for using ICU on Windows.</td>
    577       </tr>
    578     </table>
    579     <!-- end of ICU structure ==================================== -->
    580 
    581     <h2><a name="HowToBuild" href="#HowToBuild" id="HowToBuild">How To Build And
    582     Install ICU</a></h2>
    583 
    584     <h3><a name="HowToBuildSupported" href="#HowToBuildSupported" id=
    585     "HowToBuildSupported">Supported Platforms</a></h3>
    586 
    587     <table class="rtable" summary=
    588     "ICU can be built on many platforms.">
    589       <caption>
    590         Here is the status of building ICU on several different platforms.
    591       </caption>
    592 
    593         
    594             <tr>
    595                 <td>AIX 6.1 (power, 64-bit)</td>
    596                 <td>VisualAge 9</td>
    597                 <td class="works">Frequently Tested</td>
    598 
    599             </tr>
    600         
    601             <tr>
    602                 <td>HP/UX 11iv3 (ia64, 64-bit)</td>
    603                 <td>aCC A.06.15</td>
    604                 <td class="works">Frequently Tested</td>
    605 
    606             </tr>
    607         
    608             <tr>
    609                 <td>Red Hat Enterprise Linux 5 (x86, 32-bit)</td>
    610                 <td>gcc 4.1.2</td>
    611                 <td class="works">Frequently Tested</td>
    612 
    613             </tr>
    614         
    615             <tr>
    616                 <td>Red Hat Enterprise Linux 5 (x86, 64-bit)</td>
    617                 <td>gcc 4.1.2</td>
    618                 <td class="works">Frequently Tested</td>
    619 
    620             </tr>
    621         
    622             <tr>
    623                 <td>Solaris 10 (sparc, 64-bit)</td>
    624                 <td>Sun Studio 12</td>
    625                 <td class="works">Frequently Tested</td>
    626 
    627             </tr>
    628         
    629             <tr>
    630                 <td>Windows Vista SP1 (x86, 32-bit)</td>
    631                 <td>MS Visual Studio 9</td>
    632                 <td class="works">Frequently Tested</td>
    633 
    634             </tr>
    635         
    636             <tr>
    637                 <td>AIX 5.2 (power, 64-bit)</td>
    638                 <td>VisualAge 6</td>
    639                 <td class="works">Frequently Tested</td>
    640 
    641             </tr>
    642         
    643             <tr>
    644                 <td>AIX 5.3 (power, 64-bit)</td>
    645                 <td>VisualAge 8</td>
    646                 <td class="works">Frequently Tested</td>
    647 
    648             </tr>
    649         
    650             <tr>
    651                 <td>AIX 6.1 (power, 64-bit)</td>
    652                 <td>gcc 4.2.4</td>
    653                 <td class="works">Frequently Tested</td>
    654 
    655             </tr>
    656         
    657             <tr>
    658                 <td>HP/UX 11i (hppa, 64-bit)</td>
    659                 <td>aCC A.03.85</td>
    660                 <td class="works">Frequently Tested</td>
    661 
    662             </tr>
    663         
    664             <tr>
    665                 <td>MacOSX 10.5 Leopard (x86, 32-bit)</td>
    666                 <td>gcc 4.0.1</td>
    667                 <td class="works">Frequently Tested</td>
    668 
    669             </tr>
    670         
    671             <tr>
    672                 <td>MacOSX 10.5 Leopard (x86, 64-bit)</td>
    673                 <td>gcc 4.0.1</td>
    674                 <td class="works">Frequently Tested</td>
    675 
    676             </tr>
    677         
    678             <tr>
    679                 <td>Red Hat Enterprise Linux 4.2 (x86, 32-bit)</td>
    680                 <td>gcc 3.4.6</td>
    681                 <td class="works">Frequently Tested</td>
    682 
    683             </tr>
    684         
    685             <tr>
    686                 <td>Red Hat Enterprise Linux 4u7 (x86, 32-bit)</td>
    687                 <td>gcc 4.2.4</td>
    688                 <td class="works">Frequently Tested</td>
    689 
    690             </tr>
    691         
    692             <tr>
    693                 <td>Solaris 10 (sparc, 64-bit)</td>
    694                 <td>gcc 4.2.1</td>
    695                 <td class="works">Frequently Tested</td>
    696 
    697             </tr>
    698         
    699             <tr>
    700                 <td>SuSE 10 (x86, 64-bit)</td>
    701                 <td>gcc</td>
    702                 <td class="works">Frequently Tested</td>
    703 
    704             </tr>
    705         
    706             <tr>
    707                 <td>Windows 2000 Professional (x86, 32-bit)</td>
    708                 <td>MS Visual Studio 2003 via Cygwin</td>
    709                 <td class="works">Frequently Tested</td>
    710 
    711             </tr>
    712         
    713             <tr>
    714                 <td>Windows 2000 Professional (x86, 32-bit)</td>
    715                 <td>gcc via Cygwin</td>
    716                 <td class="works">Frequently Tested</td>
    717 
    718             </tr>
    719         
    720             <tr>
    721                 <td>Windows Server 2003 (x86, 64-bit)</td>
    722                 <td>MS Visual Studio 8 via Cygwin</td>
    723                 <td class="works">Frequently Tested</td>
    724 
    725             </tr>
    726         
    727             <tr>
    728                 <td>Windows Server 2008 (x86, 64-bit)</td>
    729                 <td>MS Visual Studio 9</td>
    730                 <td class="works">Frequently Tested</td>
    731 
    732             </tr>
    733         
    734             <tr>
    735                 <td>Windows XP Professional (x86, 32-bit)</td>
    736                 <td>MS Visual Studio 9</td>
    737                 <td class="works">Frequently Tested</td>
    738 
    739             </tr>
    740         
    741             <tr class="broken">
    742                 <td>Red Hat Enterprise Linux 5 (x86, 32-bit)</td>
    743                 <td>icc 11.0</td>
    744                 <td class="broken">Broken <b><a href="http://bugs.icu-project.org/trac/ticket/6894">#6894</a></b></td>
    745 		
    746             </tr>
    747         
    748             <tr class="broken">
    749                 <td>SuSe Linux 7.2 (x86, 32-bit)</td>
    750                 <td>icc 9.0</td>
    751                 <td class="broken">Broken <b><a href="http://bugs.icu-project.org/trac/ticket/6888">#6888</a></b></td>
    752 
    753             </tr>
    754         
    755             <tr class="broken">
    756                 <td>Windows Server 2008 (x86, 64-bit)</td>
    757                 <td>MS Visual Studio 9 via Cygwin</td>
    758                 <td class="broken">Broken <b><a href="http://bugs.icu-project.org/trac/ticket/6890">#6890</a></b></td>
    759 
    760             </tr>
    761         
    762 
    763 <!-- end IBM lab data -->
    764 
    765       <tr class="rarely">
    766         <td>z/OS 1.7</td>
    767 
    768         <td>cxx 1.7</td>
    769 
    770         <td>Rarely tested</td>
    771       </tr>
    772 
    773       <tr class="rarely">
    774         <td>Cygwin</td>
    775 
    776         <td>gcc 3.4.4</td>
    777 
    778         <td>Rarely tested</td>
    779       </tr>
    780 
    781       <tr class="rarely">
    782         <td>IBM i family (IBM i, i5/OS, OS/400)</td>
    783 
    784         <td>iCC</td>
    785 
    786         <td>Rarely tested (<b>Please read important news on the ICU web site.</b>)</td>
    787       </tr>
    788 
    789 
    790       <tr class="rarely">
    791         <td>MinGW</td>
    792 
    793         <td>gcc</td>
    794 
    795         <td>Rarely tested</td>
    796       </tr>
    797 
    798       <tr class="rarely">
    799         <td>NetBSD, OpenBSD, FreeBSD</td>
    800 
    801         <td>gcc</td>
    802 
    803         <td>Rarely tested</td>
    804       </tr>
    805 
    806       <tr class="rarely">
    807         <td>SUSE Linux Enterprise Server 9 (PowerPC)</td>
    808 
    809         <td>IBM XL C/C++ 8.0</td>
    810 
    811         <td>Rarely tested</td>
    812       </tr>
    813 
    814       <tr class="rarely">
    815         <td>QNX</td>
    816 
    817         <td>gcc</td>
    818 
    819         <td>Rarely tested</td>
    820       </tr>
    821 
    822       <tr class="rarely">
    823         <td>BeOS/Haiku</td>
    824 
    825         <td>gcc</td>
    826 
    827         <td>Rarely tested</td>
    828       </tr>
    829 
    830       <tr class="rarely">
    831         <td>SGI/IRIX</td>
    832 
    833         <td>MIPSpro CC</td>
    834 
    835         <td>Rarely tested</td>
    836       </tr>
    837 
    838       <tr class="rarely">
    839         <td>Tru64 (OSF)</td>
    840 
    841         <td>Compaq's cxx compiler</td>
    842 
    843         <td>Rarely tested</td>
    844       </tr>
    845 
    846       <tr class="rarely">
    847         <td>MP-RAS</td>
    848 
    849         <td>NCR MP-RAS C/C++ Compiler</td>
    850 
    851         <td>Rarely tested</td>
    852       </tr>
    853     </table>
    854 
    855     <p><br />
    856     </p>
    857 
    858     <h4>Key to testing frequency</h4>
    859 
    860     <dl>
    861       <dt><i>Reference platform</i></dt>
    862 
    863       <dd>ICU will work on these platforms with these compilers</dd>
    864 
    865       <dt><i>Regularly tested</i></dt>
    866 
    867       <dd>ICU should work on these platforms with these compilers</dd>
    868 
    869       <dt><i>Rarely tested</i></dt>
    870 
    871       <dd>ICU has been ported to these platforms but may not have been tested
    872       there recently</dd>
    873     </dl>
    874 
    875     <h3><a name="HowToBuildWindows" href="#HowToBuildWindows" id=
    876     "HowToBuildWindows">How To Build And Install On Windows</a></h3>
    877 
    878     <p>Building International Components for Unicode requires:</p>
    879 
    880     <ul>
    881       <li>Microsoft Windows 2000 or above</li>
    882 
    883       <li>Microsoft Visual C++ 2005</li>
    884 
    885       <li><a href="#HowToBuildCygwin">Cygwin</a> is required when other versions
    886       of Microsoft Visual C++ and other compilers are used to build ICU.</li>
    887     </ul>
    888 
    889     <p>The steps are:</p>
    890 
    891     <ol>
    892       <li>Unzip the icu-XXXX.zip file into any convenient location. Using command
    893       line zip, type "unzip -a icu-XXXX.zip -d drive:\directory", or just use
    894       WinZip.</li>
    895 
    896       <li>Be sure that the ICU binary directory, <i>&lt;ICU&gt;</i>\bin\, is
    897       included in the <strong>PATH</strong> environment variable. The tests will
    898       not work without the location of the ICU DLL files in the path.</li>
    899 
    900       <li>Open the "<i>&lt;ICU&gt;</i>\source\allinone\allinone.sln" workspace
    901       file in Microsoft Visual Studio 2003. (This solution includes all the
    902       International Components for Unicode libraries, necessary ICU building
    903       tools, and the test suite projects). Please see the <a href=
    904       "#HowToBuildWindowsCommandLine">command line note below</a> if you want to
    905       build from the command line instead.</li>
    906 
    907       <li>Set the active platform to "Win32" or "x64" (See <a href="#HowToBuildWindowsPlatform">Windows platform note</a> below) 
    908       and configuration to "Debug" or "Release" (See <a href="#HowToBuildWindowsConfig">Windows configuration note</a> below).</li>
    909 
    910       <li>Choose the "Build" menu and select "Rebuild Solution". If you want to
    911       build the Debug and Release at the same time, see the <a href=
    912       "#HowToBuildWindowsBatch">batch configuration note</a> below.</li>
    913 
    914       <li>Run the C++ test suite, "intltest". To do this: set the active startup
    915       project to "intltest", and press Ctrl+F5 to run it. Make sure that it
    916       passes without any errors.</li>
    917 
    918       <li>Run the C test suite, "cintltst". To do this: set the active startup
    919       project to "cintltst", and press Ctrl+F5 to run it. Make sure that it
    920       passes without any errors.</li>
    921 
    922       <li>Run the I/O test suite, "iotest". To do this: set the active startup
    923       project to "iotest", and press Ctrl+F5 to run it. Make sure that it passes
    924       without any errors.</li>
    925 
    926       <li>You are now able to develop applications with ICU by using the
    927       libraries and tools in <i>&lt;ICU&gt;</i>\bin\. The headers are in
    928       <i>&lt;ICU&gt;</i>\include\ and the link libraries are in
    929       <i>&lt;ICU&gt;</i>\lib\. To install the ICU runtime on a machine, or ship
    930       it with your application, copy the needed components from
    931       <i>&lt;ICU&gt;</i>\bin\ to a location on the system PATH or to your
    932       application directory.</li>
    933     </ol>
    934 
    935     <p><a name="HowToBuildWindowsCommandLine" id=
    936     "HowToBuildWindowsCommandLine"><strong>Using MSDEV At The Command Line
    937     Note:</strong></a> You can build ICU from the command line. Assuming that you
    938     have properly installed Microsoft Visual C++ to support command line
    939     execution, you can run the following command, 'devenv.com
    940     <i>&lt;ICU&gt;</i>\source\allinone\allinone.sln /build "Win32|Release"'. You can also
    941     use Cygwin with this compiler to build ICU, and you can refer to the <a href=
    942     "#HowToBuildCygwin">How To Build And Install On Windows with Cygwin</a>
    943     section for more details.</p>
    944     
    945     <p><a name="HowToBuildWindowsPlatform" id=
    946     "HowToBuildWindowsPlatform"><strong>Setting Active Platform
    947     Note:</strong></a> Even though you are able to select "x64" as the active platform, if your operating system is 
    948     not a 64 bit version of Windows, the build will fail. To set the active platform, two different possibilities are:</p>
    949 
    950     <ul>
    951       <li>Choose "Build" menu, select "Configuration Manager...", and select
    952       "Win32" or "x64" for the Active Platform Solution.</li>
    953 
    954       <li>Another way is to select the desired build configuration from "Solution
    955       Platforms" dropdown menu from the standard toolbar. It will say
    956       "Win32" or "x64" in the dropdown list.</li>
    957     </ul>
    958 
    959     <p><a name="HowToBuildWindowsConfig" id=
    960     "HowToBuildWindowsConfig"><strong>Setting Active Configuration
    961     Note:</strong></a> To set the active configuration, two different
    962     possibilities are:</p>
    963 
    964     <ul>
    965       <li>Choose "Build" menu, select "Configuration Manager...", and select
    966       "Release" or "Debug" for the Active Configuration Solution.</li>
    967 
    968       <li>Another way is to select the desired build configuration from "Solution
    969       Configurations" dropdown menu from the standard toolbar. It will say
    970       "Release" or "Debug" in the dropdown list.</li>
    971     </ul>
    972 
    973     <p><a name="HowToBuildWindowsBatch" id="HowToBuildWindowsBatch"><strong>Batch
    974     Configuration Note:</strong></a> If you want to build the Win32 and x64 platforms and 
    975     Debug and Release configurations at the same time, choose "Build" menu, and select "Batch
    976     Build...". Click the "Select All" button, and then click the "Rebuild"
    977     button.</p>
    978 
    979     <h3><a name="HowToBuildCygwin" href="#HowToBuildCygwin" id=
    980     "HowToBuildCygwin">How To Build And Install On Windows with Cygwin</a></h3>
    981 
    982     <p>Building International Components for Unicode with this configuration
    983     requires:</p>
    984 
    985     <ul>
    986       <li>Microsoft 2000 or above</li>
    987 
    988       <li>Microsoft Visual C++ 2003 or above (when gcc isn't used).</li>
    989 
    990       <li>
    991         Cygwin with the following installed: 
    992 
    993         <ul>
    994           <li>bash</li>
    995 
    996           <li>GNU make</li>
    997 
    998           <li>man (if you plan to look at the man pages)</li>
    999         </ul>
   1000       </li>
   1001     </ul>
   1002 
   1003     <p>There are two ways you can build ICU with Cygwin. You can build with gcc
   1004     or Microsoft Visual C++. If you use gcc, the resulting libraries and tools
   1005     will depend on the Cygwin environment. If you use Microsoft Visual C++, the
   1006     resulting libraries and tools do not depend on Cygwin and can be more easily
   1007     distributed to other Windows computers (the generated man pages and shell
   1008     scripts still need Cygwin). To build with gcc, please follow the "<a href=
   1009     "#HowToBuildUNIX">How To Build And Install On UNIX</a>" instructions, while
   1010     you are inside a Cygwin bash shell. To build with Microsoft Visual C++,
   1011     please use the following instructions:</p>
   1012 
   1013     <ol>
   1014       <li>Start the Windows "Command Prompt" window. This is different from the
   1015       gcc build, which requires the Cygwin Bash command prompt. The Microsoft
   1016       Visual C++ compiler will not work with a bash command prompt.</li>
   1017 
   1018       <li>If the computer isn't set up to use Visual C++ from the command line,
   1019       you need to run vcvars32.bat. For example "<tt>C:\Program Files\Microsoft
   1020       Visual Studio 8\VC\bin\vcvars32.bat</tt>" can be used for 32-bit builds
   1021       <strong>or</strong> "<tt>C:\Program Files (x86)\Microsoft Visual Studio
   1022       8\VC\bin\amd64\vcvarsamd64.bat</tt>" can be used for 64-bit builds on
   1023       Windows x64.</li>
   1024 
   1025       <li>Unzip the icu-XXXX.zip file into any convenient location. Using command
   1026       line zip, type "unzip -a icu-XXXX.zip -d drive:\directory", or just use
   1027       WinZip.</li>
   1028 
   1029       <li>Change directory to "icu/source", which is where you unzipped ICU.</li>
   1030 
   1031       <li>Run "<tt>bash <a href="source/runConfigureICU">./runConfigureICU</a>
   1032       Cygwin/MSVC</tt>" (See <a href="#HowToWindowsConfigureICU">Windows
   1033       configuration note</a> and non-functional configure options below).</li>
   1034 
   1035       <li>Type <tt>"make"</tt> to compile the libraries and all the data files.
   1036       This make command should be GNU make.</li>
   1037 
   1038       <li>Optionally, type <tt>"make check"</tt> to run the test suite, which
   1039       checks for ICU's functionality integrity (See <a href=
   1040       "#HowToTestWithoutGmake">testing note</a> below).</li>
   1041 
   1042       <li>Type <tt>"make install"</tt> to install ICU. If you used the --prefix=
   1043       option on configure or runConfigureICU, ICU will be installed to the
   1044       directory you specified. (See <a href="#HowToInstallICU">installation
   1045       note</a> below).</li>
   1046     </ol>
   1047 
   1048     <p><a name="HowToWindowsConfigureICU" id=
   1049     "HowToWindowsConfigureICU"><strong>Configuring ICU on Windows
   1050     NOTE:</strong></a> In addition to the Unix <a href=
   1051     "#HowToConfigureICU">configuration note</a> the following configure options
   1052     currently do not work on Windows with Microsoft's compiler. Some options can
   1053     work by manually editing <tt>icu/source/common/unicode/pwin32.h</tt>, but
   1054     manually editing the files is not recommended.</p>
   1055 
   1056     <ul>
   1057       <li><tt>--disable-renaming</tt></li>
   1058 
   1059       <li><tt>--disable-threading</tt></li>
   1060 
   1061       <li><tt>--enable-tracing</tt></li>
   1062 
   1063       <li><tt>--enable-rpath</tt></li>
   1064 
   1065       <li><tt>--with-iostream</tt></li>
   1066 
   1067       <li><tt>--enable-static</tt> (Requires that U_STATIC_IMPLEMENTATION be
   1068       defined in user code that links against ICU's static libraries.)</li>
   1069 
   1070       <li><tt>--with-data-packaging=files</tt> (The pkgdata tool currently does
   1071       not work in this mode. Manual packaging is required to use this mode.)</li>
   1072     </ul>
   1073 
   1074     <h3><a name="HowToBuildUNIX" href="#HowToBuildUNIX" id="HowToBuildUNIX">How
   1075     To Build And Install On UNIX</a></h3>
   1076 
   1077     <p>Building International Components for Unicode on UNIX requires:</p>
   1078 
   1079     <ul>
   1080       <li>A C++ compiler installed on the target machine (for example: gcc, CC,
   1081       xlC_r, aCC, cxx, etc...).</li>
   1082 
   1083       <li>An ANSI C compiler installed on the target machine (for example:
   1084       cc).</li>
   1085 
   1086       <li>A recent version of GNU make (3.80+).</li>
   1087 
   1088       <li>For a list of z/OS tools please view the <a href="#HowToBuildZOS">z/OS
   1089       build section</a> of this document for further details.</li>
   1090     </ul>
   1091 
   1092     <p>Here are the steps to build ICU:</p>
   1093 
   1094     <ol>
   1095       <li>Decompress the icu-<i>X</i>.<i>Y</i>.tgz (or
   1096       icu-<i>X</i>.<i>Y</i>.tar.gz) file. For example, <tt>"gunzip -d &lt;
   1097       icu-<i>X</i>.<i>Y</i>.tgz | tar xvf -"</tt></li>
   1098 
   1099       <li>Change directory to the "icu/source".</li>
   1100 
   1101       <li>Run <tt>"chmod +x runConfigureICU configure install-sh"</tt> because
   1102       these files may have the wrong permissions.</li>
   1103 
   1104       <li>Run the <tt><a href="source/runConfigureICU">runConfigureICU</a></tt>
   1105       script for your platform. (See <a href="#HowToConfigureICU">configuration
   1106       note</a> below).</li>
   1107 
   1108       <li>Type <tt>"gmake"</tt> (or "make" if GNU make is the default make on
   1109       your platform) to compile the libraries and all the data files. The proper
   1110       name of the GNU make command is printed at the end of the configuration
   1111       run, as in "You must use gmake to compile ICU".</li>
   1112 
   1113       <li>Optionally, type <tt>"gmake check"</tt> to run the test suite, which
   1114       checks for ICU's functionality integrity (See <a href=
   1115       "#HowToTestWithoutGmake">testing note</a> below).</li>
   1116 
   1117       <li>Type <tt>"gmake install"</tt> to install ICU. If you used the --prefix=
   1118       option on configure or runConfigureICU, ICU will be installed to the
   1119       directory you specified. (See <a href="#HowToInstallICU">installation
   1120       note</a> below).</li>
   1121     </ol>
   1122 
   1123     <p><a name="HowToConfigureICU" id="HowToConfigureICU"><strong>Configuring ICU
   1124     NOTE:</strong></a> Type <tt>"./runConfigureICU --help"</tt> for help on how
   1125     to run it and a list of supported platforms. You may also want to type
   1126     <tt>"./configure --help"</tt> to print the available configure options that
   1127     you may want to give runConfigureICU. If you are not using the
   1128     runConfigureICU script, or your platform is not supported by the script, you
   1129     may need to set your CC, CXX, CFLAGS and CXXFLAGS environment variables, and
   1130     type <tt>"./configure"</tt>. 
   1131     HP-UX users, please see this <a href="#ImportantNotesHPUX">note regarding
   1132     HP-UX multithreaded build issues</a> with newer compilers. Solaris users,
   1133     please see this <a href="#ImportantNotesSolaris">note regarding Solaris
   1134     multithreaded build issues</a>.</p>
   1135 
   1136     <p>ICU is built with strict compiler warnings enabled by default.  If this
   1137     causes excessive numbers of warnings on your platform, use the --disable-strict
   1138     option to configure to reduce the warning level.</p>
   1139 
   1140     <p><a name="HowToTestWithoutGmake" id="HowToTestWithoutGmake"><strong>Running
   1141     The Tests From The Command Line NOTE:</strong></a> You may have to set
   1142     certain variables if you with to run test programs individually, that is
   1143     apart from "gmake check". The environment variable <strong>ICU_DATA</strong>
   1144     can be set to the full pathname of the data directory to indicate where the
   1145     locale data files and conversion mapping tables are when you are not using
   1146     the shared library (e.g. by using the .dat archive or the individual data
   1147     files). The trailing "/" is required after the directory name (e.g.
   1148     "$Root/source/data/out/" will work, but the value "$Root/source/data/out" is
   1149     not acceptable). You do not need to set <strong>ICU_DATA</strong> if the
   1150     complete shared data library is in your library path.</p>
   1151 
   1152     <p><a name="HowToInstallICU" id="HowToInstallICU"><strong>Installing ICU
   1153     NOTE:</strong></a> Some platforms use package management tools to control the
   1154     installation and uninstallation of files on the system, as well as the
   1155     integrity of the system configuration. You may want to check if ICU can be
   1156     packaged for your package management tools by looking into the "packaging"
   1157     directory. (Please note that if you are using a snapshot of ICU from Subversion, it
   1158     is probable that the packaging scripts or related files are not up to date
   1159     with the contents of ICU at this time, so use them with caution).</p>
   1160 
   1161     <h3><a name="HowToBuildZOS" href="#HowToBuildZOS" id="HowToBuildZOS">How To
   1162     Build And Install On z/OS (OS/390)</a></h3>
   1163 
   1164     <p>You can install ICU on z/OS or OS/390 (the previous name of z/OS), but IBM
   1165     tests only the z/OS installation. You install ICU in a z/OS UNIX system
   1166     services file system such as HFS or zFS. On this platform, it is important
   1167     that you understand a few details:</p>
   1168 
   1169     <ul>
   1170       <li>The makedep and GNU make tools are required for building ICU. If it
   1171       is not already installed on your system, it is available at the <a href=
   1172       "http://www.ibm.com/servers/eserver/zseries/zos/unix/redbook/">z/OS UNIX -
   1173       Tools and Toys</a> site. The PATH environment variable should be updated to
   1174       contain the location of this executable prior to build. Failure to add these
   1175       tools to your PATH will cause ICU build failures or cause pkgdata to fail
   1176       to run.</li>
   1177 
   1178       <li>Since USS does not support using the mmap() function over NFS, it is
   1179       recommended that you build ICU on a local filesystem. Once ICU has been
   1180       built, you should not have this problem while using ICU when the data
   1181       library has been built as a shared library, which is this is the default
   1182       setting.</li>
   1183 
   1184       <li>Encoding considerations: The source code assumes that it is compiled
   1185       with codepage ibm-1047 (to be exact, the UNIX System Services variant of
   1186       it). The pax command converts all of the source code files from ASCII to
   1187       codepage ibm-1047 (USS) EBCDIC. However, some files are binary files and
   1188       must not be converted, or must be converted back to their original state.
   1189       You can use the <a href="as_is/os390/unpax-icu.sh">unpax-icu.sh</a> script
   1190       to do this for you automatically. It will unpackage the tar file and
   1191       convert all the necessary files for you automatically.</li>
   1192 
   1193       <li>z/OS supports both native S/390 hexadecimal floating point and (with
   1194       OS/390 2.6 and later) IEEE 754 binary floating point. This is a compile
   1195       time option. Applications built with IEEE should use ICU DLLs that are
   1196       built with IEEE (and vice versa). The environment variable IEEE390=0 will
   1197       cause the z/OS version of ICU to be built without IEEE floating point
   1198       support and use the native hexadecimal floating point. By default ICU is
   1199       built with IEEE 754 support. Native floating point support is sufficient
   1200       for codepage conversion, resource bundle and UnicodeString operations, but
   1201       the Format APIs require IEEE binary floating point.</li>
   1202 
   1203       <li>z/OS introduced the concept of Extra Performance Linkage (XPLINK) to
   1204       bring performance improvement opportunities to call-intensive C and C++
   1205       applications such as ICU. XPLINK is enabled on a DLL-by-DLL basis, so if
   1206       you are considering using XPLINK in your application that uses ICU, you
   1207       should consider building the XPLINK-enabled version of ICU. You need to
   1208       set ICU's environment variable <code>OS390_XPLINK=1</code> prior to
   1209       invoking the make process to produce binaries that are enabled for
   1210       XPLINK. The XPLINK option, which is available for z/OS 1.2 and later,
   1211       requires the PTF PQ69418 to build XPLINK enabled binaries.</li>
   1212 
   1213       <li>Currently in ICU 3.0, there is an issue with building on z/OS without
   1214       XPLINK and with the C++ iostream. By default, the iostream library on z/OS
   1215       is XPLINK enabled. If you are not building an XPLINK enabled version of
   1216       ICU, you should use the <code>--with-iostream=old</code> configure option
   1217       when using runConfigureICU. This will prevent applications that use the
   1218       icuio library from crashing.</li>
   1219 
   1220       <li>The rest of the instructions for building and testing ICU on z/OS with
   1221       UNIX System Services are the same as the <a href="#HowToBuildUNIX">How To
   1222       Build And Install On UNIX</a> section.</li>
   1223     </ul>
   1224 
   1225     <h4>z/OS (Batch/PDS) support outside the UNIX system services
   1226     environment</h4>
   1227 
   1228     <p>By default, ICU builds its libraries into the UNIX file system (HFS). In
   1229     addition, there is a z/OS specific environment variable (OS390BATCH) to build
   1230     some libraries into the z/OS native file system. This is useful, for example,
   1231     when your application is externalized via Job Control Language (JCL).</p>
   1232 
   1233     <p>The OS390BATCH environment variable enables non-UNIX support including the
   1234     batch environment. When OS390BATCH is set, the libicui18n<i>XX</i>.dll,
   1235     libicuuc<i>XX</i>.dll, and libicudt<i>XX</i>e.dll binaries are built into
   1236     data sets (the native file system). Turning on OS390BATCH does not turn off
   1237     the normal z/OS UNIX build. This means that the z/OS UNIX (HFS) DLLs will
   1238     always be created.</p>
   1239 
   1240     <p>Two additional environment variables indicate the names of the z/OS data
   1241     sets to use. The LOADMOD environment variable identifies the name of the data
   1242     set that contains the dynamic link libraries (DLLs) and the LOADEXP
   1243     environment variable identifies the name of the data set that contains the
   1244     side decks, which are normally the files with the .x suffix in the UNIX file
   1245     system.</p>
   1246 
   1247     <p>A data set is roughly equivalent to a UNIX or Windows file. For most kinds
   1248     of data sets the operating system maintains record boundaries. UNIX and
   1249     Windows files are byte streams. Two kinds of data sets are PDS and PDSE. Each
   1250     data set of these two types contains a directory. It is like a UNIX
   1251     directory. Each "file" is called a "member". Each member name is limited to
   1252     eight bytes, normally EBCDIC.</p>
   1253 
   1254     <p>Here is an example of some environment variables that you can set prior to
   1255     building ICU:</p>
   1256 <pre>
   1257 <samp>OS390BATCH=1
   1258 LOADMOD=<i>USER</i>.ICU.LOAD
   1259 LOADEXP=<i>USER</i>.ICU.EXP</samp>
   1260 </pre>
   1261 
   1262     <p>The PDS member names for the DLL file names are as follows:</p>
   1263 <pre>
   1264 <samp>IXMI<i>XX</i>IN --&gt; libicui18n<i>XX</i>.dll
   1265 IXMI<i>XX</i>UC --&gt; libicuuc<i>XX</i>.dll
   1266 IXMI<i>XX</i>DA --&gt; libicudt<i>XX</i>e.dll</samp>
   1267 </pre>
   1268 
   1269     <p>You should point the LOADMOD environment variable at a partitioned data
   1270     set extended (PDSE) and point the LOADEXP environment variable at a
   1271     partitioned data set (PDS). The PDSE can be allocated with the following
   1272     attributes:</p>
   1273 <pre>
   1274 <samp>Data Set Name . . . : <i>USER</i>.ICU.LOAD
   1275 Management class. . : <i>**None**</i>
   1276 Storage class . . . : <i>BASE</i>
   1277 Volume serial . . . : <i>TSO007</i>
   1278 Device type . . . . : <i>3390</i>
   1279 Data class. . . . . : <i>LOAD</i>
   1280 Organization  . . . : PO
   1281 Record format . . . : U
   1282 Record length . . . : 0
   1283 Block size  . . . . : <i>32760</i>
   1284 1st extent cylinders: 1
   1285 Secondary cylinders : 5
   1286 Data set name type  : LIBRARY</samp>
   1287 </pre>
   1288 
   1289     <p>The PDS can be allocated with the following attributes:</p>
   1290 <pre>
   1291 <samp>Data Set Name . . . : <i>USER</i>.ICU.EXP
   1292 Management class. . : <i>**None**</i>
   1293 Storage class . . . : <i>BASE</i>
   1294 Volume serial . . . : <i>TSO007</i>
   1295 Device type . . . . : <i>3390</i>
   1296 Data class. . . . . : <i>**None**</i>
   1297 Organization  . . . : PO
   1298 Record format . . . : FB
   1299 Record length . . . : 80
   1300 Block size  . . . . : <i>3200</i>
   1301 1st extent cylinders: 3
   1302 Secondary cylinders : 3
   1303 Data set name type  : PDS</samp>
   1304 </pre>
   1305 
   1306     <h3><a name="HowToBuildOS400" href="#HowToBuildOS400" id=
   1307     "HowToBuildOS400">How To Build And Install On The IBM i Family (IBM i, i5/OS OS/400)</a></h3>
   1308     
   1309 	<div class="note" style="font-size: 2em;"><b style="color: red">Note:</b> At the time of ICU 4.2's release, there were known issues in building on the IBM i family. Please see the <a href="http://icu-project.org/download/4.2.html#i">ICU 4.2 download page</a> for the latest news.</div>
   1310 
   1311     <p>Before you start building ICU, ICU requires the following:</p>
   1312 
   1313     <ul>
   1314       <li>QSHELL interpreter installed (install base option 30, operating system)
   1315       <!--li>QShell Utilities, PRPQ 5799-XEH (not required for V4R5)</li--></li>
   1316 
   1317       <li>ILE C/C++ Compiler installed on the system
   1318 
   1319       <li>The latest GNU facilities (You can get the GNU facilities 
   1320       from <a href=
   1321       "http://www.ibm.com/servers/enable/site/porting/iseries/overview/gnu_utilities.html">
   1322       http://www.ibm.com/servers/enable/site/porting/iseries/overview/gnu_utilities.html</a>).
   1323       Older versions may not work properly.</li>
   1324     </ul>
   1325 
   1326     <p>The following describes how to setup and build ICU. For background
   1327     information, you should look at the <a href="#HowToBuildUNIX">UNIX build
   1328     instructions</a>.</p>
   1329 
   1330     <ol>
   1331       <li>
   1332         Create target library. This library will be the target for the
   1333         resulting modules, programs and service programs. You will specify this
   1334         library on the OUTPUTDIR environment variable.
   1335 <pre>
   1336 <samp>CRTLIB LIB(<i>libraryname</i>)
   1337 ADDENVVAR ENVVAR(OUTPUTDIR) VALUE('<i>libraryname</i>')</samp>
   1338 </pre>
   1339       </li>
   1340 
   1341       <li>
   1342       Set up the following environment variables and job characteristics in your build process
   1343 <pre>
   1344 <samp>ADDENVVAR ENVVAR(MAKE) VALUE('/usr/bin/gmake')
   1345 CHGJOB CCSID(37)</samp>
   1346 </pre>
   1347 
   1348       <li>Run <tt>'QSH'</tt></li>
   1349 
   1350       <li>Run gunzip on the ICU source code compressed tar archive
   1351       (icu-<i>X</i>.<i>Y</i>.tgz).</li>
   1352 
   1353       <li>Run unpax-icu.sh on the tar file generated from the previous step.</li>
   1354 
   1355       <li>Change your current directory to icu/source.</li>
   1356 
   1357       <li>Run <tt>'./runConfigureICU IBMi'</tt>  (See <a href="#HowToConfigureICU">configuration
   1358       note</a> for details).</li></li>
   1359 
   1360       <li>Run <tt>'gmake'</tt> to build ICU.</li>
   1361 
   1362       <li>Run <tt>'gmake check QIBM_MULTI_THREADED=Y'</tt> to build and run the tests.
   1363       You can look at the <a href=
   1364       "http://publib.boulder.ibm.com/infocenter/iseries/v5r3/index.jsp?topic=/apis/concept4.htm">
   1365       iSeries Information Center</a> for more details regarding the running of multiple threads
   1366       on IBM i.</li>
   1367     </ol>
   1368 
   1369       <!-- cross -->
   1370     <h3><a name="HowToCrossCompileICU" href="#HowToCrossCompileICU" id="HowToCrossCompileICU">How To Cross Compile ICU</a></h3>
   1371 		<p>This section will explain how to build ICU on one platform, but to produce binaries intended to run on another. This is commonly known as a cross compile.</p>
   1372 		<p>Normally, in the course of a build, ICU needs to run the tools that it builds in order to generate and package data and test-data.In a cross compilation setting, ICU is built on a different system from that which it eventually runs on. An example might be, if you are building for a small/headless system (such as an embedded device), or a system where you can't easily run the ICU command line tools (any non-UNIX-like system).</p>
   1373 		<p>To reduce confusion, we will here refer to the "A" and the "B" system.System "A" is the actual system we will be running on- the only requirements on it is are it is able to build ICU from the command line targetting itself (with configure or runConfigureICU), and secondly, that it also contain the correct toolchain for compiling and linking for the resultant platform, referred to as the "B" system.</p>
   1374 		<p>The autoconf docs use the term "build" for A, and "host" for B. More details at: <a href="http://www.gnu.org/software/autoconf/manual/html_node/Specifying-Names.html#Specifying-Names">http://www.gnu.org/software/autoconf/manual/html_node/Specifying-Names.html</a></p>
   1375 		<p>Three initially-empty directories will be used in this example:</p>
   1376 		<table summary="Three directories used in this example" class="docTable">
   1377 			<tr>
   1378 				<th align=left>/icu</th><td>a copy of the ICU source</td>
   1379 			</tr>
   1380 			<tr>
   1381 				<th align=left>/buildA</th><td>an empty directory, it will contain ICU built for A<br>(MacOSX in this case)</td>
   1382 			</tr>
   1383 			<tr>
   1384 				<th align=left>/buildB</th><td>an empty directory, it will contain ICU built for B<br>(HaikuOS in this case)</td>
   1385 			</tr>
   1386 		</table>
   1387 		
   1388 		<ol>
   1389 		<li>Check out or unpack the ICU source code into the /icu directory.You will have the directories /icu/source, etc.</li>
   1390 		<li>Build ICU in /buildA normally (using runConfigureICU or configure):
   1391 <pre class="samp">cd /buildA
   1392 sh /icu/source/runConfigureICU <strong>MacOSX</strong>
   1393 gnumake
   1394 </pre>
   1395 		</li>
   1396 		<li>Set PATH or other variables as needed, such as CPPFLAGS.</li>
   1397 		<li>Build ICU in /buildB<br>
   1398 			<div class="note"><b>Note:</b> "<code>--with-cross-build</code>" takes an absolute path.</div>
   1399 <pre class="samp">cd /buildB
   1400 sh /icu/source/configure --host=<strong>i586-pc-haiku</strong> --with-cross-build=<strong>/buildA</strong>
   1401 gnumake</pre>
   1402 		</li>
   1403 		<li>Tests and testdata can be built with "gnumake tests".</li>
   1404 	</ol>
   1405       <!-- end cross -->
   1406 
   1407     <!-- end build environment -->
   1408 
   1409     <h2><a name="HowToPackage" href="#HowToPackage" id="HowToPackage">How To
   1410     Package ICU</a></h2>
   1411 
   1412     <p>There are many ways that a person can package ICU with their software
   1413     products. Usually only the libraries need to be considered for packaging.</p>
   1414 
   1415     <p>On UNIX, you should use "<tt>gmake install</tt>" to make it easier to
   1416     develop and package ICU. The bin, lib and include directories are needed to
   1417     develop applications that use ICU. These directories will be created relative
   1418     to the "<tt>--prefix=</tt><i>dir</i>" configure option (See the <a href=
   1419     "#HowToBuildUNIX">UNIX build instructions</a>). When ICU is built on Windows,
   1420     a similar directory structure is built.</p>
   1421 
   1422     <p>When changes have been made to the standard ICU distribution, it is
   1423     recommended that at least one of the following guidelines be followed for
   1424     special packaging.</p>
   1425 
   1426     <ol>
   1427       <li>Add a suffix name to the library names. This can be done with the
   1428       --with-library-suffix configure option.</li>
   1429 
   1430       <li>The installation script should install the ICU libraries into the
   1431       application's directory.</li>
   1432     </ol>
   1433 
   1434     <p>Following these guidelines prevents other applications that use a standard
   1435     ICU distribution from conflicting with any libraries that you need. On
   1436     operating systems that do not have a standard C++ ABI (name mangling) for
   1437     compilers, it is recommended to do this special packaging anyway. More
   1438     details on customizing ICU are available in the <a href=
   1439     "http://www.icu-project.org/userguide/">User's Guide</a>. The <a href=
   1440     "#SourceCode">ICU Source Code Organization</a> section of this readme.html
   1441     gives a more complete description of the libraries.</p>
   1442 
   1443     <table class="docTable" summary=
   1444     "ICU has several libraries for you to use.">
   1445       <caption>
   1446         Here is an example of libraries that are frequently packaged.
   1447       </caption>
   1448 
   1449       <tr>
   1450         <th scope="col">Library Name</th>
   1451 
   1452         <th scope="col">Windows Filename</th>
   1453 
   1454         <th scope="col">Linux Filename</th>
   1455 
   1456         <th scope="col">Comment</th>
   1457       </tr>
   1458 
   1459       <tr>
   1460         <td>Data Library</td>
   1461 
   1462         <td>icudt<i>XY</i>l.dll</td>
   1463 
   1464         <td>libicudata.so.<i>XY</i>.<i>Z</i></td>
   1465 
   1466         <td>Data required by the Common and I18n libraries. There are many ways
   1467         to package and <a href=
   1468         "http://www.icu-project.org/userguide/icudata.html">customize this
   1469         data</a>, but by default this is all you need.</td>
   1470       </tr>
   1471 
   1472       <tr>
   1473         <td>Common Library</td>
   1474 
   1475         <td>icuuc<i>XY</i>.dll</td>
   1476 
   1477         <td>libicuuc.so.<i>XY</i>.<i>Z</i></td>
   1478 
   1479         <td>Base library required by all other ICU libraries.</td>
   1480       </tr>
   1481 
   1482       <tr>
   1483         <td>Internationalization (i18n) Library</td>
   1484 
   1485         <td>icuin<i>XY</i>.dll</td>
   1486 
   1487         <td>libicui18n.so.<i>XY</i>.<i>Z</i></td>
   1488 
   1489         <td>A library that contains many locale based internationalization (i18n)
   1490         functions.</td>
   1491       </tr>
   1492 
   1493       <tr>
   1494         <td>Layout Engine</td>
   1495 
   1496         <td>icule<i>XY</i>.dll</td>
   1497 
   1498         <td>libicule.so.<i>XY</i>.<i>Z</i></td>
   1499 
   1500         <td>An optional engine for doing font layout.</td>
   1501       </tr>
   1502 
   1503       <tr>
   1504         <td>Layout Extensions Engine</td>
   1505 
   1506         <td>iculx<i>XY</i>.dll</td>
   1507 
   1508         <td>libiculx.so.<i>XY</i>.<i>Z</i></td>
   1509 
   1510         <td>An optional engine for doing font layout that uses parts of ICU.</td>
   1511       </tr>
   1512 
   1513       <tr>
   1514         <td>ICU I/O (Unicode stdio) Library</td>
   1515 
   1516         <td>icuio<i>XY</i>.dll</td>
   1517 
   1518         <td>libicuio.so.<i>XY</i>.<i>Z</i></td>
   1519 
   1520         <td>An optional library that provides a stdio like API with Unicode
   1521         support.</td>
   1522       </tr>
   1523 
   1524       <tr>
   1525         <td>Tool Utility Library</td>
   1526 
   1527         <td>icutu<i>XY</i>.dll</td>
   1528 
   1529         <td>libicutu.so.<i>XY</i>.<i>Z</i></td>
   1530 
   1531         <td>An internal library that contains internal APIs that are only used by
   1532         ICU's tools. If you do not use ICU's tools, you do not need this
   1533         library.</td>
   1534       </tr>
   1535     </table>
   1536 
   1537     <p>Normally only the above ICU libraries need to be considered for packaging.
   1538     The versionless symbolic links to these libraries are only needed for easier
   1539     development. The <i>X</i>, <i>Y</i> and <i>Z</i> parts of the name are the
   1540     version numbers of ICU. For example, ICU 2.0.2 would have the name
   1541     libicuuc.so.20.2 for the common library. The exact format of the library
   1542     names can vary between platforms due to how each platform can handles library
   1543     versioning.</p>
   1544 
   1545     <h2><a name="ImportantNotes" href="#ImportantNotes" id=
   1546     "ImportantNotes">Important Notes About Using ICU</a></h2>
   1547 
   1548     <h3><a name="ImportantNotesMultithreaded" href="#ImportantNotesMultithreaded"
   1549     id="ImportantNotesMultithreaded">Using ICU in a Multithreaded
   1550     Environment</a></h3>
   1551 
   1552     <p>Some versions of ICU require calling the <code>u_init()</code> function
   1553     from <code>uclean.h</code> to ensure that ICU is initialized properly. In
   1554     those ICU versions, <code>u_init()</code> must be called before ICU is used
   1555     from multiple threads. There is no harm in calling <code>u_init()</code> in a
   1556     single-threaded application, on a single-CPU machine, or in other cases where
   1557     <code>u_init()</code> is not required.</p>
   1558 
   1559     <p>In addition to ensuring thread safety, <code>u_init()</code> also attempts
   1560     to load at least one ICU data file. Assuming that all data files are packaged
   1561     together (or are in the same folder in files mode), a failure code from
   1562     <code>u_init()</code> usually means that the data cannot be found. In this
   1563     case, the data may not be installed properly, or the application may have
   1564     failed to call <code>udata_setCommonData()</code> or
   1565     <code>u_setDataDirectory()</code> which specify to ICU where it can find its
   1566     data.</p>
   1567 
   1568     <p>Since <code>u_init()</code> will load only one or two data files, it
   1569     cannot guarantee that all of the data that an application needs is available.
   1570     It cannot check for all data files because the set of files is customizable,
   1571     and some ICU services work without loading any data at all. An application
   1572     should always check for error codes when opening ICU service objects (using
   1573     <code>ucnv_open()</code>, <code>ucol_open()</code>, C++ constructors,
   1574     etc.).</p>
   1575 
   1576     <h4>ICU 3.4 and later</h4>
   1577 
   1578     <p>ICU 3.4 self-initializes properly for multi-threaded use. It achieves this
   1579     without performance penalty by hardcoding the core Unicode properties data,
   1580     at the cost of some flexibility. (For details see Jitterbug 4497.)</p>
   1581 
   1582     <p><code>u_init()</code> can be used to check for data loading. It tries to
   1583     load the converter alias table (<code>cnvalias.icu</code>).</p>
   1584 
   1585     <h4>ICU 2.6..3.2</h4>
   1586 
   1587     <p>These ICU versions require a call to <code>u_init()</code> before
   1588     multi-threaded use. The services that are directly affected are those that
   1589     don't have a service object and need to be fast: normalization and character
   1590     properties.</p>
   1591 
   1592     <p><code>u_init()</code> loads and initializes the data files for
   1593     normalization and character properties (<code>unorm.icu</code> and
   1594     <code>uprops.icu</code>) and can therefore also be used to check for data
   1595     loading.</p>
   1596 
   1597     <h4>ICU 2.4 and earlier</h4>
   1598 
   1599     <p>ICU 2.4 and earlier versions were not prepared for multithreaded use on
   1600     multi-CPU platforms where the CPUs implement weak memory coherency. These
   1601     CPUs include: Power4, Power5, Alpha, Itanium. <code>u_init()</code> was not
   1602     defined yet.</p>
   1603 
   1604     <h4><a name="ImportantNotesHPUX" href="#ImportantNotesHPUX" id=
   1605     "ImportantNotesHPUX">Using ICU in a Multithreaded Environment on
   1606     HP-UX</a></h4>
   1607 
   1608     <p>If you are building ICU with a newer aCC compiler and you are planning on
   1609     using the older &lt;iostream.h&gt; instead of the newer &lt;iostream&gt;, you
   1610     will need to use a special configure flag before building ICU. By default,
   1611     the aCC <a href="http://docs.hp.com/en/1405/options.htm#optioncap-AA">-AA</a>
   1612     flag is used on HP-UX when the compiler supports that option in order to make
   1613     ICU thread safe with RogueWave and other libraries using the 2.0 Standard C++
   1614     library. Your applications that use ICU will also need to use the <a href=
   1615     "http://docs.hp.com/en/1405/options.htm#optioncap-AA">-AA</a> compiler flag.
   1616     To turn off this behavior in ICU, you will need to use the --with-iostream=old
   1617     configure option when you first use runConfigureICU.</p>
   1618 
   1619     <h4><a name="ImportantNotesSolaris" href="#ImportantNotesSolaris" id=
   1620     "ImportantNotesSolaris">Using ICU in a Multithreaded Environment on
   1621     Solaris</a></h4>
   1622 
   1623     <h5>Linking on Solaris</h5>
   1624 
   1625     <p>In order to avoid synchronization and threading issues, developers are
   1626     <strong>suggested</strong> to strictly follow the compiling and linking
   1627     guidelines for multithreaded applications, specified in the following
   1628     document from Sun Microsystems. Most notably, pay strict attention to the
   1629     following statements from Sun:</p>
   1630 
   1631     <blockquote>
   1632       <p>To use libthread, specify -lthread before -lc on the ld command line, or
   1633       last on the cc command line.</p>
   1634 
   1635       <p>To use libpthread, specify -lpthread before -lc on the ld command line,
   1636       or last on the cc command line.</p>
   1637     </blockquote>
   1638 
   1639     <p>Failure to do this may cause spurious lock conflicts, recursive mutex
   1640     failure, and deadlock.</p>
   1641 
   1642     <p>Source: "<i>Solaris Multithreaded Programming Guide, Compiling and
   1643     Debugging</i>", Sun Microsystems, Inc., Apr 2004<br />
   1644      <a href=
   1645     "http://docs.sun.com/app/docs/doc/816-5137/6mba5vpke?a=view">http://docs.sun.com/app/docs/doc/816-5137/6mba5vpke?a=view</a></p>
   1646 
   1647     <h3><a name="ImportantNotesWindows" href="#ImportantNotesWindows" id=
   1648     "ImportantNotesWindows">Windows Platform</a></h3>
   1649 
   1650     <p>If you are building on the Win32 platform, it is important that you
   1651     understand a few of the following build details.</p>
   1652 
   1653     <h4>DLL directories and the PATH setting</h4>
   1654 
   1655     <p>As delivered, the International Components for Unicode build as several
   1656     DLLs, which are placed in the "<i>&lt;ICU&gt;</i>\bin" directory. You must
   1657     add this directory to the PATH environment variable in your system, or any
   1658     executables you build will not be able to access International Components for
   1659     Unicode libraries. Alternatively, you can copy the DLL files into a directory
   1660     already in your PATH, but we do not recommend this. You can wind up with
   1661     multiple copies of the DLL and wind up using the wrong one.</p>
   1662 
   1663     <h4><a name="ImportantNotesWindowsPath" id=
   1664     "ImportantNotesWindowsPath">Changing your PATH</a></h4>
   1665 
   1666     <p><strong>Windows 2000/XP</strong>: Use the System Icon in the Control
   1667     Panel. Pick the "Advanced" tab. Select the "Environment Variables..."
   1668     button. Select the variable PATH in the lower box, and select the lower
   1669     "Edit..." button. In the "Variable Value" box, append the string
   1670     ";<i>&lt;ICU&gt;</i>\bin" to the end of the path string. If there is
   1671     nothing there, just type in "<i>&lt;ICU&gt;</i>\bin". Click the Set button,
   1672     then the OK button.</p>
   1673 
   1674     <p>Note: When packaging a Windows application for distribution and
   1675     installation on user systems, copies of the ICU DLLs should be included with
   1676     the application, and installed for exclusive use by the application. This is
   1677     the only way to insure that your application is running with the same version
   1678     of ICU, built with exactly the same options, that you developed and tested
   1679     with. Refer to Microsoft's guidelines on the usage of DLLs, or search for the
   1680     phrase "DLL hell" on <a href=
   1681     "http://msdn.microsoft.com/">msdn.microsoft.com</a>.</p>
   1682 
   1683     <h3><a name="ImportantNotesUNIX" href="#ImportantNotesUNIX" id=
   1684     "ImportantNotesUNIX">UNIX Type Platform</a></h3>
   1685 
   1686     <p>If you are building on a UNIX platform, and if you are installing ICU in a
   1687     non-standard location, you may need to add the location of your ICU libraries
   1688     to your <strong>LD_LIBRARY_PATH</strong> or <strong>LIBPATH</strong>
   1689     environment variable (or the equivalent runtime library path environment
   1690     variable for your system). The ICU libraries may not link or load properly
   1691     without doing this.</p>
   1692 
   1693     <p>Note that if you do not want to have to set this variable, you may instead
   1694     use the --enable-rpath option at configuration time. This option will
   1695     instruct the linker to always look for the libraries where they are
   1696     installed. You will need to use the appropriate linker options when linking
   1697     your own applications and libraries against ICU, too. Please refer to your
   1698     system's linker manual for information about runtime paths. The use of rpath
   1699     also means that when building a new version of ICU you should not have an
   1700     older version installed in the same place as the new version's installation
   1701     directory, as the older libraries will used during the build, instead of the
   1702     new ones, likely leading to an incorrectly build ICU. This is the proper
   1703     behavior of rpath.</p>
   1704 
   1705     <h2><a name="PlatformDependencies" href="#PlatformDependencies" id=
   1706     "PlatformDependencies">Platform Dependencies</a></h2>
   1707 
   1708     <h3><a name="PlatformDependenciesNew" href="#PlatformDependenciesNew" id=
   1709     "PlatformDependenciesNew">Porting To A New Platform</a></h3>
   1710 
   1711     <p>If you are using ICU's Makefiles to build ICU on a new platform, there are
   1712     a few places where you will need to add or modify some files. If you need
   1713     more help, you can always ask the <a href=
   1714     "http://www.icu-project.org/contacts.html">icu-support mailing list</a>. Once
   1715     you have finished porting ICU to a new platform, it is recommended that you
   1716     contribute your changes back to ICU via the icu-support mailing list. This
   1717     will make it easier for everyone to benefit from your work.</p>
   1718 
   1719     <h4>Data For a New Platform</h4>
   1720 
   1721     <p>For some people, it may not be necessary for completely build ICU. Most of
   1722     the makefiles and build targets are for tools that are used for building
   1723     ICU's data, and an application's data (when an application uses ICU resource
   1724     bundles for its data).</p>
   1725 
   1726     <p>Data files can be built on a different platform when both platforms share
   1727     the same endianness and the same charset family. This assertion does not
   1728     include platform dependent DLLs/shared/static libraries. For details see the
   1729     User Guide <a href="http://www.icu-project.org/userguide/icudata.html">ICU
   1730     Data</a> chapter.</p>
   1731 
   1732     <p>ICU 3.6 removes the requirement that ICU be completely built in the native
   1733     operating environment. It adds the icupkg tool which can be run on any
   1734     platform to turn binary ICU data files from any one of the three formats into
   1735     any one of the other data formats. This allows a application to use ICU data
   1736     built anywhere to be used for any other target platform.</p>
   1737 
   1738     <p><strong>WARNING!</strong> Building ICU without running the tests is not
   1739     recommended. The tests verify that ICU is safe to use. It is recommended that
   1740     you try to completely port and test ICU before using the libraries for your
   1741     own application.</p>
   1742 
   1743     <h4>Adapting Makefiles For a New Platform</h4>
   1744 
   1745     <p>Try to follow the build steps from the <a href="#HowToBuildUNIX">UNIX</a>
   1746     build instructions. If the configure script fails, then you will need to
   1747     modify some files. Here are the usual steps for porting to a new
   1748     platform:<br />
   1749     </p>
   1750 
   1751     <ol>
   1752       <li>Create an mh file in icu/source/config/. You can use mh-linux or a
   1753       similar mh file as your base configuration.</li>
   1754 
   1755       <li>Modify icu/source/aclocal.m4 to recognize your platform's mh file.</li>
   1756 
   1757       <li>Modify icu/source/configure.in to properly set your <b>platform</b> C
   1758       Macro define.</li>
   1759 
   1760       <li>Run <a href="http://www.gnu.org/software/autoconf/">autoconf</a> in
   1761       icu/source/ without any options. The autoconf tool is standard on most
   1762       Linux systems.</li>
   1763 
   1764       <li>If you have any optimization options that you want to normally use, you
   1765       can modify icu/source/runConfigureICU to specify those options for your
   1766       platform.</li>
   1767 
   1768       <li>Build and test ICU on your platform. It is very important that you run
   1769       the tests. If you don't run the tests, there is no guarentee that you have
   1770       properly ported ICU.</li>
   1771     </ol>
   1772 
   1773     <h3><a name="PlatformDependenciesImpl" href="#PlatformDependenciesImpl" id=
   1774     "PlatformDependenciesImpl">Platform Dependent Implementations</a></h3>
   1775 
   1776     <p>The platform dependencies have been mostly isolated into the following
   1777     files in the common library. This information can be useful if you are
   1778     porting ICU to a new platform.</p>
   1779 
   1780     <ul>
   1781       <li>
   1782         <strong>unicode/platform.h.in</strong> (autoconf'ed platforms)<br />
   1783          <strong>unicode/p<i>XXXX</i>.h</strong> (others: pwin32.h, ppalmos.h,
   1784         ..): Platform-dependent typedefs and defines:<br />
   1785         <br />
   1786          
   1787 
   1788         <ul>
   1789           <li>Generic types like UBool, int8_t, int16_t, int32_t, int64_t,
   1790           uint64_t etc.</li>
   1791 
   1792           <li>U_EXPORT and U_IMPORT for specifying dynamic library import and
   1793           export</li>
   1794 
   1795           <li>&lt;iostream&gt; usability</li>
   1796 
   1797           <li>Thread safety usability</li>
   1798         </ul>
   1799         <br />
   1800       </li>
   1801 
   1802       <li>
   1803         <strong>unicode/putil.h, putil.c</strong>: platform-dependent
   1804         implementations of various functions that are platform dependent:<br />
   1805         <br />
   1806          
   1807 
   1808         <ul>
   1809           <li>uprv_isNaN, uprv_isInfinite, uprv_getNaN and uprv_getInfinity for
   1810           handling special floating point values.</li>
   1811 
   1812           <li>uprv_tzset, uprv_timezone, uprv_tzname and time for getting
   1813           platform specific time and time zone information.</li>
   1814 
   1815           <li>u_getDataDirectory for getting the default data directory.</li>
   1816 
   1817           <li>uprv_getDefaultLocaleID for getting the default locale
   1818           setting.</li>
   1819 
   1820           <li>uprv_getDefaultCodepage for getting the default codepage
   1821           encoding.</li>
   1822         </ul>
   1823         <br />
   1824       </li>
   1825 
   1826       <li>
   1827         <strong>umutex.h, umutex.c</strong>: Code for doing synchronization in
   1828         multithreaded applications. If you wish to use International Components
   1829         for Unicode in a multithreaded application, you must provide a
   1830         synchronization primitive that the classes can use to protect their
   1831         global data against simultaneous modifications. We already supply working
   1832         implementations for many platforms that ICU builds on.<br />
   1833         <br />
   1834       </li>
   1835 
   1836       <li><strong>umapfile.h, umapfile.c</strong>: functions for mapping or
   1837       otherwise reading or loading files into memory. All access by ICU to data
   1838       from files makes use of these functions.<br />
   1839       <br />
   1840       </li>
   1841 
   1842       <li>Using platform specific #ifdef macros are highly discouraged outside of
   1843       the scope of these files. When the source code gets updated in the future,
   1844       these #ifdef's can cause testing problems for your platform.</li>
   1845     </ul>
   1846     <hr />
   1847 
   1848     <p>Copyright &copy; 1997-2009 International Business Machines Corporation and
   1849     others. All Rights Reserved.<br />
   1850      IBM Globalization Center of Competency - San Jos&eacute;<br />
   1851      4400 North First Street<br />
   1852      San Jos&eacute;, CA 95134<br />
   1853      USA</p>
   1854   </body>
   1855 </html>
   1856 
   1857