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 © 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 & 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><ICU></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><ICU></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><ICU></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><ICU></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><ICU></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><ICU></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><ICU></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><ICU></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><ICU></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><ICU></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><ICU></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><ICU></i>/source/data/build/makedata.bat on Win32 or 4996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org <i><ICU></i>/source/make on UNIX.</td> 5006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org </tr> 5016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 5026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org <tr> 5036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org <td><i><ICU></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><ICU></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><ICU></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><ICU></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><ICU></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><ICU></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><ICU></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><ICU></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><ICU></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><ICU></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><ICU></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><ICU></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><ICU></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><ICU></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><ICU></i>\bin\. The headers are in 8286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org <i><ICU></i>\include\ and the link libraries are in 8296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org <i><ICU></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><ICU></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><ICU></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 < 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 --> libicui18n<i>XX</i>.dll 11916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgIXMI<i>XX</i>UC --> libicuuc<i>XX</i>.dll 11926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgIXMI<i>XX</i>DA --> 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 — 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 <iostream> 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><ICU></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><ICU></i>\bin" to the end of the path string. If there is 16086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org nothing there, just type in "<i><ICU></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 © 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é<br /> 17866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4400 North First Street<br /> 17876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org San José, CA 95134<br /> 17886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org USA</p> 17896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org </body> 17906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org</html> 1791