16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org<html lang="en-US" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org  <head>
66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <title>ReadMe for ICU 52</title>
76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <meta name="COPYRIGHT" content=
86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "Copyright (c) 1997-2013 IBM Corporation and others. All Rights Reserved." />
96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <meta name="KEYWORDS" content=
106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "ICU; International Components for Unicode; ICU4C; what's new; readme; read me; introduction; downloads; downloading; building; installation;" />
116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <meta name="DESCRIPTION" content=
126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "The introduction to the International Components for Unicode with instructions on building, installation, usage and other information about ICU." />
136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org	<link type="text/css" href="/icu4c.css" rel="stylesheet"/>
156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org  </head>
166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org  <body>
186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h1>International Components for Unicode<br />
196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     <abbr title="International Components for Unicode">ICU</abbr> 52 ReadMe</h1>
206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <!--<p><b>Note:</b> This is a development milestone release of ICU4C 52.
226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    This milestone is intended for those wishing to get an early look at ICU 52 new features and API changes.
236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    It is not recommended for production use.</p>-->
246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <!--<p><b>Note:</b> This is a release candidate version of ICU4C 52.
256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    It is not recommended for production use.</p>-->
266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>Last updated: 2013-Sep-30<br />
286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     Copyright &copy; 1997-2013 International Business Machines Corporation and
296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    others. All Rights Reserved.</p>
306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <!-- Remember that there is a copyright at the end too -->
316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <hr />
326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h2 class="TOC">Table of Contents</h2>
346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <ul class="TOC">
366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li><a href="#Introduction">Introduction</a></li>
376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li><a href="#GettingStarted">Getting Started</a></li>
396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li><a href="#News">What Is New In This release?</a></li>
416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li><a href="#Download">How To Download the Source Code</a></li>
436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li><a href="#SourceCode">ICU Source Code Organization</a></li>
456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>
476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <a href="#HowToBuild">How To Build And Install ICU</a>
486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <ul >
506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          <li><a href="#RecBuild">Recommended Build Options</a></li>
516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          <li><a href="#UserConfig">User-Configurable Settings</a></li>
536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          <li><a href="#HowToBuildWindows">Windows</a></li>
556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          <li><a href="#HowToBuildCygwin">Cygwin</a></li>
576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          <li><a href="#HowToBuildUNIX">UNIX</a></li>
596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          <li><a href="#HowToBuildZOS">z/OS (os/390)</a></li>
616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          <li><a href="#HowToBuildOS400">IBM i family (IBM i, i5/OS, OS/400)</a></li>
636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org		  <li><a href="#HowToCrossCompileICU">How to Cross Compile ICU</a></li>
656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        </ul>
666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </li>
676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li><a href="#HowToPackage">How To Package ICU</a></li>
706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>
726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <a href="#ImportantNotes">Important Notes About Using ICU</a>
736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <ul >
756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          <li><a href="#ImportantNotesMultithreaded">Using ICU in a Multithreaded
766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          Environment</a></li>
776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          <li><a href="#ImportantNotesWindows">Windows Platform</a></li>
796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          <li><a href="#ImportantNotesUNIX">UNIX Type Platforms</a></li>
816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        </ul>
826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </li>
836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>
856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <a href="#PlatformDependencies">Platform Dependencies</a>
866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <ul >
886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          <li><a href="#PlatformDependenciesNew">Porting To A New
896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          Platform</a></li>
906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          <li><a href="#PlatformDependenciesImpl">Platform Dependent
926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          Implementations</a></li>
936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        </ul>
946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </li>
956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    </ul>
966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <hr />
976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h2><a name="Introduction" href="#Introduction" id=
996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "Introduction">Introduction</a></h2>
1006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>Today's software market is a global one in which it is desirable to
1026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    develop and maintain one application (single source/single binary) that
1036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    supports a wide variety of languages. The International Components for
1046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    Unicode (ICU) libraries provide robust and full-featured Unicode services on
1056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    a wide variety of platforms to help this design goal. The ICU libraries
1066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    provide support for:</p>
1076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <ul>
1096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>The latest version of the Unicode standard</li>
1106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Character set conversions with support for over 220 codepages</li>
1126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Locale data for more than 300 locales</li>
1146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Language sensitive text collation (sorting) and searching based on the
1166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      Unicode Collation Algorithm (=ISO 14651)</li>
1176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Regular expression matching and Unicode sets</li>
1196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Transformations for normalization, upper/lowercase, script
1216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      transliterations (50+ pairs)</li>
1226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Resource bundles for storing and accessing localized information</li>
1246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Date/Number/Message formatting and parsing of culture specific
1266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      input/output formats</li>
1276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Calendar specific date and time manipulation</li>
1296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Complex text layout for Arabic, Hebrew, Indic and Thai</li>
1316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Text boundary analysis for finding characters, word and sentence
1336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      boundaries</li>
1346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    </ul>
1356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>ICU has a sister project ICU4J that extends the internationalization
1376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    capabilities of Java to a level similar to ICU. The ICU C/C++ project is also
1386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    called ICU4C when a distinction is necessary.</p>
1396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h2><a name="GettingStarted" href="#GettingStarted" id=
1416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "GettingStarted">Getting started</a></h2>
1426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>This document describes how to build and install ICU on your machine. For
1446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    other information about ICU please see the following table of links.<br />
1456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     The ICU homepage also links to related information about writing
1466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    internationalized software.</p>
1476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <table class="docTable" summary="These are some useful links regarding ICU and internationalization in general.">
1496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <caption>
1506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        Here are some useful links regarding ICU and internationalization in
1516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        general.
1526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </caption>
1536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
1556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>ICU, ICU4C &amp; ICU4J Homepage</td>
1566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td><a href=
1586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        "http://icu-project.org/">http://icu-project.org/</a></td>
1596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
1606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
1626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>FAQ - Frequently Asked Questions about ICU</td>
1636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td><a href=
1656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        "http://userguide.icu-project.org/icufaq">http://userguide.icu-project.org/icufaq</a></td>
1666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
1676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
1696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>ICU User's Guide</td>
1706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td><a href=
1726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        "http://userguide.icu-project.org/">http://userguide.icu-project.org/</a></td>
1736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
1746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
1766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>How To Use ICU</td>
1776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td><a href="http://userguide.icu-project.org/howtouseicu">http://userguide.icu-project.org/howtouseicu</a></td>
1796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
1806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
1826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>Download ICU Releases</td>
1836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td><a href=
1856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        "http://site.icu-project.org/download">http://site.icu-project.org/download</a></td>
1866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
1876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
1896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>ICU4C API Documentation Online</td>
1906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td><a href=
1926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        "http://icu-project.org/apiref/icu4c/">http://icu-project.org/apiref/icu4c/</a></td>
1936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
1946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
1966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>Online ICU Demos</td>
1976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td><a href=
1996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        "http://demo.icu-project.org/icu-bin/icudemos">http://demo.icu-project.org/icu-bin/icudemos</a></td>
2006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
2016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
2036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>Contacts and Bug Reports/Feature Requests</td>
2046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td><a href=
2066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        "http://site.icu-project.org/contacts">http://site.icu-project.org/contacts</a></td>
2076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
2086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    </table>
2096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p><strong>Important:</strong> Please make sure you understand the <a href=
2116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "license.html">Copyright and License Information</a>.</p>
2126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h2><a name="News" href="#News" id="News">What is new in this
2146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    release?</a></h2>
2156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>To see which APIs are new or changed in this release, view the <a href="APIChangeReport.html">ICU4C API Change Report</a>. </p>
2176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <!-- ICU 52 items -->
2196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h3>DecimalFormat - two functions marked as const</h3>
2206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>
2216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tt>DecimalFormat::isScientificNotation</tt> and <tt>DecimalFormat::isExponentSignAlwaysShown</tt>
2226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      are now const member functions. DecimalFormat is not recommended for subclassing.
2236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    </p>
2246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h3>CollationElementIterator protected methods became private</h3>
2266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>The C++ CollationElementIterator (CEI) had two protected constructors
2276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    (called only by RuleBasedCollator CEI factory methods)
2286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    and a protected assignment operator.
2296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    The class documentation says "CollationElementIterator should not be subclassed",
2306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    and it cannot be subclassed effectively.
2316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    The protected methods were made private and might be removed altogether.
2326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    For details see <a href="http://bugs.icu-project.org/trac/ticket/10251">ticket #10251</a>.</p>
2336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <!-- end ICU 52 items -->
2346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>The following list concentrates on <em>changes that affect existing
2366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    applications migrating from previous ICU releases</em>.
2376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    For more news about this release, see the
2386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    
2396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <a href="http://site.icu-project.org/download/52">ICU download page</a>.
2406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    
2416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org<!--    <a href="http://site.icu-project.org/download/milestone">ICU milestone download page</a>.
2426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    </p>-->
2436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    
2446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h3>C++ BasicTimeZone subclassing-API breaking changes</h3>
2456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>We have made make some changes to the C++ BasicTimeZone(basictz.h) for ICU 51
2466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    that will make it easier to use some time zone support features found in BasicTimeZone
2476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    (basictz.h), but the changes are incompatible for subclasses. If there are subclasses,
2486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    they will have to be modified as well.</p>
2496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>BasicTimeZone is a subclass of TimeZone and providing some enhanced features, such as
2516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    getNextTransition and getPreviousTransition. The class is used as the base class of all
2526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    of ICU's time zone implementation classes. User Classes directly extending TimeZone and
2536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    consumers of ICU TimeZone implementation classes are not affected by the changes.</p>
2546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>For details see the email "ICU4C C++ BasicTimeZone subclassing-API breaking changes"
2566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    sent on 2013-Feb-5 to the icu-support
2576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <a href="http://site.icu-project.org/contacts">mailing lists</a>,
2586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    and <a href="http://bugs.icu-project.org/trac/ticket/9648">ICU ticket #9648</a>.</p>
2596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h3>Date format pattern "V"</h3>
2616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>The date format pattern "V" was introduced in ICU 3.8 (inherited from CLDR 1.5) as
2626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    a variation of pattern "z" to support time zone abbreviation format such as "PST".
2636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    The pattern "z" prints out a time zone abbreviation only when it is commonly used for a locale.
2646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    The pattern "V" was slightly different from pattern "z" and the pattern designates
2656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    a time zone abbreviation even it is not commonly used for a locale. For example, time
2666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    zone abbreviation "AEST" for Australian Eastern Standard Time might not be well recognized
2676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    by people in the United States. For the zone, pattern "z" does not use "AEST" (instead, use
2686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    UTC offset format "GMT+10:00", as the fallback) , while pattern "V" used to print out "AEST".
2696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    In CLDR 21, the data used for checking commonly used or not was completely removed (CLDR
2706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    ticket <a href="http://unicode.org/cldr/trac/ticket/4052">#4052</a>), so the difference
2716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    between pattern "z" and "V" is no longer available since ICU 49 (based on CLDR 21 specification).</p>
2726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>In CLDR 23, the CLDR technical committee decided to reuse the semantically deprecated
2746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    pattern "V" for a different purpose. With the new specification, the date format pattern
2756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "V" is used for short time zone IDs, such as "uslax" for zone America/Los_Angeles. ICU 51
2766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    implements the new specification. So existing ICU users currently using custom date format
2776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    patterns with pattern "V" are suggested to change them to pattern "z".</p>
2786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org   <p>Note that the existing pattern "VVVV" for a time zone's generic location name is not
2806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org   affected by the new specification and the pattern "VVVV" continues to work as same as
2816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org   previous ICU releases.</p>
2826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h2><a name="Download" href="#Download" id="Download">How To Download the
2846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    Source Code</a></h2>
2856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>There are two ways to download ICU releases:</p>
2876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <ul>
2896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li><strong>Official Release Snapshot:</strong><br />
2906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org       If you want to use ICU (as opposed to developing it), you should download
2916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      an official packaged version of the ICU source code. These versions are
2926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      tested more thoroughly than day-to-day development builds of the system,
2936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      and they are packaged in zip and tar files for convenient download. These
2946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      packaged files can be found at <a href=
2956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      "http://site.icu-project.org/download">http://site.icu-project.org/download</a>.<br />
2966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org       The packaged snapshots are named <strong>icu-nnnn.zip</strong> or
2976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <strong>icu-nnnn.tgz</strong>, where nnnn is the version number. The .zip
2986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      file is used for Windows platforms, while the .tgz file is preferred on
2996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      most other platforms.<br />
3006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org       Please unzip this file. </li>
3016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
3026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li><strong>Subversion Source Repository:</strong><br />
3036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org       If you are interested in developing features, patches, or bug fixes for
3046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      ICU, you should probably be working with the latest version of the ICU
3056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      source code. You will need to check the code out of our Subversion repository to
3066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      ensure that you have the most recent version of all of the files. See our
3076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <a href="http://site.icu-project.org/repository">source
3086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      repository</a> for details.</li>
3096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    </ul>
3106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
3116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h2><a name="SourceCode" href="#SourceCode" id="SourceCode">ICU Source Code
3126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    Organization</a></h2>
3136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
3146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>In the descriptions below, <strong><i>&lt;ICU&gt;</i></strong> is the full
3156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    path name of the ICU directory (the top level directory from the distribution
3166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    archives) in your file system. You can also view the <a href=
3176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "http://userguide.icu-project.org/design">ICU Architectural
3186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    Design</a> section of the User's Guide to see which libraries you need for
3196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    your software product. You need at least the data (<code>[lib]icudt</code>)
3206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    and the common (<code>[lib]icuuc</code>) libraries in order to use ICU.</p>
3216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
3226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <table class="docTable" summary="The following files describe the code drop.">
3236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <caption>
3246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        The following files describe the code drop.
3256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </caption>
3266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
3276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
3286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <th scope="col">File</th>
3296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
3306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <th scope="col">Description</th>
3316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
3326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
3336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
3346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>readme.html</td>
3356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
3366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>Describes the International Components for Unicode (this file)</td>
3376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
3386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
3396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
3406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>license.html</td>
3416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
3426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>Contains the text of the ICU license</td>
3436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
3446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    </table>
3456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
3466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p><br />
3476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    </p>
3486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
3496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <table class="docTable" summary=
3506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "The following directories contain source code and data files.">
3516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <caption>
3526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        The following directories contain source code and data files.
3536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </caption>
3546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
3556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
3566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <th scope="col">Directory</th>
3576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
3586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <th scope="col">Description</th>
3596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
3606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
3616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
3626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td><i>&lt;ICU&gt;</i>/source/<b>common</b>/</td>
3636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
3646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>The core Unicode and support functionality, such as resource bundles,
3656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        character properties, locales, codepage conversion, normalization,
3666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        Unicode properties, Locale, and UnicodeString.</td>
3676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
3686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
3696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
3706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td><i>&lt;ICU&gt;</i>/source/<b>i18n</b>/</td>
3716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
3726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>Modules in i18n are generally the more data-driven, that is to say
3736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        resource bundle driven, components. These deal with higher-level
3746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        internationalization issues such as formatting, collation, text break
3756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        analysis, and transliteration.</td>
3766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
3776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
3786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
3796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td><i>&lt;ICU&gt;</i>/source/<b>layout</b>/</td>
3806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
3816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>Contains the ICU layout engine (not a rasterizer).</td>
3826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
3836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
3846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
3856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td><i>&lt;ICU&gt;</i>/source/<b>io</b>/</td>
3866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
3876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>Contains the ICU I/O library.</td>
3886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
3896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
3906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
3916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td><i>&lt;ICU&gt;</i>/source/<b>data</b>/</td>
3926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
3936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>
3946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          <p>This directory contains the source data in text format, which is
3956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          compiled into binary form during the ICU build process. It contains
3966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          several subdirectories, in which the data files are grouped by
3976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          function. Note that the build process must be run again after any
3986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          changes are made to this directory.</p>
3996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
4006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          <p>If some of the following directories are missing, it's probably
4016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          because you got an official download. If you need the data source files
4026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          for customization, then please download the ICU source code from <a
4036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          href="http://site.icu-project.org/repository">subversion</a>.</p>
4046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
4056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          <ul>
4066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            <li><b>in/</b> A directory that contains a pre-built data library for
4076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            ICU. A standard source code package will contain this file without
4086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            several of the following directories. This is to simplify the build
4096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            process for the majority of users and to reduce platform porting
4106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            issues.</li>
4116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
4126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            <li><b>brkitr/</b> Data files for character, word, sentence, title
4136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            casing and line boundary analysis.</li>
4146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
4156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            <li><b>locales/</b> These .txt files contain ICU language and
4166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            culture-specific localization data. Two special bundles are
4176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            <b>root</b>, which is the fallback data and parent of other bundles,
4186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            and <b>index</b>, which contains a list of installed bundles. The
4196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            makefile <b>resfiles.mk</b> contains the list of resource bundle
4206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            files.</li>
4216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
4226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            <li><b>mappings/</b> Here are the code page converter tables. These
4236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            .ucm files contain mappings to and from Unicode. These are compiled
4246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            into .cnv files. <b>convrtrs.txt</b> is the alias mapping table from
4256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            various converter name formats to ICU internal format and vice versa.
4266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            It produces cnvalias.icu. The makefiles <b>ucmfiles.mk,
4276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            ucmcore.mk,</b> and <b>ucmebcdic.mk</b> contain the list of
4286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            converters to be built.</li>
4296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
4306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            <li><b>translit/</b> This directory contains transliterator rules as
4316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            resource bundles, a makefile <b>trnsfiles.mk</b> containing the list
4326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            of installed system translitaration files, and as well the special
4336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            bundle <b>translit_index</b> which lists the system transliterator
4346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            aliases.</li>
4356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
4366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            <li><b>unidata/</b> This directory contains the Unicode data files.
4376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            Please see <a href=
4386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            "http://www.unicode.org/">http://www.unicode.org/</a> for more
4396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            information.</li>
4406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
4416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            <li><b>misc/</b> The misc directory contains other data files which
4426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            did not fit into the above categories. Currently it only contains
4436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            time zone information, and a name preperation file for <a href=
4446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            "http://www.ietf.org/rfc/rfc3490.txt">IDNA</a>.</li>
4456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
4466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            <li><b>out/</b> This directory contains the assembled memory mapped
4476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            files.</li>
4486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
4496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            <li><b>out/build/</b> This directory contains intermediate (compiled)
4506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            files, such as .cnv, .res, etc.</li>
4516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          </ul>
4526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
4536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          <p>If you are creating a special ICU build, you can set the ICU_DATA
4546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          environment variable to the out/ or the out/build/ directories, but
4556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          this is generally discouraged because most people set it incorrectly.
4566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          You can view the <a href=
4576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          "http://userguide.icu-project.org/icudata">ICU Data
4586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          Management</a> section of the ICU User's Guide for details.</p>
4596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        </td>
4606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
4616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
4626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
4636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td><i>&lt;ICU&gt;</i>/source/test/<b>intltest</b>/</td>
4646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
4656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>A test suite including all C++ APIs. For information about running
4666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        the test suite, see the build instructions specific to your platform
4676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        later in this document.</td>
4686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
4696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
4706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
4716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td><i>&lt;ICU&gt;</i>/source/test/<b>cintltst</b>/</td>
4726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
4736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>A test suite written in C, including all C APIs. For information
4746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        about running the test suite, see the build instructions specific to your
4756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        platform later in this document.</td>
4766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
4776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
4786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
4796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td><i>&lt;ICU&gt;</i>/source/test/<b>iotest</b>/</td>
4806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
4816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>A test suite written in C and C++ to test the icuio library. For
4826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        information about running the test suite, see the build instructions
4836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        specific to your platform later in this document.</td>
4846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
4856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
4866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
4876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td><i>&lt;ICU&gt;</i>/source/test/<b>testdata</b>/</td>
4886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
4896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>Source text files for data, which are read by the tests. It contains
4906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        the subdirectories <b>out/build/</b> which is used for intermediate
4916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        files, and <b>out/</b> which contains <b>testdata.dat.</b></td>
4926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
4936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
4946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
4956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td><i>&lt;ICU&gt;</i>/source/<b>tools</b>/</td>
4966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
4976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>Tools for generating the data files. Data files are generated by
4986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        invoking <i>&lt;ICU&gt;</i>/source/data/build/makedata.bat on Win32 or
4996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <i>&lt;ICU&gt;</i>/source/make on UNIX.</td>
5006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
5016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
5026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
5036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td><i>&lt;ICU&gt;</i>/source/<b>samples</b>/</td>
5046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
5056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>Various sample programs that use ICU</td>
5066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
5076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
5086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
5096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td><i>&lt;ICU&gt;</i>/source/<b>extra</b>/</td>
5106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
5116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>Non-supported API additions. Currently, it contains the 'uconv' tool
5126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        to perform codepage conversion on files.</td>
5136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
5146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
5156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
5166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td><i>&lt;ICU&gt;</i>/<b>packaging</b>/</td>
5176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
5186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>This directory contain scripts and tools for packaging the final
5196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        ICU build for various release platforms.</td>
5206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
5216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
5226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
5236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td><i>&lt;ICU&gt;</i>/source/<b>config</b>/</td>
5246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
5256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>Contains helper makefiles for platform specific build commands. Used
5266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        by 'configure'.</td>
5276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
5286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
5296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
5306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td><i>&lt;ICU&gt;</i>/source/<b>allinone</b>/</td>
5316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
5326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>Contains top-level ICU workspace and project files, for instance to
5336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        build all of ICU under one MSVC project.</td>
5346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
5356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
5366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
5376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td><i>&lt;ICU&gt;</i>/<b>include</b>/</td>
5386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
5396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>Contains the headers needed for developing software that uses ICU on
5406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        Windows.</td>
5416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
5426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
5436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
5446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td><i>&lt;ICU&gt;</i>/<b>lib</b>/</td>
5456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
5466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>Contains the import libraries for linking ICU into your Windows
5476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        application.</td>
5486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
5496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
5506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
5516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td><i>&lt;ICU&gt;</i>/<b>bin</b>/</td>
5526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
5536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>Contains the libraries and executables for using ICU on Windows.</td>
5546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
5556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    </table>
5566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <!-- end of ICU structure ==================================== -->
5576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
5586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h2><a name="HowToBuild" href="#HowToBuild" id="HowToBuild">How To Build And
5596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    Install ICU</a></h2>
5606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
5616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h3><a name="RecBuild" href="#RecBuild" id=
5626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "RecBuild">Recommended Build Options</a></h3>
5636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
5646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>Depending on the platform and the type of installation,
5656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    we recommend a small number of modifications and build options.</p>
5666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <ul>
5676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li><b>Namespace:</b> By default, unicode/uversion.h has
5686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        "using namespace icu;" which defeats much of the purpose of the namespace.
5696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        (This is for historical reasons: Originally, ICU4C did not use namespaces,
5706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        and some compilers did not support them. The default "using" statement
5716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        preserves source code compatibility.)<br />
5726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        We recommend you turn this off via <code>-DU_USING_ICU_NAMESPACE=0</code>
5736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        or by modifying unicode/uversion.h:
5746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org<pre>Index: source/common/unicode/uversion.h
5756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org===================================================================
5766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org--- source/common/unicode/uversion.h    (revision 26606)
5776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org+++ source/common/unicode/uversion.h    (working copy)
5786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org@@ -180,7 +180,8 @@
5796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org #   define U_NAMESPACE_QUALIFIER U_ICU_NAMESPACE::
5806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
5816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org #   ifndef U_USING_ICU_NAMESPACE
5826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org-#       define U_USING_ICU_NAMESPACE 1
5836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org+        // Set to 0 to force namespace declarations in ICU usage.
5846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org+#       define U_USING_ICU_NAMESPACE 0
5856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org #   endif
5866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org #   if U_USING_ICU_NAMESPACE
5876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org         U_NAMESPACE_USE
5886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org</pre>
5896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        ICU call sites then either qualify ICU types explicitly,
5906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        for example <code>icu::UnicodeString</code>,
5916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        or do <code>using icu::UnicodeString;</code> where appropriate.</li>
5926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li><b>Hardcode the default charset to UTF-8:</b> On platforms where
5936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        the default charset is always UTF-8,
5946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        like MacOS X and some Linux distributions,
5956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        we recommend hardcoding ICU's default charset to UTF-8.
5966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        This means that some implementation code becomes simpler and faster,
5976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        and statically linked ICU libraries become smaller.
5986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        (See the <a href="http://icu-project.org/apiref/icu4c/utypes_8h.html#0a33e1edf3cd23d9e9c972b63c9f7943">U_CHARSET_IS_UTF8</a>
5996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        API documentation for more details.)<br />
6006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        You can <code>-DU_CHARSET_IS_UTF8=1</code> or
6016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        modify unicode/utypes.h (in ICU 4.8 and below)
6026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        or modify unicode/platform.h (in ICU 49 and higher):
6036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org<pre>Index: source/common/unicode/utypes.h
6046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org===================================================================
6056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org--- source/common/unicode/utypes.h      (revision 26606)
6066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org+++ source/common/unicode/utypes.h      (working copy)
6076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org@@ -160,7 +160,7 @@
6086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org  * @see UCONFIG_NO_CONVERSION
6096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org  */
6106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org #ifndef U_CHARSET_IS_UTF8
6116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org-#   define U_CHARSET_IS_UTF8 0
6126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org+#   define U_CHARSET_IS_UTF8 1
6136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org #endif
6146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
6156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /*===========================================================================*/
6166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org</pre></li>
6176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li><b>UnicodeString constructors:</b> The UnicodeString class has
6186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        several single-argument constructors that are not marked "explicit"
6196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        for historical reasons.
6206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        This can lead to inadvertent construction of a <code>UnicodeString</code>
6216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        with a single character by using an integer,
6226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        and it can lead to inadvertent dependency on the conversion framework
6236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        by using a C string literal.<br />
6246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        Beginning with ICU 49, you should do the following:
6256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <ul>
6266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          <li>Consider marking the from-<code>UChar</code>
6276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            and from-<code>UChar32</code> constructors explicit via
6286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            <code>-DUNISTR_FROM_CHAR_EXPLICIT=explicit</code> or similar.</li>
6296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          <li>Consider marking the from-<code>const char*</code> and
6306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            from-<code>const UChar*</code> constructors explicit via
6316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            <code>-DUNISTR_FROM_STRING_EXPLICIT=explicit</code> or similar.</li>
6326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        </ul>
6336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        Note: The ICU test suites cannot be compiled with these settings.
6346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </li>
6356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li><b>utf.h, utf8.h, utf16.h, utf_old.h:</b>
6366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        By default, utypes.h (and thus almost every public ICU header)
6376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        includes all of these header files.
6386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        Often, none of them are needed, or only one or two of them.
6396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        All of utf_old.h is deprecated or obsolete.<br />
6406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        Beginning with ICU 49,
6416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        you should define <code>U_NO_DEFAULT_INCLUDE_UTF_HEADERS</code> to 1
6426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        (via -D or uconfig.h, as above)
6436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        and include those header files explicitly that you actually need.<br />
6446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        Note: The ICU test suites cannot be compiled with this setting.</li>
6456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li><b>.dat file:</b> By default, the ICU data is built into
6466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        a shared library (DLL). This is convenient because it requires no
6476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        install-time or runtime configuration,
6486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        but the library is platform-specific and cannot be modified.
6496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        A .dat package file makes the opposite trade-off:
6506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        Platform-portable (except for endianness and charset family, which
6516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        can be changed with the icupkg tool)
6526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        and modifiable (also with the icupkg tool).
6536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        If a path is set, then single data files (e.g., .res files)
6546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        can be copied to that location to provide new locale data
6556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        or conversion tables etc.<br />
6566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        The only drawback with a .dat package file is that the application
6576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        needs to provide ICU with the file system path to the package file
6586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        (e.g., by calling <code>u_setDataDirectory()</code>)
6596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        or with a pointer to the data (<code>udata_setCommonData()</code>)
6606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        before other ICU API calls.
6616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        This is usually easy if ICU is used from an application where
6626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <code>main()</code> takes care of such initialization.
6636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        It may be hard if ICU is shipped with
6646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        another shared library (such as the Xerces-C++ XML parser)
6656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        which does not control <code>main()</code>.<br />
6666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        See the <a href="http://userguide.icu-project.org/icudata">User Guide ICU Data</a>
6676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        chapter for more details.<br />
6686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        If possible, we recommend building the .dat package.
6696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        Specify <code>--with-data-packaging=archive</code>
6706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        on the configure command line, as in<br />
6716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <code>runConfigureICU Linux --with-data-packaging=archive</code><br />
6726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        (Read the configure script's output for further instructions.
6736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        On Windows, the Visual Studio build generates both the .dat package
6746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        and the data DLL.)<br />
6756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        Be sure to install and use the tiny stubdata library
6766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        rather than the large data DLL.</li>
6776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li><b>Static libraries:</b> It may make sense to build the ICU code
6786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        into static libraries (.a) rather than shared libraries (.so/.dll).
6796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        Static linking reduces the overall size of the binary by removing
6806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        code that is never called.<br />
6816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        Example configure command line:<br />
6826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <code>runConfigureICU Linux --enable-static --disable-shared</code></li>
6836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li><b>Out-of-source build:</b> It is usually desirable to keep the ICU
6846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        source file tree clean and have build output files written to
6856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        a different location. This is called an "out-of-source build".
6866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        Simply invoke the configure script from the target location:
6876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org<pre>~/icu$ svn export http://source.icu-project.org/repos/icu/icu/trunk
6886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org~/icu$ mkdir trunk-dev
6896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org~/icu$ cd trunk-dev
6906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org~/icu/trunk-dev$ /trunk/source/runConfigureICU Linux
6916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org~/icu/trunk-dev$ make check</pre></li>
6926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    </ul>
6936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h4>ICU as a System-Level Library</h4>
6946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>If ICU is installed as a system-level library, there are further
6956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      opportunities and restrictions to consider.
6966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      For details, see the <em>Using ICU as an Operating System Level Library</em>
6976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      section of the <a href="http://userguide.icu-project.org/design">User Guide ICU Architectural Design</a> chapter.</p>
6986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <ul>
6996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li><b>Data path:</b> For a system-level library, it is best to load
7006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        ICU data from the .dat package file because the file system path
7016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        to the .dat package file can be hardcoded. ICU will automatically set
7026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        the path to the final install location using U_ICU_DATA_DEFAULT_DIR.
7036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        Alternatively, you can set <code>-DICU_DATA_DIR=/path/to/icu/data</code>
7046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        when building the ICU code. (Used by source/common/putil.c.)<br />
7056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        Consider also setting <code>-DICU_NO_USER_DATA_OVERRIDE</code>
7066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        if you do not want the "ICU_DATA" environment variable to be used.
7076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        (An application can still override the data path via
7086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <code>u_setDataDirectory()</code> or
7096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <code>udata_setCommonData()</code>.</li>
7106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li><b>Hide draft API:</b> API marked with <code>@draft</code>
7116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        is new and not yet stable. Applications must not rely on unstable
7126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        APIs from a system-level library.
7136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        Define <code>U_HIDE_DRAFT_API</code>, <code>U_HIDE_INTERNAL_API</code>
7146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        and <code>U_HIDE_SYSTEM_API</code>
7156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        by modifying unicode/utypes.h before installing it.</li>
7166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li><b>Only C APIs:</b> Applications must not rely on C++ APIs from a
7176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        system-level library because binary C++ compatibility
7186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        across library and compiler versions is very hard to achieve.
7196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        Most ICU C++ APIs are in header files that contain a comment with
7206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <code>\brief C++ API</code>.
7216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        Consider not installing these header files.</li>
7226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li><b>Disable renaming:</b> By default, ICU library entry point names
7236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        have an ICU version suffix. Turn this off for a system-level installation,
7246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        to enable upgrading ICU without breaking applications. For example:<br />
7256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <code>runConfigureICU Linux --disable-renaming</code><br />
7266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        The public header files from this configuration must be installed
7276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        for applications to include and get the correct entry point names.</li>
7286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    </ul>
7296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
7306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h3><a name="UserConfig" href="#UserConfig" id="UserConfig">User-Configurable Settings</a></h3>
7316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>ICU4C can be customized via a number of user-configurable settings.
7326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    Many of them are controlled by preprocessor macros which are
7336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    defined in the <code>source/common/unicode/uconfig.h</code> header file.
7346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    Some turn off parts of ICU, for example conversion or collation,
7356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    trading off a smaller library for reduced functionality.
7366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    Other settings are recommended (see previous section)
7376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    but their default values are set for better source code compatibility.</p>
7386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
7396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>In order to change such user-configurable settings, you can
7406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    either modify the <code>uconfig.h</code> header file by adding
7416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    a specific <code>#define ...</code> for one or more of the macros
7426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    before they are first tested,
7436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    or set the compiler's preprocessor flags (<code>CPPFLAGS</code>) to include
7446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    an equivalent <code>-D</code> macro definition.</p>
7456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
7466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h3><a name="HowToBuildWindows" href="#HowToBuildWindows" id=
7476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "HowToBuildWindows">How To Build And Install On Windows</a></h3>
7486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
7496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>Building International Components for Unicode requires:</p>
7506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
7516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <ul>
7526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Microsoft Windows</li>
7536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
7546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Microsoft Visual C++</li>
7556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
7566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li><a href="#HowToBuildCygwin">Cygwin</a> is required when other versions
7576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      of Microsoft Visual C++ and other compilers are used to build ICU.</li>
7586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    </ul>
7596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
7606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>The steps are:</p>
7616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
7626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <ol>
7636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Unzip the icu-XXXX.zip file into any convenient location. Using command
7646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      line zip, type "unzip -a icu-XXXX.zip -d drive:\directory", or just use
7656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      WinZip.</li>
7666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
7676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Be sure that the ICU binary directory, <i>&lt;ICU&gt;</i>\bin\, is
7686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      included in the <strong>PATH</strong> environment variable. The tests will
7696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      not work without the location of the ICU DLL files in the path.</li>
7706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
7716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Open the "<i>&lt;ICU&gt;</i>\source\allinone\allinone.sln" workspace
7726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      file in Microsoft Visual Studio. (This solution includes all the
7736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      International Components for Unicode libraries, necessary ICU building
7746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      tools, and the test suite projects). Please see the <a href=
7756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      "#HowToBuildWindowsCommandLine">command line note below</a> if you want to
7766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      build from the command line instead.</li>
7776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
7786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Set the active platform to "Win32" or "x64" (See <a href="#HowToBuildWindowsPlatform">Windows platform note</a> below)
7796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      and configuration to "Debug" or "Release" (See <a href="#HowToBuildWindowsConfig">Windows configuration note</a> below).</li>
7806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
7816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Choose the "Build" menu and select "Rebuild Solution". If you want to
7826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      build the Debug and Release at the same time, see the <a href=
7836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      "#HowToBuildWindowsBatch">batch configuration note</a> below.</li>
7846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
7856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
7866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Run the tests. They can be run from the command line or from within Visual Studio.
7876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
7886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org	 <h4>Running the Tests from the Windows Command Line (cmd)</h4>
7896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org	<ul>
7906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org	   <li>For x86 (32 bit) and Debug, use: <br />
7916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
7926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org	<tt><i>&lt;ICU&gt;</i>\source\allinone\icucheck.bat  <i>Platform</i> <i>Configuration</i>
7936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org		</tt> <br />
7946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org       </li>
7956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org	<li>So, for example:
7966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org				 <br />
7976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org		<tt><i>&lt;ICU&gt;</i>\source\allinone\icucheck.bat  <b>x86</b> <b>Debug</b>
7986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org		</tt>
7996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org				<br/>  or <br />
8006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org		<tt><i>&lt;ICU&gt;</i>\source\allinone\icucheck.bat  <b>x86</b> <b>Release</b>
8016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org		</tt>
8026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org				<br/>  or <br />
8036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org		<tt><i>&lt;ICU&gt;</i>\source\allinone\icucheck.bat  <b>x64</b> <b>Release</b>
8046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org		</tt></li>
8056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org	</ul>
8066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
8076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org         <h4>Running the Tests from within Visual Studio</h4>
8086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
8096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org	<ol>
8106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Run the C++ test suite, "intltest". To do this: set the active startup
8116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      project to "intltest", and press Ctrl+F5 to run it. Make sure that it
8126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      passes without any errors.</li>
8136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
8146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Run the C test suite, "cintltst". To do this: set the active startup
8156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      project to "cintltst", and press Ctrl+F5 to run it. Make sure that it
8166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      passes without any errors.</li>
8176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
8186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Run the I/O test suite, "iotest". To do this: set the active startup
8196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      project to "iotest", and press Ctrl+F5 to run it. Make sure that it passes
8206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      without any errors.</li>
8216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
8226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org	</ol>
8236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
8246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org	</li>
8256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
8266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>You are now able to develop applications with ICU by using the
8276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      libraries and tools in <i>&lt;ICU&gt;</i>\bin\. The headers are in
8286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <i>&lt;ICU&gt;</i>\include\ and the link libraries are in
8296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <i>&lt;ICU&gt;</i>\lib\. To install the ICU runtime on a machine, or ship
8306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      it with your application, copy the needed components from
8316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <i>&lt;ICU&gt;</i>\bin\ to a location on the system PATH or to your
8326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      application directory.</li>
8336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    </ol>
8346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
8356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p><a name="HowToBuildWindowsCommandLine" id=
8366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "HowToBuildWindowsCommandLine"><strong>Using MSDEV At The Command Line
8376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    Note:</strong></a> You can build ICU from the command line. Assuming that you
8386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    have properly installed Microsoft Visual C++ to support command line
8396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    execution, you can run the following command, 'devenv.com
8406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <i>&lt;ICU&gt;</i>\source\allinone\allinone.sln /build "Win32|Release"'. You can also
8416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    use Cygwin with this compiler to build ICU, and you can refer to the <a href=
8426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "#HowToBuildCygwin">How To Build And Install On Windows with Cygwin</a>
8436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    section for more details.</p>
8446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
8456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p><a name="HowToBuildWindowsPlatform" id=
8466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "HowToBuildWindowsPlatform"><strong>Setting Active Platform
8476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    Note:</strong></a> Even though you are able to select "x64" as the active platform, if your operating system is
8486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    not a 64 bit version of Windows, the build will fail. To set the active platform, two different possibilities are:</p>
8496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
8506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <ul>
8516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Choose "Build" menu, select "Configuration Manager...", and select
8526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      "Win32" or "x64" for the Active Platform Solution.</li>
8536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
8546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Another way is to select the desired build configuration from "Solution
8556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      Platforms" dropdown menu from the standard toolbar. It will say
8566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      "Win32" or "x64" in the dropdown list.</li>
8576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    </ul>
8586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
8596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p><a name="HowToBuildWindowsConfig" id=
8606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "HowToBuildWindowsConfig"><strong>Setting Active Configuration
8616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    Note:</strong></a> To set the active configuration, two different
8626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    possibilities are:</p>
8636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
8646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <ul>
8656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Choose "Build" menu, select "Configuration Manager...", and select
8666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      "Release" or "Debug" for the Active Configuration Solution.</li>
8676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
8686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Another way is to select the desired build configuration from "Solution
8696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      Configurations" dropdown menu from the standard toolbar. It will say
8706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      "Release" or "Debug" in the dropdown list.</li>
8716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    </ul>
8726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
8736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p><a name="HowToBuildWindowsBatch" id="HowToBuildWindowsBatch"><strong>Batch
8746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    Configuration Note:</strong></a> If you want to build the Win32 and x64 platforms and
8756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    Debug and Release configurations at the same time, choose "Build" menu, and select "Batch
8766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    Build...". Click the "Select All" button, and then click the "Rebuild"
8776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    button.</p>
8786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
8796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h3><a name="HowToBuildCygwin" href="#HowToBuildCygwin" id=
8806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "HowToBuildCygwin">How To Build And Install On Windows with Cygwin</a></h3>
8816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
8826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>Building International Components for Unicode with this configuration
8836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    requires:</p>
8846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
8856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <ul>
8866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Microsoft Windows</li>
8876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
8886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Microsoft Visual C++ (when gcc isn't used).</li>
8896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
8906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>
8916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        Cygwin with the following installed:
8926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
8936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <ul>
8946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          <li>bash</li>
8956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
8966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          <li>GNU make</li>
8976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
8986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          <li>ar</li>
8996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
9006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          <li>ranlib</li>
9016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
9026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          <li>man (if you plan to look at the man pages)</li>
9036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        </ul>
9046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </li>
9056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    </ul>
9066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
9076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>There are two ways you can build ICU with Cygwin. You can build with gcc
9086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    or Microsoft Visual C++. If you use gcc, the resulting libraries and tools
9096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    will depend on the Cygwin environment. If you use Microsoft Visual C++, the
9106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    resulting libraries and tools do not depend on Cygwin and can be more easily
9116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    distributed to other Windows computers (the generated man pages and shell
9126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    scripts still need Cygwin). To build with gcc, please follow the "<a href=
9136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "#HowToBuildUNIX">How To Build And Install On UNIX</a>" instructions, while
9146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    you are inside a Cygwin bash shell. To build with Microsoft Visual C++,
9156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    please use the following instructions:</p>
9166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
9176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <ol>
9186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Start the Windows "Command Prompt" window. This is different from the
9196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      gcc build, which requires the Cygwin Bash command prompt. The Microsoft
9206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      Visual C++ compiler will not work with a bash command prompt.</li>
9216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
9226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>If the computer isn't set up to use Visual C++ from the command line,
9236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      you need to run vcvars32.bat.<br />For example:<br />"<tt>C:\Program Files\Microsoft
9246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      Visual Studio 8\VC\bin\vcvars32.bat</tt>" can be used for 32-bit builds
9256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <strong>or</strong> <br />"<tt>C:\Program Files (x86)\Microsoft Visual Studio
9266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      8\VC\bin\amd64\vcvarsamd64.bat</tt>" can be used for 64-bit builds on
9276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      Windows x64.</li>
9286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
9296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Unzip the icu-XXXX.zip file into any convenient location. Using command
9306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      line zip, type "unzip -a icu-XXXX.zip -d drive:\directory", or just use
9316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      WinZip.</li>
9326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
9336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Change directory to "icu/source", which is where you unzipped ICU.</li>
9346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
9356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Run "<tt>bash <a href="source/runConfigureICU">/runConfigureICU</a>
9366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      Cygwin/MSVC</tt>" (See <a href="#HowToWindowsConfigureICU">Windows
9376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      configuration note</a> and non-functional configure options below).</li>
9386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
9396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Type <tt>"make"</tt> to compile the libraries and all the data files.
9406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      This make command should be GNU make.</li>
9416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
9426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Optionally, type <tt>"make check"</tt> to run the test suite, which
9436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      checks for ICU's functionality integrity (See <a href=
9446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      "#HowToTestWithoutGmake">testing note</a> below).</li>
9456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
9466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Type <tt>"make install"</tt> to install ICU. If you used the --prefix=
9476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      option on configure or runConfigureICU, ICU will be installed to the
9486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      directory you specified. (See <a href="#HowToInstallICU">installation
9496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      note</a> below).</li>
9506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    </ol>
9516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
9526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p><a name="HowToWindowsConfigureICU" id=
9536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "HowToWindowsConfigureICU"><strong>Configuring ICU on Windows
9546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    NOTE:</strong></a> </p>
9556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>
9566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    Ensure that the order of the PATH is MSVC, Cygwin, and then other PATHs. The configure
9576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    script needs certain tools in Cygwin (e.g. grep).
9586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    </p>
9596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>
9606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    Also, you may need to run <tt>"dos2unix.exe"</tt> on all of the scripts (e.g. configure)
9616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    in the top source directory of ICU. To avoid this issue, you can download
9626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    the ICU source for Unix platforms (icu-xxx.tgz).
9636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    </p>
9646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>In addition to the Unix <a href=
9656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "#HowToConfigureICU">configuration note</a> the following configure options
9666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    currently do not work on Windows with Microsoft's compiler. Some options can
9676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    work by manually editing <tt>icu/source/common/unicode/pwin32.h</tt>, but
9686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    manually editing the files is not recommended.</p>
9696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
9706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <ul>
9716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li><tt>--disable-renaming</tt></li>
9726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
9736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li><tt>--enable-tracing</tt></li>
9746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
9756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li><tt>--enable-rpath</tt></li>
9766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
9776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li><tt>--enable-static</tt> (Requires that U_STATIC_IMPLEMENTATION be
9786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      defined in user code that links against ICU's static libraries.)</li>
9796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
9806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li><tt>--with-data-packaging=files</tt> (The pkgdata tool currently does
9816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      not work in this mode. Manual packaging is required to use this mode.)</li>
9826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    </ul>
9836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
9846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h3><a name="HowToBuildUNIX" href="#HowToBuildUNIX" id="HowToBuildUNIX">How
9856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    To Build And Install On UNIX</a></h3>
9866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
9876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>Building International Components for Unicode on UNIX requires:</p>
9886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
9896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <ul>
9906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>A C++ compiler installed on the target machine (for example: gcc, CC,
9916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      xlC_r, aCC, cxx, etc...).</li>
9926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
9936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>An ANSI C compiler installed on the target machine (for example:
9946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      cc).</li>
9956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
9966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>A recent version of GNU make (3.80+).</li>
9976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
9986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>For a list of z/OS tools please view the <a href="#HowToBuildZOS">z/OS
9996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      build section</a> of this document for further details.</li>
10006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    </ul>
10016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
10026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>Here are the steps to build ICU:</p>
10036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
10046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <ol>
10056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Decompress the icu-<i>X</i>.<i>Y</i>.tgz (or
10066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      icu-<i>X</i>.<i>Y</i>.tar.gz) file. For example, <tt>"gunzip -d &lt;
10076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      icu-<i>X</i>.<i>Y</i>.tgz | tar xvf -"</tt></li>
10086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
10096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Change directory to the "icu/source".</li>
10106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
10116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Run <span style='font-family: monospace;'>"chmod +x runConfigureICU configure install-sh"</span> because
10126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      these files may have the wrong permissions.</li>
10136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
10146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Run the <span style='font-family: monospace;'><a href="source/runConfigureICU">runConfigureICU</a></span>
10156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      script for your platform. (See <a href="#HowToConfigureICU">configuration
10166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      note</a> below).</li>
10176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
10186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Type <span style='font-family: monospace;'>"gmake"</span> (or "make" if GNU make is the default make on
10196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      your platform) to compile the libraries and all the data files. The proper
10206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      name of the GNU make command is printed at the end of the configuration
10216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      run, as in "You must use gmake to compile ICU".
10226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <br/>
10236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      Note that the compilation command output may be simplified on your platform.  If this is the case, you will see just:
10246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <blockquote><p style='background-color: #ddd; font-family: monospace; font-size: small'>gcc ... stubdata.c</p></blockquote>
10256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      rather than
10266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <blockquote><p style='background-color: #ddd; font-family: monospace; font-size: small'>gcc  -DU_NO_DEFAULT_INCLUDE_UTF_HEADERS=1 -D_REENTRANT -I../common -DU_ATTRIBUTE_DEPRECATED= -O2 -Wall -std=c99 -pedantic -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -c -DPIC -fPIC -o stubdata.o stubdata.c</p></blockquote>
10276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      .<br/>
10286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      If you need to see the whole compilation line,  use <span style='font-family: monospace;'>"gmake VERBOSE=1"</span>. The full compilation line will print if an error occurs.
10296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </li>
10306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
10316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Optionally, type <span style='font-family: monospace;'>"gmake check"</span> to run the test suite, which
10326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      checks for ICU's functionality integrity (See <a href=
10336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      "#HowToTestWithoutGmake">testing note</a> below).</li>
10346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
10356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Type <span style='font-family: monospace;'>"gmake install"</span> to install ICU. If you used the --prefix=
10366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      option on configure or runConfigureICU, ICU will be installed to the
10376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      directory you specified. (See <a href="#HowToInstallICU">installation
10386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      note</a> below).</li>
10396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    </ol>
10406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
10416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p><a name="HowToConfigureICU" id="HowToConfigureICU"><strong>Configuring ICU
10426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    NOTE:</strong></a> Type <tt>"/runConfigureICU --help"</tt> for help on how
10436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    to run it and a list of supported platforms. You may also want to type
10446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <tt>"/configure --help"</tt> to print the available configure options that
10456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    you may want to give runConfigureICU. If you are not using the
10466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    runConfigureICU script, or your platform is not supported by the script, you
10476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    may need to set your CC, CXX, CFLAGS and CXXFLAGS environment variables, and
10486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    type <tt>"/configure"</tt>.
10496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    HP-UX users, please see this <a href="#ImportantNotesHPUX">note regarding
10506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    HP-UX multithreaded build issues</a> with newer compilers. Solaris users,
10516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    please see this <a href="#ImportantNotesSolaris">note regarding Solaris
10526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    multithreaded build issues</a>.</p>
10536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
10546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>ICU is built with strict compiler warnings enabled by default.  If this
10556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    causes excessive numbers of warnings on your platform, use the --disable-strict
10566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    option to configure to reduce the warning level.</p>
10576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
10586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p><a name="HowToTestWithoutGmake" id="HowToTestWithoutGmake"><strong>Running
10596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    The Tests From The Command Line NOTE:</strong></a> You may have to set
10606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    certain variables if you with to run test programs individually, that is
10616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    apart from "gmake check". The environment variable <strong>ICU_DATA</strong>
10626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    can be set to the full pathname of the data directory to indicate where the
10636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    locale data files and conversion mapping tables are when you are not using
10646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    the shared library (e.g. by using the .dat archive or the individual data
10656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    files). The trailing "/" is required after the directory name (e.g.
10666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "$Root/source/data/out/" will work, but the value "$Root/source/data/out" is
10676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    not acceptable). You do not need to set <strong>ICU_DATA</strong> if the
10686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    complete shared data library is in your library path.</p>
10696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
10706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p><a name="HowToInstallICU" id="HowToInstallICU"><strong>Installing ICU
10716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    NOTE:</strong></a> Some platforms use package management tools to control the
10726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    installation and uninstallation of files on the system, as well as the
10736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    integrity of the system configuration. You may want to check if ICU can be
10746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    packaged for your package management tools by looking into the "packaging"
10756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    directory. (Please note that if you are using a snapshot of ICU from Subversion, it
10766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    is probable that the packaging scripts or related files are not up to date
10776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    with the contents of ICU at this time, so use them with caution).</p>
10786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
10796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h3><a name="HowToBuildZOS" href="#HowToBuildZOS" id="HowToBuildZOS">How To
10806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    Build And Install On z/OS (OS/390)</a></h3>
10816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
10826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>You can install ICU on z/OS or OS/390 (the previous name of z/OS), but IBM
10836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    tests only the z/OS installation. You install ICU in a z/OS UNIX system
10846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    services file system such as HFS or zFS. On this platform, it is important
10856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    that you understand a few details:</p>
10866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
10876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <ul>
10886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>The makedep and GNU make tools are required for building ICU. If it
10896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      is not already installed on your system, it is available at the <a href=
10906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      "http://www-03.ibm.com/servers/eserver/zseries/zos/unix/bpxa1toy.html">z/OS UNIX -
10916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      Tools and Toys</a> site. The PATH environment variable should be updated to
10926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      contain the location of this executable prior to build. Failure to add these
10936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      tools to your PATH will cause ICU build failures or cause pkgdata to fail
10946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      to run.</li>
10956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
10966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Since USS does not support using the mmap() function over NFS, it is
10976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      recommended that you build ICU on a local filesystem. Once ICU has been
10986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      built, you should not have this problem while using ICU when the data
10996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      library has been built as a shared library, which is this is the default
11006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      setting.</li>
11016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
11026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Encoding considerations: The source code assumes that it is compiled
11036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      with codepage ibm-1047 (to be exact, the UNIX System Services variant of
11046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      it). The pax command converts all of the source code files from ASCII to
11056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      codepage ibm-1047 (USS) EBCDIC. However, some files are binary files and
11066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      must not be converted, or must be converted back to their original state.
11076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      You can use the <a href="as_is/os390/unpax-icu.sh">unpax-icu.sh</a> script
11086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      to do this for you automatically. It will unpackage the tar file and
11096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      convert all the necessary files for you automatically.</li>
11106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
11116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>z/OS supports both native S/390 hexadecimal floating point and (with
11126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      OS/390 2.6 and later) IEEE 754 binary floating point. This is a compile
11136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      time option. Applications built with IEEE should use ICU DLLs that are
11146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      built with IEEE (and vice versa). The environment variable IEEE390=0 will
11156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      cause the z/OS version of ICU to be built without IEEE floating point
11166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      support and use the native hexadecimal floating point. By default ICU is
11176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      built with IEEE 754 support. Native floating point support is sufficient
11186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      for codepage conversion, resource bundle and UnicodeString operations, but
11196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      the Format APIs require IEEE binary floating point.</li>
11206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
11216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>z/OS introduced the concept of Extra Performance Linkage (XPLINK) to
11226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      bring performance improvement opportunities to call-intensive C and C++
11236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      applications such as ICU. XPLINK is enabled on a DLL-by-DLL basis, so if
11246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      you are considering using XPLINK in your application that uses ICU, you
11256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      should consider building the XPLINK-enabled version of ICU. You need to
11266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      set ICU's environment variable <code>OS390_XPLINK=1</code> prior to
11276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      invoking the make process to produce binaries that are enabled for
11286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      XPLINK. The XPLINK option, which is available for z/OS 1.2 and later,
11296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      requires the PTF PQ69418 to build XPLINK enabled binaries.</li>
11306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
11316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>ICU requires XPLINK for the icuio library. If you want to use the
11326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      rest of ICU without XPLINK, then you must use the --disable-icuio
11336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      configure option.</li>
11346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
11356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>The latest versions of z/OS use <a
11366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      href="http://www.ibm.com/support/docview.wss?uid=swg2120240">XPLINK
11376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      version (C128) of the C++ standard library</a> by default. You may see <a
11386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      href="http://www.ibm.com/support/docview.wss?uid=swg21376279">an
11396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      error</a> when running with XPLINK disabled. To avoid this error,
11406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      set the following environment variable or similar:
11416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
11426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org<pre><samp>export _CXX_PSYSIX="CEE.SCEELIB(C128N)":"CBC.SCLBSID(IOSTREAM,COMPLEX)"</samp></pre>
11436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </li>
11446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
11456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
11466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>The rest of the instructions for building and testing ICU on z/OS with
11476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      UNIX System Services are the same as the <a href="#HowToBuildUNIX">How To
11486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      Build And Install On UNIX</a> section.</li>
11496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    </ul>
11506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
11516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h4>z/OS (Batch/PDS) support outside the UNIX system services
11526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    environment</h4>
11536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
11546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>By default, ICU builds its libraries into the UNIX file system (HFS). In
11556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    addition, there is a z/OS specific environment variable (OS390BATCH) to build
11566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    some libraries into the z/OS native file system. This is useful, for example,
11576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    when your application is externalized via Job Control Language (JCL).</p>
11586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
11596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>The OS390BATCH environment variable enables non-UNIX support including the
11606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    batch environment. When OS390BATCH is set, the libicui18n<i>XX</i>.dll,
11616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    libicuuc<i>XX</i>.dll, and libicudt<i>XX</i>e.dll binaries are built into
11626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    data sets (the native file system). Turning on OS390BATCH does not turn off
11636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    the normal z/OS UNIX build. This means that the z/OS UNIX (HFS) DLLs will
11646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    always be created.</p>
11656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
11666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>Two additional environment variables indicate the names of the z/OS data
11676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    sets to use. The LOADMOD environment variable identifies the name of the data
11686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    set that contains the dynamic link libraries (DLLs) and the LOADEXP
11696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    environment variable identifies the name of the data set that contains the
11706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    side decks, which are normally the files with the .x suffix in the UNIX file
11716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    system.</p>
11726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
11736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>A data set is roughly equivalent to a UNIX or Windows file. For most kinds
11746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    of data sets the operating system maintains record boundaries. UNIX and
11756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    Windows files are byte streams. Two kinds of data sets are PDS and PDSE. Each
11766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    data set of these two types contains a directory. It is like a UNIX
11776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    directory. Each "file" is called a "member". Each member name is limited to
11786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    eight bytes, normally EBCDIC.</p>
11796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
11806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>Here is an example of some environment variables that you can set prior to
11816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    building ICU:</p>
11826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org<pre>
11836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org<samp>OS390BATCH=1
11846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgLOADMOD=<i>USER</i>.ICU.LOAD
11856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgLOADEXP=<i>USER</i>.ICU.EXP</samp>
11866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org</pre>
11876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
11886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>The PDS member names for the DLL file names are as follows:</p>
11896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org<pre>
11906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org<samp>IXMI<i>XX</i>IN --&gt; libicui18n<i>XX</i>.dll
11916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgIXMI<i>XX</i>UC --&gt; libicuuc<i>XX</i>.dll
11926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgIXMI<i>XX</i>DA --&gt; libicudt<i>XX</i>e.dll</samp>
11936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org</pre>
11946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
11956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>You should point the LOADMOD environment variable at a partitioned data
11966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    set extended (PDSE) and point the LOADEXP environment variable at a
11976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    partitioned data set (PDS). The PDSE can be allocated with the following
11986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    attributes:</p>
11996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org<pre>
12006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org<samp>Data Set Name . . . : <i>USER</i>.ICU.LOAD
12016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgManagement class. . : <i>**None**</i>
12026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgStorage class . . . : <i>BASE</i>
12036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgVolume serial . . . : <i>TSO007</i>
12046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDevice type . . . . : <i>3390</i>
12056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgData class. . . . . : <i>LOAD</i>
12066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgOrganization  . . . : PO
12076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgRecord format . . . : U
12086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgRecord length . . . : 0
12096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgBlock size  . . . . : <i>32760</i>
12106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org1st extent cylinders: 1
12116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgSecondary cylinders : 5
12126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgData set name type  : LIBRARY</samp>
12136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org</pre>
12146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
12156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>The PDS can be allocated with the following attributes:</p>
12166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org<pre>
12176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org<samp>Data Set Name . . . : <i>USER</i>.ICU.EXP
12186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgManagement class. . : <i>**None**</i>
12196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgStorage class . . . : <i>BASE</i>
12206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgVolume serial . . . : <i>TSO007</i>
12216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDevice type . . . . : <i>3390</i>
12226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgData class. . . . . : <i>**None**</i>
12236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgOrganization  . . . : PO
12246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgRecord format . . . : FB
12256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgRecord length . . . : 80
12266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgBlock size  . . . . : <i>3200</i>
12276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org1st extent cylinders: 3
12286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgSecondary cylinders : 3
12296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgData set name type  : PDS</samp>
12306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org</pre>
12316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
12326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h3><a name="HowToBuildOS400" href="#HowToBuildOS400" id=
12336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "HowToBuildOS400">How To Build And Install On The IBM i Family (IBM i, i5/OS OS/400)</a></h3>
12346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
12356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>Before you start building ICU, ICU requires the following:</p>
12366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
12376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <ul>
12386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>QSHELL interpreter installed (install base option 30, operating system)
12396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <!--li>QShell Utilities, PRPQ 5799-XEH (not required for V4R5)</li--></li>
12406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
12416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>ILE C/C++ Compiler installed on the system</li>
12426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
12436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>The latest IBM tools for Developers for IBM i &mdash;
12446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <a href='http://www.ibm.com/servers/enable/site/porting/tools/'>http://www.ibm.com/servers/enable/site/porting/tools/</a>
12456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <!-- formerly: http://www.ibm.com/servers/enable/site/porting/iseries/overview/gnu_utilities.html -->
12466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </li>
12476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    </ul>
12486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
12496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>The following describes how to setup and build ICU. For background
12506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    information, you should look at the <a href="#HowToBuildUNIX">UNIX build
12516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    instructions</a>.</p>
12526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
12536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <ol>
12546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>
12556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        Copy the ICU source .tgz to the IBM i environment, as binary.
12566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        Also, copy the <a href='as_is/os400/unpax-icu.sh'>unpax-icu.sh</a> script into the same directory, as a text file.
12576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </li>
12586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
12596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>
12606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        Create target library. This library will be the target for the
12616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        resulting modules, programs and service programs. You will specify this
12626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        library on the OUTPUTDIR environment variable.
12636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org<pre>
12646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org<samp>CRTLIB LIB(<i>libraryname</i>)
12656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgADDENVVAR ENVVAR(OUTPUTDIR) VALUE('<i>libraryname</i>') REPLACE(*YES)   </samp></pre>
12666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </li>
12676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
12686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>
12696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      Set up the following environment variables and job characteristics in your build process
12706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org<pre>
12716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org<samp>ADDENVVAR ENVVAR(MAKE) VALUE('gmake') REPLACE(*YES)
12726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgCHGJOB CCSID(37)</samp></pre></li>
12736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
12746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Fire up the QSH (all subsequent commands are run inside the qsh session.)</i>
12756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <pre><samp>qsh</samp></pre>
12766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </li>
12776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
12786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Set up the PATH: <pre><samp>export PATH=/QIBM/ProdData/DeveloperTools/qsh/bin:$PATH:/QOpenSys/usr/bin</samp></pre>
12796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </li>
12806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
12816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Unpack the ICU source code archive:
12826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <pre><samp>gzip -d icu-<i>X</i>.<i>Y</i>.tgz</samp></pre>
12836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          </li>
12846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
12856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Run unpax-icu.sh on the tar file generated from the previous step.
12866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <pre><samp>unpax-icu.sh icu.tar</samp></pre></li>
12876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
12886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Build the program ICULD which ICU will use for linkage.
12896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <pre><samp>cd icu/as_is/os400
12906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgqsh bldiculd.sh
12916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgcd ../../..</pre></samp>
12926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        </li>
12936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
12946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Change into the 'source' directory, and configure ICU.  (See <a href="#HowToConfigureICU">configuration
12956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      note</a> for details). Note that --with-data-packaging=archive and setting the --prefix are recommended, building in default (dll) mode is currently not supported.
12966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <pre><samp>cd icu/source
12976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/runConfigureICU IBMi --prefix=<i>/path/to/somewhere</i> --with-data-packaging=archive</samp></pre>
12986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org</li>
12996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
13006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Build ICU. <i>(Note: Do not use the -j option)</i> <pre><samp>gmake</samp></pre></li>
13016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
13026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Test ICU. <pre><samp>gmake check</samp></pre>
13036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <smaller>(The <tt> QIBM_MULTI_THREADED=Y</tt> flag will be automatically applied to intltest -
13046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          you can look at the <a href=
13056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      "http://publib.boulder.ibm.com/infocenter/iseries/v5r3/index.jsp?topic=/apis/concept4.htm">
13066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      iSeries Information Center</a> for more details regarding the running of multiple threads
13076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      on IBM i.)</smaller></li>
13086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    </ol>
13096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
13106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <!-- cross -->
13116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h3><a name="HowToCrossCompileICU" href="#HowToCrossCompileICU" id="HowToCrossCompileICU">How To Cross Compile ICU</a></h3>
13126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org		<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>
13136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org		<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>
13146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org		<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>
13156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org		<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>
13166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org		<p>Three initially-empty directories will be used in this example:</p>
13176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org		<table summary="Three directories used in this example" class="docTable">
13186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org			<tr>
13196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org				<th align="left">/icu</th><td>a copy of the ICU source</td>
13206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org			</tr>
13216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org			<tr>
13226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org				<th align="left">/buildA</th><td>an empty directory, it will contain ICU built for A<br />(MacOSX in this case)</td>
13236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org			</tr>
13246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org			<tr>
13256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org				<th align="left">/buildB</th><td>an empty directory, it will contain ICU built for B<br />(HaikuOS in this case)</td>
13266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org			</tr>
13276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org		</table>
13286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
13296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org		<ol>
13306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org		<li>Check out or unpack the ICU source code into the /icu directory.You will have the directories /icu/source, etc.</li>
13316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org		<li>Build ICU in /buildA normally (using runConfigureICU or configure):
13326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org<pre class="samp">cd /buildA
13336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgsh /icu/source/runConfigureICU <strong>MacOSX</strong>
13346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orggnumake
13356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org</pre>
13366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org		</li>
13376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org		<li>Set PATH or other variables as needed, such as CPPFLAGS.</li>
13386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org		<li>Build ICU in /buildB<br />
13396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org			<div class="note"><b>Note:</b> "<code>--with-cross-build</code>" takes an absolute path.</div>
13406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org<pre class="samp">cd /buildB
13416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgsh /icu/source/configure --host=<strong>i586-pc-haiku</strong> --with-cross-build=<strong>/buildA</strong>
13426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orggnumake</pre>
13436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org		</li>
13446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org		<li>Tests and testdata can be built with "gnumake tests".</li>
13456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org	</ol>
13466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <!-- end cross -->
13476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
13486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <!-- end build environment -->
13496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
13506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h2><a name="HowToPackage" href="#HowToPackage" id="HowToPackage">How To
13516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    Package ICU</a></h2>
13526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
13536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>There are many ways that a person can package ICU with their software
13546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    products. Usually only the libraries need to be considered for packaging.</p>
13556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
13566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>On UNIX, you should use "<tt>gmake install</tt>" to make it easier to
13576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    develop and package ICU. The bin, lib and include directories are needed to
13586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    develop applications that use ICU. These directories will be created relative
13596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    to the "<tt>--prefix=</tt><i>dir</i>" configure option (See the <a href=
13606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "#HowToBuildUNIX">UNIX build instructions</a>). When ICU is built on Windows,
13616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    a similar directory structure is built.</p>
13626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
13636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>When changes have been made to the standard ICU distribution, it is
13646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    recommended that at least one of the following guidelines be followed for
13656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    special packaging.</p>
13666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
13676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <ol>
13686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Add a suffix name to the library names. This can be done with the
13696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      --with-library-suffix configure option.</li>
13706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
13716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>The installation script should install the ICU libraries into the
13726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      application's directory.</li>
13736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    </ol>
13746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
13756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>Following these guidelines prevents other applications that use a standard
13766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    ICU distribution from conflicting with any libraries that you need. On
13776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    operating systems that do not have a standard C++ ABI (name mangling) for
13786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    compilers, it is recommended to do this special packaging anyway. More
13796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    details on customizing ICU are available in the <a href=
13806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "http://userguide.icu-project.org/">User's Guide</a>. The <a href=
13816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "#SourceCode">ICU Source Code Organization</a> section of this readme.html
13826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    gives a more complete description of the libraries.</p>
13836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
13846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <table class="docTable" summary=
13856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "ICU has several libraries for you to use.">
13866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <caption>
13876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        Here is an example of libraries that are frequently packaged.
13886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </caption>
13896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
13906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
13916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <th scope="col">Library Name</th>
13926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
13936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <th scope="col">Windows Filename</th>
13946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
13956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <th scope="col">Linux Filename</th>
13966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
13976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <th scope="col">Comment</th>
13986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
13996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
14006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
14016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>Data Library</td>
14026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
14036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>icudt<i>XY</i>l.dll</td>
14046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
14056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>libicudata.so.<i>XY</i>.<i>Z</i></td>
14066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
14076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>Data required by the Common and I18n libraries. There are many ways
14086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        to package and <a href=
14096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        "http://userguide.icu-project.org/icudata">customize this
14106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        data</a>, but by default this is all you need.</td>
14116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
14126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
14136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
14146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>Common Library</td>
14156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
14166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>icuuc<i>XY</i>.dll</td>
14176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
14186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>libicuuc.so.<i>XY</i>.<i>Z</i></td>
14196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
14206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>Base library required by all other ICU libraries.</td>
14216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
14226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
14236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
14246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>Internationalization (i18n) Library</td>
14256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
14266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>icuin<i>XY</i>.dll</td>
14276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
14286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>libicui18n.so.<i>XY</i>.<i>Z</i></td>
14296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
14306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>A library that contains many locale based internationalization (i18n)
14316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        functions.</td>
14326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
14336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
14346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
14356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>Layout Engine</td>
14366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
14376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>icule<i>XY</i>.dll</td>
14386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
14396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>libicule.so.<i>XY</i>.<i>Z</i></td>
14406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
14416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>An optional engine for doing font layout.</td>
14426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
14436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
14446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
14456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>Layout Extensions Engine</td>
14466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
14476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>iculx<i>XY</i>.dll</td>
14486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
14496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>libiculx.so.<i>XY</i>.<i>Z</i></td>
14506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
14516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>An optional engine for doing font layout that uses parts of ICU.</td>
14526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
14536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
14546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
14556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>ICU I/O (Unicode stdio) Library</td>
14566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
14576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>icuio<i>XY</i>.dll</td>
14586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
14596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>libicuio.so.<i>XY</i>.<i>Z</i></td>
14606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
14616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>An optional library that provides a stdio like API with Unicode
14626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        support.</td>
14636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
14646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
14656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <tr>
14666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>Tool Utility Library</td>
14676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
14686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>icutu<i>XY</i>.dll</td>
14696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
14706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>libicutu.so.<i>XY</i>.<i>Z</i></td>
14716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
14726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <td>An internal library that contains internal APIs that are only used by
14736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        ICU's tools. If you do not use ICU's tools, you do not need this
14746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        library.</td>
14756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </tr>
14766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    </table>
14776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
14786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>Normally only the above ICU libraries need to be considered for packaging.
14796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    The versionless symbolic links to these libraries are only needed for easier
14806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    development. The <i>X</i>, <i>Y</i> and <i>Z</i> parts of the name are the
14816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    version numbers of ICU. For example, ICU 2.0.2 would have the name
14826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    libicuuc.so.20.2 for the common library. The exact format of the library
14836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    names can vary between platforms due to how each platform can handles library
14846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    versioning.</p>
14856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
14866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h2><a name="ImportantNotes" href="#ImportantNotes" id=
14876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "ImportantNotes">Important Notes About Using ICU</a></h2>
14886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
14896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h3><a name="ImportantNotesMultithreaded" href="#ImportantNotesMultithreaded"
14906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    id="ImportantNotesMultithreaded">Using ICU in a Multithreaded
14916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    Environment</a></h3>
14926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
14936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>Some versions of ICU require calling the <code>u_init()</code> function
14946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    from <code>uclean.h</code> to ensure that ICU is initialized properly. In
14956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    those ICU versions, <code>u_init()</code> must be called before ICU is used
14966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    from multiple threads. There is no harm in calling <code>u_init()</code> in a
14976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    single-threaded application, on a single-CPU machine, or in other cases where
14986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <code>u_init()</code> is not required.</p>
14996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
15006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>In addition to ensuring thread safety, <code>u_init()</code> also attempts
15016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    to load at least one ICU data file. Assuming that all data files are packaged
15026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    together (or are in the same folder in files mode), a failure code from
15036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <code>u_init()</code> usually means that the data cannot be found. In this
15046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    case, the data may not be installed properly, or the application may have
15056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    failed to call <code>udata_setCommonData()</code> or
15066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <code>u_setDataDirectory()</code> which specify to ICU where it can find its
15076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    data.</p>
15086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
15096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>Since <code>u_init()</code> will load only one or two data files, it
15106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    cannot guarantee that all of the data that an application needs is available.
15116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    It cannot check for all data files because the set of files is customizable,
15126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    and some ICU services work without loading any data at all. An application
15136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    should always check for error codes when opening ICU service objects (using
15146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <code>ucnv_open()</code>, <code>ucol_open()</code>, C++ constructors,
15156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    etc.).</p>
15166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
15176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h4>ICU 3.4 and later</h4>
15186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
15196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>ICU 3.4 self-initializes properly for multi-threaded use. It achieves this
15206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    without performance penalty by hardcoding the core Unicode properties data,
15216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    at the cost of some flexibility. (For details see Jitterbug 4497.)</p>
15226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
15236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p><code>u_init()</code> can be used to check for data loading. It tries to
15246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    load the converter alias table (<code>cnvalias.icu</code>).</p>
15256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
15266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h4>ICU 2.6..3.2</h4>
15276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
15286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>These ICU versions require a call to <code>u_init()</code> before
15296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    multi-threaded use. The services that are directly affected are those that
15306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    don't have a service object and need to be fast: normalization and character
15316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    properties.</p>
15326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
15336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p><code>u_init()</code> loads and initializes the data files for
15346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    normalization and character properties (<code>unorm.icu</code> and
15356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <code>uprops.icu</code>) and can therefore also be used to check for data
15366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    loading.</p>
15376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
15386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h4>ICU 2.4 and earlier</h4>
15396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
15406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>ICU 2.4 and earlier versions were not prepared for multithreaded use on
15416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    multi-CPU platforms where the CPUs implement weak memory coherency. These
15426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    CPUs include: Power4, Power5, Alpha, Itanium. <code>u_init()</code> was not
15436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    defined yet.</p>
15446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
15456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h4><a name="ImportantNotesHPUX" href="#ImportantNotesHPUX" id=
15466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "ImportantNotesHPUX">Using ICU in a Multithreaded Environment on
15476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    HP-UX</a></h4>
15486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
15496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>When ICU is built with aCC on HP-UX, the <a
15506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    href="http://h21007.www2.hp.com/portal/site/dspp/menuitem.863c3e4cbcdc3f3515b49c108973a801?ciid=eb08b3f1eee02110b3f1eee02110275d6e10RCRD">-AA</a>
15516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    compiler flag is used. It is required in order to use the latest
15526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    &lt;iostream&gt; API in a thread safe manner. This compiler flag affects the
15536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    version of the C++ library being used. Your applications will also need to
15546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    be compiled with -AA in order to use ICU.</p>
15556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
15566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h4><a name="ImportantNotesSolaris" href="#ImportantNotesSolaris" id=
15576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "ImportantNotesSolaris">Using ICU in a Multithreaded Environment on
15586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    Solaris</a></h4>
15596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
15606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h5>Linking on Solaris</h5>
15616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
15626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>In order to avoid synchronization and threading issues, developers are
15636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <strong>suggested</strong> to strictly follow the compiling and linking
15646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    guidelines for multithreaded applications, specified in the following
15656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    document from Sun Microsystems. Most notably, pay strict attention to the
15666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    following statements from Sun:</p>
15676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
15686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <blockquote>
15696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <p>To use libthread, specify -lthread before -lc on the ld command line, or
15706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      last on the cc command line.</p>
15716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
15726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <p>To use libpthread, specify -lpthread before -lc on the ld command line,
15736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      or last on the cc command line.</p>
15746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    </blockquote>
15756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
15766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>Failure to do this may cause spurious lock conflicts, recursive mutex
15776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    failure, and deadlock.</p>
15786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
15796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>Source: "<i>Solaris Multithreaded Programming Guide, Compiling and
15806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    Debugging</i>", Sun Microsystems, Inc., Apr 2004<br />
15816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     <a href=
15826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "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>
15836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
15846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h3><a name="ImportantNotesWindows" href="#ImportantNotesWindows" id=
15856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "ImportantNotesWindows">Windows Platform</a></h3>
15866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
15876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>If you are building on the Win32 platform, it is important that you
15886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    understand a few of the following build details.</p>
15896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
15906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h4>DLL directories and the PATH setting</h4>
15916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
15926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>As delivered, the International Components for Unicode build as several
15936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    DLLs, which are placed in the "<i>&lt;ICU&gt;</i>\bin" directory. You must
15946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    add this directory to the PATH environment variable in your system, or any
15956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    executables you build will not be able to access International Components for
15966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    Unicode libraries. Alternatively, you can copy the DLL files into a directory
15976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    already in your PATH, but we do not recommend this. You can wind up with
15986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    multiple copies of the DLL and wind up using the wrong one.</p>
15996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
16006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h4><a name="ImportantNotesWindowsPath" id=
16016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "ImportantNotesWindowsPath">Changing your PATH</a></h4>
16026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
16036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p><strong>Windows 2000/XP</strong>: Use the System Icon in the Control
16046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    Panel. Pick the "Advanced" tab. Select the "Environment Variables..."
16056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    button. Select the variable PATH in the lower box, and select the lower
16066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "Edit..." button. In the "Variable Value" box, append the string
16076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    ";<i>&lt;ICU&gt;</i>\bin" to the end of the path string. If there is
16086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    nothing there, just type in "<i>&lt;ICU&gt;</i>\bin". Click the Set button,
16096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    then the OK button.</p>
16106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
16116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>Note: When packaging a Windows application for distribution and
16126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    installation on user systems, copies of the ICU DLLs should be included with
16136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    the application, and installed for exclusive use by the application. This is
16146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    the only way to insure that your application is running with the same version
16156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    of ICU, built with exactly the same options, that you developed and tested
16166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    with. Refer to Microsoft's guidelines on the usage of DLLs, or search for the
16176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    phrase "DLL hell" on <a href=
16186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "http://msdn.microsoft.com/">msdn.microsoft.com</a>.</p>
16196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
16206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h3><a name="ImportantNotesUNIX" href="#ImportantNotesUNIX" id=
16216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "ImportantNotesUNIX">UNIX Type Platform</a></h3>
16226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
16236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>If you are building on a UNIX platform, and if you are installing ICU in a
16246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    non-standard location, you may need to add the location of your ICU libraries
16256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    to your <strong>LD_LIBRARY_PATH</strong> or <strong>LIBPATH</strong>
16266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    environment variable (or the equivalent runtime library path environment
16276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    variable for your system). The ICU libraries may not link or load properly
16286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    without doing this.</p>
16296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
16306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>Note that if you do not want to have to set this variable, you may instead
16316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    use the --enable-rpath option at configuration time. This option will
16326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    instruct the linker to always look for the libraries where they are
16336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    installed. You will need to use the appropriate linker options when linking
16346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    your own applications and libraries against ICU, too. Please refer to your
16356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    system's linker manual for information about runtime paths. The use of rpath
16366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    also means that when building a new version of ICU you should not have an
16376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    older version installed in the same place as the new version's installation
16386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    directory, as the older libraries will used during the build, instead of the
16396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    new ones, likely leading to an incorrectly build ICU. This is the proper
16406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    behavior of rpath.</p>
16416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
16426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h2><a name="PlatformDependencies" href="#PlatformDependencies" id=
16436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "PlatformDependencies">Platform Dependencies</a></h2>
16446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
16456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h3><a name="PlatformDependenciesNew" href="#PlatformDependenciesNew" id=
16466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "PlatformDependenciesNew">Porting To A New Platform</a></h3>
16476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
16486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>If you are using ICU's Makefiles to build ICU on a new platform, there are
16496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    a few places where you will need to add or modify some files. If you need
16506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    more help, you can always ask the <a href=
16516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "http://site.icu-project.org/contacts">icu-support mailing list</a>. Once
16526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    you have finished porting ICU to a new platform, it is recommended that you
16536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    contribute your changes back to ICU via the icu-support mailing list. This
16546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    will make it easier for everyone to benefit from your work.</p>
16556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
16566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h4>Data For a New Platform</h4>
16576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
16586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>For some people, it may not be necessary for completely build ICU. Most of
16596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    the makefiles and build targets are for tools that are used for building
16606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    ICU's data, and an application's data (when an application uses ICU resource
16616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    bundles for its data).</p>
16626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
16636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>Data files can be built on a different platform when both platforms share
16646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    the same endianness and the same charset family. This assertion does not
16656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    include platform dependent DLLs/shared/static libraries. For details see the
16666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    User Guide <a href="http://userguide.icu-project.org/icudata">ICU
16676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    Data</a> chapter.</p>
16686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
16696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>ICU 3.6 removes the requirement that ICU be completely built in the native
16706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    operating environment. It adds the icupkg tool which can be run on any
16716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    platform to turn binary ICU data files from any one of the three formats into
16726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    any one of the other data formats. This allows a application to use ICU data
16736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    built anywhere to be used for any other target platform.</p>
16746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
16756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p><strong>WARNING!</strong> Building ICU without running the tests is not
16766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    recommended. The tests verify that ICU is safe to use. It is recommended that
16776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    you try to completely port and test ICU before using the libraries for your
16786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    own application.</p>
16796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
16806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h4>Adapting Makefiles For a New Platform</h4>
16816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
16826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>Try to follow the build steps from the <a href="#HowToBuildUNIX">UNIX</a>
16836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    build instructions. If the configure script fails, then you will need to
16846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    modify some files. Here are the usual steps for porting to a new
16856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    platform:<br />
16866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    </p>
16876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
16886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <ol>
16896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Create an mh file in icu/source/config/. You can use mh-linux or a
16906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      similar mh file as your base configuration.</li>
16916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
16926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Modify icu/source/aclocal.m4 to recognize your platform's mh file.</li>
16936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
16946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Modify icu/source/configure.in to properly set your <b>platform</b> C
16956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      Macro define.</li>
16966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
16976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Run <a href="http://www.gnu.org/software/autoconf/">autoconf</a> in
16986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      icu/source/ without any options. The autoconf tool is standard on most
16996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      Linux systems.</li>
17006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
17016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>If you have any optimization options that you want to normally use, you
17026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      can modify icu/source/runConfigureICU to specify those options for your
17036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      platform.</li>
17046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
17056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Build and test ICU on your platform. It is very important that you run
17066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      the tests. If you don't run the tests, there is no guarentee that you have
17076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      properly ported ICU.</li>
17086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    </ol>
17096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
17106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <h3><a name="PlatformDependenciesImpl" href="#PlatformDependenciesImpl" id=
17116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "PlatformDependenciesImpl">Platform Dependent Implementations</a></h3>
17126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
17136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>The platform dependencies have been mostly isolated into the following
17146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    files in the common library. This information can be useful if you are
17156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    porting ICU to a new platform.</p>
17166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
17176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <ul>
17186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>
17196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <strong>unicode/platform.h.in</strong> (autoconf'ed platforms)<br />
17206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org         <strong>unicode/p<i>XXXX</i>.h</strong> (others: pwin32.h, ppalmos.h,
17216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        ..): Platform-dependent typedefs and defines:<br />
17226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <br />
17236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
17246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
17256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <ul>
17266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          <li>Generic types like UBool, int8_t, int16_t, int32_t, int64_t,
17276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          uint64_t etc.</li>
17286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
17296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          <li>U_EXPORT and U_IMPORT for specifying dynamic library import and
17306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          export</li>
17316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
17326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          <li>String handling support for the char16_t and wchar_t types.</li>
17336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        </ul>
17346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <br />
17356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </li>
17366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
17376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>
17386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <strong>unicode/putil.h, putil.c</strong>: platform-dependent
17396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        implementations of various functions that are platform dependent:<br />
17406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <br />
17416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
17426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
17436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <ul>
17446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          <li>uprv_isNaN, uprv_isInfinite, uprv_getNaN and uprv_getInfinity for
17456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          handling special floating point values.</li>
17466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
17476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          <li>uprv_tzset, uprv_timezone, uprv_tzname and time for getting
17486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          platform specific time and time zone information.</li>
17496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
17506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          <li>u_getDataDirectory for getting the default data directory.</li>
17516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
17526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          <li>uprv_getDefaultLocaleID for getting the default locale
17536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          setting.</li>
17546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
17556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          <li>uprv_getDefaultCodepage for getting the default codepage
17566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          encoding.</li>
17576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        </ul>
17586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <br />
17596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </li>
17606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
17616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>
17626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <strong>umutex.h, umutex.c</strong>: Code for doing synchronization in
17636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        multithreaded applications. If you wish to use International Components
17646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        for Unicode in a multithreaded application, you must provide a
17656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        synchronization primitive that the classes can use to protect their
17666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        global data against simultaneous modifications. We already supply working
17676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        implementations for many platforms that ICU builds on.<br />
17686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        <br />
17696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </li>
17706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
17716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li><strong>umapfile.h, umapfile.c</strong>: functions for mapping or
17726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      otherwise reading or loading files into memory. All access by ICU to data
17736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      from files makes use of these functions.<br />
17746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <br />
17756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      </li>
17766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
17776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      <li>Using platform specific #ifdef macros are highly discouraged outside of
17786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      the scope of these files. When the source code gets updated in the future,
17796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      these #ifdef's can cause testing problems for your platform.</li>
17806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    </ul>
17816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <hr />
17826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
17836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    <p>Copyright &copy; 1997-2013 International Business Machines Corporation and
17846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    others. All Rights Reserved.<br />
17856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     IBM Globalization Center of Competency - San Jos&eacute;<br />
17866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     4400 North First Street<br />
17876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     San Jos&eacute;, CA 95134<br />
17886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     USA</p>
17896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org  </body>
17906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org</html>
1791