OLD | NEW |
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" | 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> | 2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
3 | 3 |
4 <html lang="en-US" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US"> | 4 <html lang="en-US" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US"> |
5 <head> | 5 <head> |
6 <title>ReadMe for ICU 52</title> | 6 <title>ReadMe for ICU 54.1</title> |
7 <meta name="COPYRIGHT" content= | 7 <meta name="COPYRIGHT" content= |
8 "Copyright (c) 1997-2013 IBM Corporation and others. All Rights Reserved." /
> | 8 "Copyright (c) 1997-2014 IBM Corporation and others. All Rights Reserved." /
> |
9 <meta name="KEYWORDS" content= | 9 <meta name="KEYWORDS" content= |
10 "ICU; International Components for Unicode; ICU4C; what's new; readme; read
me; introduction; downloads; downloading; building; installation;" /> | 10 "ICU; International Components for Unicode; ICU4C; what's new; readme; read
me; introduction; downloads; downloading; building; installation;" /> |
11 <meta name="DESCRIPTION" content= | 11 <meta name="DESCRIPTION" content= |
12 "The introduction to the International Components for Unicode with instructi
ons on building, installation, usage and other information about ICU." /> | 12 "The introduction to the International Components for Unicode with instructi
ons on building, installation, usage and other information about ICU." /> |
13 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /> | 13 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /> |
14 <link type="text/css" href="./icu4c.css" rel="stylesheet"/> | 14 <link type="text/css" href="./icu4c.css" rel="stylesheet"/> |
15 </head> | 15 </head> |
| 16 |
| 17 <!-- |
| 18 classes to use with the "body" - |
| 19 draft - if the release note is itself a draft (May be combined with the
other two) |
| 20 |
| 21 |
| 22 rc - if the release note is a release candidate |
| 23 milestone - if the release note is a milestone release |
| 24 --> |
16 | 25 |
| 26 <!--<body class="rc">--> |
17 <body> | 27 <body> |
18 <h1>International Components for Unicode<br /> | 28 <p class="only-draft"><b>Note:</b> This is a draft readme.</p> |
19 <abbr title="International Components for Unicode">ICU</abbr> 52 ReadMe</h1
> | |
20 | 29 |
21 <!--<p><b>Note:</b> This is a development milestone release of ICU4C 52. | 30 <h1> |
22 This milestone is intended for those wishing to get an early look at ICU 52
new features and API changes. | 31 <span class="only-draft">DRAFT</span> |
23 It is not recommended for production use.</p>--> | 32 International Components for Unicode<br/> |
24 <!--<p><b>Note:</b> This is a release candidate version of ICU4C 52. | |
25 It is not recommended for production use.</p>--> | |
26 | 33 |
27 <p>Last updated: 2013-Sep-30<br /> | 34 <span class="only-rc">Release Candidate</span> |
28 Copyright © 1997-2013 International Business Machines Corporation and | 35 <span class="only-milestone">(Milestone Release)</span> |
| 36 <abbr title="International Components for Unicode">ICU</abbr> 54.1 Read
Me |
| 37 </h1> |
| 38 |
| 39 |
| 40 <!-- Shouldn't need to comment/uncomment this paragraph, just change the bod
y class --> |
| 41 <p class="note only-milestone">This is a development milestone release of IC
U |
| 42 This milestone is intended for those wishing to get an early look at new fea
tures and API changes. |
| 43 It is not recommended for production use.</p> |
| 44 |
| 45 <!-- Shouldn't need to comment/uncomment this paragraph, just change the bod
y class --> |
| 46 <p class="note only-rc">This is a release candidate version of ICU4C. |
| 47 It is not recommended for production use.</p> |
| 48 |
| 49 <p>Last updated: 2014-September-24<br /> |
| 50 Copyright © 1997-2014 International Business Machines Corporation and |
29 others. All Rights Reserved.</p> | 51 others. All Rights Reserved.</p> |
30 <!-- Remember that there is a copyright at the end too --> | 52 <!-- Remember that there is a copyright at the end too --> |
31 <hr /> | 53 <hr/> |
32 | 54 |
33 <h2 class="TOC">Table of Contents</h2> | 55 <h2 class="TOC">Table of Contents</h2> |
34 | 56 |
35 <ul class="TOC"> | 57 <ul class="TOC"> |
36 <li><a href="#Introduction">Introduction</a></li> | 58 <li><a href="#Introduction">Introduction</a></li> |
37 | 59 |
38 <li><a href="#GettingStarted">Getting Started</a></li> | 60 <li><a href="#GettingStarted">Getting Started</a></li> |
39 | 61 |
40 <li><a href="#News">What Is New In This release?</a></li> | 62 <li><a href="#News">What Is New In This release?</a></li> |
41 | 63 |
42 <li><a href="#Download">How To Download the Source Code</a></li> | 64 <li><a href="#Download">How To Download the Source Code</a></li> |
43 | 65 |
44 <li><a href="#SourceCode">ICU Source Code Organization</a></li> | 66 <li><a href="#SourceCode">ICU Source Code Organization</a></li> |
45 | 67 |
46 <li> | 68 <li> |
47 <a href="#HowToBuild">How To Build And Install ICU</a> | 69 <a href="#HowToBuild">How To Build And Install ICU</a> |
48 | 70 |
49 <ul > | 71 <ul > |
50 <li><a href="#RecBuild">Recommended Build Options</a></li> | 72 <li><a href="#RecBuild">Recommended Build Options</a></li> |
51 | 73 |
52 <li><a href="#UserConfig">User-Configurable Settings</a></li> | 74 <li><a href="#UserConfig">User-Configurable Settings</a></li> |
53 | 75 |
54 <li><a href="#HowToBuildWindows">Windows</a></li> | 76 <li><a href="#HowToBuildWindows">Windows</a></li> |
55 | 77 |
56 <li><a href="#HowToBuildCygwin">Cygwin</a></li> | 78 <li><a href="#HowToBuildCygwin">Cygwin</a></li> |
57 | 79 |
58 <li><a href="#HowToBuildUNIX">UNIX</a></li> | 80 <li><a href="#HowToBuildUNIX">UNIX</a></li> |
59 | 81 |
60 <li><a href="#HowToBuildZOS">z/OS (os/390)</a></li> | 82 <li><a href="#HowToBuildZOS">z/OS (os/390)</a></li> |
61 | 83 |
62 <li><a href="#HowToBuildOS400">IBM i family (IBM i, i5/OS, OS/400)</a>
</li> | 84 <li><a href="#HowToBuildOS400">IBM i family (IBM i, i5/OS, OS/400)</a>
</li> |
63 | 85 |
64 <li><a href="#HowToCrossCompileICU">How to Cross Compile ICU</
a></li> | 86 <li><a href="#HowToCrossCompileICU">How to Cross Compile ICU</
a></li> |
65 </ul> | 87 </ul> |
66 </li> | 88 </li> |
67 | 89 |
68 | 90 |
69 <li><a href="#HowToPackage">How To Package ICU</a></li> | 91 <li><a href="#HowToPackage">How To Package ICU</a></li> |
70 | 92 |
71 <li> | 93 <li> |
72 <a href="#ImportantNotes">Important Notes About Using ICU</a> | 94 <a href="#ImportantNotes">Important Notes About Using ICU</a> |
73 | 95 |
74 <ul > | 96 <ul > |
75 <li><a href="#ImportantNotesMultithreaded">Using ICU in a Multithreade
d | 97 <li><a href="#ImportantNotesMultithreaded">Using ICU in a Multithreade
d |
76 Environment</a></li> | 98 Environment</a></li> |
77 | 99 |
78 <li><a href="#ImportantNotesWindows">Windows Platform</a></li> | 100 <li><a href="#ImportantNotesWindows">Windows Platform</a></li> |
79 | 101 |
80 <li><a href="#ImportantNotesUNIX">UNIX Type Platforms</a></li> | 102 <li><a href="#ImportantNotesUNIX">UNIX Type Platforms</a></li> |
81 </ul> | 103 </ul> |
82 </li> | 104 </li> |
83 | 105 |
84 <li> | 106 <li> |
85 <a href="#PlatformDependencies">Platform Dependencies</a> | 107 <a href="#PlatformDependencies">Platform Dependencies</a> |
86 | 108 |
87 <ul > | 109 <ul > |
88 <li><a href="#PlatformDependenciesNew">Porting To A New | 110 <li><a href="#PlatformDependenciesNew">Porting To A New |
89 Platform</a></li> | 111 Platform</a></li> |
90 | 112 |
91 <li><a href="#PlatformDependenciesImpl">Platform Dependent | 113 <li><a href="#PlatformDependenciesImpl">Platform Dependent |
92 Implementations</a></li> | 114 Implementations</a></li> |
93 </ul> | 115 </ul> |
94 </li> | 116 </li> |
95 </ul> | 117 </ul> |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
206 "http://site.icu-project.org/contacts">http://site.icu-project.org/conta
cts</a></td> | 228 "http://site.icu-project.org/contacts">http://site.icu-project.org/conta
cts</a></td> |
207 </tr> | 229 </tr> |
208 </table> | 230 </table> |
209 | 231 |
210 <p><strong>Important:</strong> Please make sure you understand the <a href= | 232 <p><strong>Important:</strong> Please make sure you understand the <a href= |
211 "license.html">Copyright and License Information</a>.</p> | 233 "license.html">Copyright and License Information</a>.</p> |
212 | 234 |
213 <h2><a name="News" href="#News" id="News">What is new in this | 235 <h2><a name="News" href="#News" id="News">What is new in this |
214 release?</a></h2> | 236 release?</a></h2> |
215 | 237 |
216 <p>To see which APIs are new or changed in this release, view the <a href="A
PIChangeReport.html">ICU4C API Change Report</a>. </p> | 238 <h3>API Changes</h3> |
| 239 <p>See the <a href="APIChangeReport.html">API Change Report</a> for a comple
te |
| 240 list of APIs added, removed, or changed in this release.</p> |
217 | 241 |
218 <!-- ICU 52 items --> | 242 <!-- ICU 54 items --> |
219 <h3>DecimalFormat - two functions marked as const</h3> | 243 <h3>Deprecation: Layout Engine</h3> |
| 244 <p>The LayoutEngine is now deprecated. Please |
| 245 see <a href='http://userguide.icu-project.org/layoutengine'>the |
| 246 User's Guide</a> for more details and migration recommendations. |
| 247 In the future, passing "<tt>--enable-layout</tt>" to configure |
| 248 will be required to |
| 249 enable the layout engine.</p> |
220 <p> | 250 <p> |
221 <tt>DecimalFormat::isScientificNotation</tt> and <tt>DecimalFormat::isExpo
nentSignAlwaysShown</tt> | 251 Note that the ParagraphLayout (layoutex) library is not deprecated. |
222 are now const member functions. DecimalFormat is not recommended for subcl
assing. | 252 There is a new option, <tt>--enable-layoutex</tt> which will build |
| 253 the ParagraphLayout library using <a href="http://harfbuzz.org">HarfBuzz</
a> |
| 254 instead of ICU as the layout engine. See <a href="http://userguide.icu-pro
ject.org/layoutengine"> |
| 255 the users' guide</a> for more information about how to build. |
223 </p> | 256 </p> |
| 257 <h3>Deprecation: Collation Short Strings</h3> |
| 258 <p>The collation short naming scheme and its API functions are deprecated. |
| 259 Use ucol_open() with language tag collation keywords instead (see <a href="h
ttp://userguide.icu-project.org/collation/api">Collation API Details</a>). For e
xample, <code>ucol_open("de-u-co-phonebk-ka-shifted", &errorCode)</code> |
| 260 for German Phonebook order with "ignore punctuation" mode.</p> |
224 | 261 |
225 <h3>CollationElementIterator protected methods became private</h3> | 262 <h3>Deprecation: UCOL_TAILORINGS_VERSION</h3> |
226 <p>The C++ CollationElementIterator (CEI) had two protected constructors | 263 <p>This was originally intended to be the version of collation tailorings, |
227 (called only by RuleBasedCollator CEI factory methods) | 264 but that information is actually in the tailorings data and this |
228 and a protected assignment operator. | 265 constant has always been (and now will continue to be) 1.</p> |
229 The class documentation says "CollationElementIterator should not be subclas
sed", | |
230 and it cannot be subclassed effectively. | |
231 The protected methods were made private and might be removed altogether. | |
232 For details see <a href="http://bugs.icu-project.org/trac/ticket/10251">tick
et #10251</a>.</p> | |
233 <!-- end ICU 52 items --> | |
234 | 266 |
235 <p>The following list concentrates on <em>changes that affect existing | 267 <h3>Deprecation (in ICU 53): TimeUnitFormat</h3> |
| 268 <p>The TimeUnitFormat and its methods were actually deprecated in ICU 53 and
the |
| 269 class as a whole was tagged as deprecated in that release, but the status ta
gs for |
| 270 the individual methods did not correctly indicate the deprecated status; now
they do. |
| 271 Use the MeasureFormat class and its methods instead.</p> |
| 272 |
| 273 <!-- standing item --> |
| 274 <h3>Full release notes and the latest updates</h3> |
| 275 <p>The previous list concentrates on <em>changes that affect existing |
236 applications migrating from previous ICU releases</em>. | 276 applications migrating from previous ICU releases</em>. |
237 For more news about this release, see the | 277 For more news about this release, as well as late-breaking news, see the |
238 | 278 <a href="http://site.icu-project.org/download/54">ICU download page</a>.</p> |
239 <a href="http://site.icu-project.org/download/52">ICU download page</a>. | |
240 | |
241 <!-- <a href="http://site.icu-project.org/download/milestone">ICU milestone d
ownload page</a>. | |
242 </p>--> | |
243 | |
244 <h3>C++ BasicTimeZone subclassing-API breaking changes</h3> | |
245 <p>We have made make some changes to the C++ BasicTimeZone(basictz.h) for IC
U 51 | |
246 that will make it easier to use some time zone support features found in Bas
icTimeZone | |
247 (basictz.h), but the changes are incompatible for subclasses. If there are s
ubclasses, | |
248 they will have to be modified as well.</p> | |
249 | 279 |
250 <p>BasicTimeZone is a subclass of TimeZone and providing some enhanced featu
res, such as | 280 <!-- end ICU 54 items --> |
251 getNextTransition and getPreviousTransition. The class is used as the base c
lass of all | |
252 of ICU's time zone implementation classes. User Classes directly extending T
imeZone and | |
253 consumers of ICU TimeZone implementation classes are not affected by the cha
nges.</p> | |
254 | |
255 <p>For details see the email "ICU4C C++ BasicTimeZone subclassing-API breaki
ng changes" | |
256 sent on 2013-Feb-5 to the icu-support | |
257 <a href="http://site.icu-project.org/contacts">mailing lists</a>, | |
258 and <a href="http://bugs.icu-project.org/trac/ticket/9648">ICU ticket #9648<
/a>.</p> | |
259 | |
260 <h3>Date format pattern "V"</h3> | |
261 <p>The date format pattern "V" was introduced in ICU 3.8 (inherited from CLD
R 1.5) as | |
262 a variation of pattern "z" to support time zone abbreviation format such as
"PST". | |
263 The pattern "z" prints out a time zone abbreviation only when it is commonly
used for a locale. | |
264 The pattern "V" was slightly different from pattern "z" and the pattern desi
gnates | |
265 a time zone abbreviation even it is not commonly used for a locale. For exam
ple, time | |
266 zone abbreviation "AEST" for Australian Eastern Standard Time might not be w
ell recognized | |
267 by people in the United States. For the zone, pattern "z" does not use "AEST
" (instead, use | |
268 UTC offset format "GMT+10:00", as the fallback) , while pattern "V" used to
print out "AEST". | |
269 In CLDR 21, the data used for checking commonly used or not was completely r
emoved (CLDR | |
270 ticket <a href="http://unicode.org/cldr/trac/ticket/4052">#4052</a>), so the
difference | |
271 between pattern "z" and "V" is no longer available since ICU 49 (based on CL
DR 21 specification).</p> | |
272 | |
273 <p>In CLDR 23, the CLDR technical committee decided to reuse the semanticall
y deprecated | |
274 pattern "V" for a different purpose. With the new specification, the date fo
rmat pattern | |
275 "V" is used for short time zone IDs, such as "uslax" for zone America/Los_An
geles. ICU 51 | |
276 implements the new specification. So existing ICU users currently using cust
om date format | |
277 patterns with pattern "V" are suggested to change them to pattern "z".</p> | |
278 | |
279 <p>Note that the existing pattern "VVVV" for a time zone's generic location n
ame is not | |
280 affected by the new specification and the pattern "VVVV" continues to work as
same as | |
281 previous ICU releases.</p> | |
282 | 281 |
283 <h2><a name="Download" href="#Download" id="Download">How To Download the | 282 <h2><a name="Download" href="#Download" id="Download">How To Download the |
284 Source Code</a></h2> | 283 Source Code</a></h2> |
285 | 284 |
286 <p>There are two ways to download ICU releases:</p> | 285 <p>There are two ways to download ICU releases:</p> |
287 | 286 |
288 <ul> | 287 <ul> |
289 <li><strong>Official Release Snapshot:</strong><br /> | 288 <li><strong>Official Release Snapshot:</strong><br /> |
290 If you want to use ICU (as opposed to developing it), you should download | 289 If you want to use ICU (as opposed to developing it), you should download |
291 an official packaged version of the ICU source code. These versions are | 290 an official packaged version of the ICU source code. These versions are |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
371 | 370 |
372 <td>Modules in i18n are generally the more data-driven, that is to say | 371 <td>Modules in i18n are generally the more data-driven, that is to say |
373 resource bundle driven, components. These deal with higher-level | 372 resource bundle driven, components. These deal with higher-level |
374 internationalization issues such as formatting, collation, text break | 373 internationalization issues such as formatting, collation, text break |
375 analysis, and transliteration.</td> | 374 analysis, and transliteration.</td> |
376 </tr> | 375 </tr> |
377 | 376 |
378 <tr> | 377 <tr> |
379 <td><i><ICU></i>/source/<b>layout</b>/</td> | 378 <td><i><ICU></i>/source/<b>layout</b>/</td> |
380 | 379 |
381 <td>Contains the ICU layout engine (not a rasterizer).</td> | 380 <td>Contains the ICU complex text layout engine. (Deprecated)</td> |
| 381 </tr> |
| 382 <tr> |
| 383 <td><i><ICU></i>/source/<b>layoutex</b>/</td> |
| 384 |
| 385 <td>Contains the ICU paragraph layout engine.</td> |
382 </tr> | 386 </tr> |
383 | 387 |
384 <tr> | 388 <tr> |
385 <td><i><ICU></i>/source/<b>io</b>/</td> | 389 <td><i><ICU></i>/source/<b>io</b>/</td> |
386 | 390 |
387 <td>Contains the ICU I/O library.</td> | 391 <td>Contains the ICU I/O library.</td> |
388 </tr> | 392 </tr> |
389 | 393 |
390 <tr> | 394 <tr> |
391 <td><i><ICU></i>/source/<b>data</b>/</td> | 395 <td><i><ICU></i>/source/<b>data</b>/</td> |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
555 </table> | 559 </table> |
556 <!-- end of ICU structure ==================================== --> | 560 <!-- end of ICU structure ==================================== --> |
557 | 561 |
558 <h2><a name="HowToBuild" href="#HowToBuild" id="HowToBuild">How To Build And | 562 <h2><a name="HowToBuild" href="#HowToBuild" id="HowToBuild">How To Build And |
559 Install ICU</a></h2> | 563 Install ICU</a></h2> |
560 | 564 |
561 <h3><a name="RecBuild" href="#RecBuild" id= | 565 <h3><a name="RecBuild" href="#RecBuild" id= |
562 "RecBuild">Recommended Build Options</a></h3> | 566 "RecBuild">Recommended Build Options</a></h3> |
563 | 567 |
564 <p>Depending on the platform and the type of installation, | 568 <p>Depending on the platform and the type of installation, |
565 we recommend a small number of modifications and build options.</p> | 569 we recommend a small number of modifications and build options. |
| 570 Note that C99 compatibility is now required.</p> |
566 <ul> | 571 <ul> |
567 <li><b>Namespace:</b> By default, unicode/uversion.h has | 572 <li><b>Namespace:</b> By default, unicode/uversion.h has |
568 "using namespace icu;" which defeats much of the purpose of the namespac
e. | 573 "using namespace icu;" which defeats much of the purpose of the namespac
e. |
569 (This is for historical reasons: Originally, ICU4C did not use namespace
s, | 574 (This is for historical reasons: Originally, ICU4C did not use namespace
s, |
570 and some compilers did not support them. The default "using" statement | 575 and some compilers did not support them. The default "using" statement |
571 preserves source code compatibility.)<br /> | 576 preserves source code compatibility.)<br /> |
572 We recommend you turn this off via <code>-DU_USING_ICU_NAMESPACE=0</code
> | 577 If this compatibility is not an issue, we recommend you turn this off |
| 578 via <code>-DU_USING_ICU_NAMESPACE=0</code> |
573 or by modifying unicode/uversion.h: | 579 or by modifying unicode/uversion.h: |
574 <pre>Index: source/common/unicode/uversion.h | 580 <pre>Index: source/common/unicode/uversion.h |
575 =================================================================== | 581 =================================================================== |
576 --- source/common/unicode/uversion.h (revision 26606) | 582 --- source/common/unicode/uversion.h (revision 26606) |
577 +++ source/common/unicode/uversion.h (working copy) | 583 +++ source/common/unicode/uversion.h (working copy) |
578 @@ -180,7 +180,8 @@ | 584 @@ -180,7 +180,8 @@ |
579 # define U_NAMESPACE_QUALIFIER U_ICU_NAMESPACE:: | 585 # define U_NAMESPACE_QUALIFIER U_ICU_NAMESPACE:: |
580 | 586 |
581 # ifndef U_USING_ICU_NAMESPACE | 587 # ifndef U_USING_ICU_NAMESPACE |
582 -# define U_USING_ICU_NAMESPACE 1 | 588 -# define U_USING_ICU_NAMESPACE 1 |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
681 Example configure command line:<br /> | 687 Example configure command line:<br /> |
682 <code>runConfigureICU Linux --enable-static --disable-shared</code></li> | 688 <code>runConfigureICU Linux --enable-static --disable-shared</code></li> |
683 <li><b>Out-of-source build:</b> It is usually desirable to keep the ICU | 689 <li><b>Out-of-source build:</b> It is usually desirable to keep the ICU |
684 source file tree clean and have build output files written to | 690 source file tree clean and have build output files written to |
685 a different location. This is called an "out-of-source build". | 691 a different location. This is called an "out-of-source build". |
686 Simply invoke the configure script from the target location: | 692 Simply invoke the configure script from the target location: |
687 <pre>~/icu$ svn export http://source.icu-project.org/repos/icu/icu/trunk | 693 <pre>~/icu$ svn export http://source.icu-project.org/repos/icu/icu/trunk |
688 ~/icu$ mkdir trunk-dev | 694 ~/icu$ mkdir trunk-dev |
689 ~/icu$ cd trunk-dev | 695 ~/icu$ cd trunk-dev |
690 ~/icu/trunk-dev$ ../trunk/source/runConfigureICU Linux | 696 ~/icu/trunk-dev$ ../trunk/source/runConfigureICU Linux |
691 ~/icu/trunk-dev$ make check</pre></li> | 697 ~/icu/trunk-dev$ make check</pre><br/> |
| 698 (Note: this example shows a relative path to |
| 699 <code>runConfigureICU</code>. If you experience difficulty, |
| 700 try using an absolute path to <code>runConfigureICU</code> |
| 701 instead.) |
| 702 </li> |
692 </ul> | 703 </ul> |
693 <h4>ICU as a System-Level Library</h4> | 704 <h4>ICU as a System-Level Library</h4> |
694 <p>If ICU is installed as a system-level library, there are further | 705 <p>If ICU is installed as a system-level library, there are further |
695 opportunities and restrictions to consider. | 706 opportunities and restrictions to consider. |
696 For details, see the <em>Using ICU as an Operating System Level Library</e
m> | 707 For details, see the <em>Using ICU as an Operating System Level Library</e
m> |
697 section of the <a href="http://userguide.icu-project.org/design">User Guid
e ICU Architectural Design</a> chapter.</p> | 708 section of the <a href="http://userguide.icu-project.org/design">User Guid
e ICU Architectural Design</a> chapter.</p> |
698 <ul> | 709 <ul> |
699 <li><b>Data path:</b> For a system-level library, it is best to load | 710 <li><b>Data path:</b> For a system-level library, it is best to load |
700 ICU data from the .dat package file because the file system path | 711 ICU data from the .dat package file because the file system path |
701 to the .dat package file can be hardcoded. ICU will automatically set | 712 to the .dat package file can be hardcoded. ICU will automatically set |
702 the path to the final install location using U_ICU_DATA_DEFAULT_DIR. | 713 the path to the final install location using U_ICU_DATA_DEFAULT_DIR. |
703 Alternatively, you can set <code>-DICU_DATA_DIR=/path/to/icu/data</code> | 714 Alternatively, you can set <code>-DICU_DATA_DIR=/path/to/icu/data</code> |
704 when building the ICU code. (Used by source/common/putil.c.)<br /> | 715 when building the ICU code. (Used by source/common/putil.c.)<br/> |
705 Consider also setting <code>-DICU_NO_USER_DATA_OVERRIDE</code> | 716 Consider also setting <code>-DICU_NO_USER_DATA_OVERRIDE</code> |
706 if you do not want the "ICU_DATA" environment variable to be used. | 717 if you do not want the "ICU_DATA" environment variable to be used. |
707 (An application can still override the data path via | 718 (An application can still override the data path via |
708 <code>u_setDataDirectory()</code> or | 719 <code>u_setDataDirectory()</code> or |
709 <code>udata_setCommonData()</code>.</li> | 720 <code>udata_setCommonData()</code>.</li> |
710 <li><b>Hide draft API:</b> API marked with <code>@draft</code> | 721 <li><b>Hide draft API:</b> API marked with <code>@draft</code> |
711 is new and not yet stable. Applications must not rely on unstable | 722 is new and not yet stable. Applications must not rely on unstable |
712 APIs from a system-level library. | 723 APIs from a system-level library. |
713 Define <code>U_HIDE_DRAFT_API</code>, <code>U_HIDE_INTERNAL_API</code> | 724 Define <code>U_HIDE_DRAFT_API</code>, <code>U_HIDE_INTERNAL_API</code> |
714 and <code>U_HIDE_SYSTEM_API</code> | 725 and <code>U_HIDE_SYSTEM_API</code> |
(...skipping 29 matching lines...) Expand all Loading... |
744 an equivalent <code>-D</code> macro definition.</p> | 755 an equivalent <code>-D</code> macro definition.</p> |
745 | 756 |
746 <h3><a name="HowToBuildWindows" href="#HowToBuildWindows" id= | 757 <h3><a name="HowToBuildWindows" href="#HowToBuildWindows" id= |
747 "HowToBuildWindows">How To Build And Install On Windows</a></h3> | 758 "HowToBuildWindows">How To Build And Install On Windows</a></h3> |
748 | 759 |
749 <p>Building International Components for Unicode requires:</p> | 760 <p>Building International Components for Unicode requires:</p> |
750 | 761 |
751 <ul> | 762 <ul> |
752 <li>Microsoft Windows</li> | 763 <li>Microsoft Windows</li> |
753 | 764 |
754 <li>Microsoft Visual C++</li> | 765 <li>Microsoft Visual C++ (see the ICU download page for the currently comp
atible version)</li> |
755 | |
756 <li><a href="#HowToBuildCygwin">Cygwin</a> is required when other versions | |
757 of Microsoft Visual C++ and other compilers are used to build ICU.</li> | |
758 </ul> | 766 </ul> |
| 767 <p class="note"><a href="#HowToBuildCygwin">Cygwin</a> is required if us
ing a version of MSVC other than the one |
| 768 compatible with the supplied project files or if other compilers are use
d to build ICU. (e.g. GCC)</p> |
759 | 769 |
760 <p>The steps are:</p> | 770 <p>The steps are:</p> |
761 | 771 |
762 <ol> | 772 <ol> |
763 <li>Unzip the icu-XXXX.zip file into any convenient location. Using comman
d | 773 <li>Unzip the icu-XXXX.zip file into any convenient location. Using comman
d |
764 line zip, type "unzip -a icu-XXXX.zip -d drive:\directory", or just use | 774 line zip, type "unzip -a icu-XXXX.zip -d drive:\directory", or just use |
765 WinZip.</li> | 775 WinZip.</li> |
766 | 776 |
767 <li>Be sure that the ICU binary directory, <i><ICU></i>\bin\, is | 777 <li>Be sure that the ICU binary directory, <i><ICU></i>\bin\, is |
768 included in the <strong>PATH</strong> environment variable. The tests will | 778 included in the <strong>PATH</strong> environment variable. The tests will |
769 not work without the location of the ICU DLL files in the path.</li> | 779 not work without the location of the ICU DLL files in the path.</li> |
770 | 780 |
771 <li>Open the "<i><ICU></i>\source\allinone\allinone.sln" workspace | 781 <li>Open the "<i><ICU></i>\source\allinone\allinone.sln" workspace |
772 file in Microsoft Visual Studio. (This solution includes all the | 782 file in Microsoft Visual Studio. (This solution includes all the |
773 International Components for Unicode libraries, necessary ICU building | 783 International Components for Unicode libraries, necessary ICU building |
774 tools, and the test suite projects). Please see the <a href= | 784 tools, and the test suite projects). Please see the <a href= |
775 "#HowToBuildWindowsCommandLine">command line note below</a> if you want to | 785 "#HowToBuildWindowsCommandLine">command line note below</a> if you want to |
776 build from the command line instead.</li> | 786 build from the command line instead.</li> |
777 | 787 |
778 <li>Set the active platform to "Win32" or "x64" (See <a href="#HowToBuildW
indowsPlatform">Windows platform note</a> below) | 788 <li>Set the active platform to "Win32" or "x64" (See <a href="#HowToBuildW
indowsPlatform">Windows platform note</a> below) |
779 and configuration to "Debug" or "Release" (See <a href="#HowToBuildWindows
Config">Windows configuration note</a> below).</li> | 789 and configuration to "Debug" or "Release" (See <a href="#HowToBuildWindows
Config">Windows configuration note</a> below).</li> |
780 | 790 |
781 <li>Choose the "Build" menu and select "Rebuild Solution". If you want to | 791 <li>Choose the "Build" menu and select "Rebuild Solution". If you want to |
782 build the Debug and Release at the same time, see the <a href= | 792 build the Debug and Release at the same time, see the <a href= |
783 "#HowToBuildWindowsBatch">batch configuration note</a> below.</li> | 793 "#HowToBuildWindowsBatch">batch configuration note</a> below.</li> |
784 | 794 |
785 | 795 |
786 <li>Run the tests. They can be run from the command line or from within Vi
sual Studio. | 796 <li>Run the tests. They can be run from the command line or from within Vi
sual Studio. |
787 | 797 |
788 <h4>Running the Tests from the Windows Command Line (cmd)</h4> | 798 <h4>Running the Tests from the Windows Command Line (cmd)</h4> |
789 <ul> | 799 <ul> |
790 <li>For x86 (32 bit) and Debug, use: <br /> | 800 <li>For x86 (32 bit) and Debug, use: <br /> |
791 | 801 |
792 <tt><i><ICU></i>\source\allinone\icucheck.bat <i>Platform</i> <i>
Configuration</i> | 802 <tt><i><ICU></i>\source\allinone\icucheck.bat <i>Platform</i> <i>
Configuration</i> |
793 </tt> <br /> | 803 </tt> <br /> |
794 </li> | 804 </li> |
795 <li>So, for example: | 805 <li>So, for example: |
796 <br /> | 806 <br /> |
797 » » <tt><i><ICU></i>\source\allinone\icucheck.bat <b>x86</b>
<b>Debug</b> | 807 » » <samp><i><ICU></i>\source\allinone\icucheck.bat <b>x86</b
> <b>Debug</b></samp> |
798 » » </tt> | 808 » » » » or |
799 » » » » <br/> or <br /> | 809 » » <samp><i><ICU></i>\source\allinone\icucheck.bat <b>x86</b
> <b>Release</b></samp> |
800 » » <tt><i><ICU></i>\source\allinone\icucheck.bat <b>x86</b>
<b>Release</b> | 810 » » » » or |
801 » » </tt> | 811 » » <samp><i><ICU></i>\source\allinone\icucheck.bat <b>x64</b
> <b>Release</b></samp></li> |
802 » » » » <br/> or <br /> | 812 » </ul>» |
803 » » <tt><i><ICU></i>\source\allinone\icucheck.bat <b>x64</b>
<b>Release</b> | |
804 » » </tt></li> | |
805 » </ul> | |
806 | 813 |
807 <h4>Running the Tests from within Visual Studio</h4> | 814 <h4>Running the Tests from within Visual Studio</h4> |
808 | 815 |
809 <ol> | 816 <ol> |
810 <li>Run the C++ test suite, "intltest". To do this: set the active startup | 817 <li>Run the C++ test suite, "intltest". To do this: set the active startup |
811 project to "intltest", and press Ctrl+F5 to run it. Make sure that it | 818 project to "intltest", and press Ctrl+F5 to run it. Make sure that it |
812 passes without any errors.</li> | 819 passes without any errors.</li> |
813 | 820 |
814 <li>Run the C test suite, "cintltst". To do this: set the active startup | 821 <li>Run the C test suite, "cintltst". To do this: set the active startup |
815 project to "cintltst", and press Ctrl+F5 to run it. Make sure that it | 822 project to "cintltst", and press Ctrl+F5 to run it. Make sure that it |
(...skipping 18 matching lines...) Expand all Loading... |
834 | 841 |
835 <p><a name="HowToBuildWindowsCommandLine" id= | 842 <p><a name="HowToBuildWindowsCommandLine" id= |
836 "HowToBuildWindowsCommandLine"><strong>Using MSDEV At The Command Line | 843 "HowToBuildWindowsCommandLine"><strong>Using MSDEV At The Command Line |
837 Note:</strong></a> You can build ICU from the command line. Assuming that yo
u | 844 Note:</strong></a> You can build ICU from the command line. Assuming that yo
u |
838 have properly installed Microsoft Visual C++ to support command line | 845 have properly installed Microsoft Visual C++ to support command line |
839 execution, you can run the following command, 'devenv.com | 846 execution, you can run the following command, 'devenv.com |
840 <i><ICU></i>\source\allinone\allinone.sln /build "Win32|Release"'. You
can also | 847 <i><ICU></i>\source\allinone\allinone.sln /build "Win32|Release"'. You
can also |
841 use Cygwin with this compiler to build ICU, and you can refer to the <a href
= | 848 use Cygwin with this compiler to build ICU, and you can refer to the <a href
= |
842 "#HowToBuildCygwin">How To Build And Install On Windows with Cygwin</a> | 849 "#HowToBuildCygwin">How To Build And Install On Windows with Cygwin</a> |
843 section for more details.</p> | 850 section for more details.</p> |
844 | 851 |
845 <p><a name="HowToBuildWindowsPlatform" id= | 852 <p><a name="HowToBuildWindowsPlatform" id= |
846 "HowToBuildWindowsPlatform"><strong>Setting Active Platform | 853 "HowToBuildWindowsPlatform"><strong>Setting Active Platform |
847 Note:</strong></a> Even though you are able to select "x64" as the active pl
atform, if your operating system is | 854 Note:</strong></a> Even though you are able to select "x64" as the active pl
atform, if your operating system is |
848 not a 64 bit version of Windows, the build will fail. To set the active plat
form, two different possibilities are:</p> | 855 not a 64 bit version of Windows, the build will fail. To set the active plat
form, two different possibilities are:</p> |
849 | 856 |
850 <ul> | 857 <ul> |
851 <li>Choose "Build" menu, select "Configuration Manager...", and select | 858 <li>Choose "Build" menu, select "Configuration Manager...", and select |
852 "Win32" or "x64" for the Active Platform Solution.</li> | 859 "Win32" or "x64" for the Active Platform Solution.</li> |
853 | 860 |
854 <li>Another way is to select the desired build configuration from "Solutio
n | 861 <li>Another way is to select the desired build configuration from "Solutio
n |
855 Platforms" dropdown menu from the standard toolbar. It will say | 862 Platforms" dropdown menu from the standard toolbar. It will say |
856 "Win32" or "x64" in the dropdown list.</li> | 863 "Win32" or "x64" in the dropdown list.</li> |
857 </ul> | 864 </ul> |
858 | 865 |
859 <p><a name="HowToBuildWindowsConfig" id= | 866 <p><a name="HowToBuildWindowsConfig" id= |
860 "HowToBuildWindowsConfig"><strong>Setting Active Configuration | 867 "HowToBuildWindowsConfig"><strong>Setting Active Configuration |
861 Note:</strong></a> To set the active configuration, two different | 868 Note:</strong></a> To set the active configuration, two different |
862 possibilities are:</p> | 869 possibilities are:</p> |
863 | 870 |
864 <ul> | 871 <ul> |
865 <li>Choose "Build" menu, select "Configuration Manager...", and select | 872 <li>Choose "Build" menu, select "Configuration Manager...", and select |
866 "Release" or "Debug" for the Active Configuration Solution.</li> | 873 "Release" or "Debug" for the Active Configuration Solution.</li> |
867 | 874 |
868 <li>Another way is to select the desired build configuration from "Solutio
n | 875 <li>Another way is to select the desired build configuration from "Solutio
n |
869 Configurations" dropdown menu from the standard toolbar. It will say | 876 Configurations" dropdown menu from the standard toolbar. It will say |
870 "Release" or "Debug" in the dropdown list.</li> | 877 "Release" or "Debug" in the dropdown list.</li> |
871 </ul> | 878 </ul> |
872 | 879 |
873 <p><a name="HowToBuildWindowsBatch" id="HowToBuildWindowsBatch"><strong>Batc
h | 880 <p><a name="HowToBuildWindowsBatch" id="HowToBuildWindowsBatch"><strong>Batc
h |
874 Configuration Note:</strong></a> If you want to build the Win32 and x64 plat
forms and | 881 Configuration Note:</strong></a> If you want to build the Win32 and x64 plat
forms and |
875 Debug and Release configurations at the same time, choose "Build" menu, and
select "Batch | 882 Debug and Release configurations at the same time, choose "Build" menu, and
select "Batch |
876 Build...". Click the "Select All" button, and then click the "Rebuild" | 883 Build...". Click the "Select All" button, and then click the "Rebuild" |
877 button.</p> | 884 button.</p> |
878 | 885 |
879 <h3><a name="HowToBuildCygwin" href="#HowToBuildCygwin" id= | 886 <h3><a name="HowToBuildCygwin" href="#HowToBuildCygwin" id= |
880 "HowToBuildCygwin">How To Build And Install On Windows with Cygwin</a></h3> | 887 "HowToBuildCygwin">How To Build And Install On Windows with Cygwin</a></h3> |
881 | 888 |
882 <p>Building International Components for Unicode with this configuration | 889 <p>Building International Components for Unicode with this configuration |
883 requires:</p> | 890 requires:</p> |
884 | 891 |
885 <ul> | 892 <ul> |
886 <li>Microsoft Windows</li> | 893 <li>Microsoft Windows</li> |
887 | 894 |
888 <li>Microsoft Visual C++ (when gcc isn't used).</li> | 895 <li>Microsoft Visual C++ (when gcc isn't used).</li> |
889 | 896 |
890 <li> | 897 <li> |
891 Cygwin with the following installed: | 898 Cygwin with the following installed: |
892 | 899 |
893 <ul> | 900 <ul> |
894 <li>bash</li> | 901 <li>bash</li> |
895 | 902 |
896 <li>GNU make</li> | 903 <li>GNU make</li> |
897 | 904 |
898 <li>ar</li> | 905 <li>ar</li> |
899 | 906 |
900 <li>ranlib</li> | 907 <li>ranlib</li> |
901 | 908 |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
946 <li>Type <tt>"make install"</tt> to install ICU. If you used the --prefix= | 953 <li>Type <tt>"make install"</tt> to install ICU. If you used the --prefix= |
947 option on configure or runConfigureICU, ICU will be installed to the | 954 option on configure or runConfigureICU, ICU will be installed to the |
948 directory you specified. (See <a href="#HowToInstallICU">installation | 955 directory you specified. (See <a href="#HowToInstallICU">installation |
949 note</a> below).</li> | 956 note</a> below).</li> |
950 </ol> | 957 </ol> |
951 | 958 |
952 <p><a name="HowToWindowsConfigureICU" id= | 959 <p><a name="HowToWindowsConfigureICU" id= |
953 "HowToWindowsConfigureICU"><strong>Configuring ICU on Windows | 960 "HowToWindowsConfigureICU"><strong>Configuring ICU on Windows |
954 NOTE:</strong></a> </p> | 961 NOTE:</strong></a> </p> |
955 <p> | 962 <p> |
956 Ensure that the order of the PATH is MSVC, Cygwin, and then other PATHs. The
configure | 963 Ensure that the order of the PATH is MSVC, Cygwin, and then other PATHs. The
configure |
957 script needs certain tools in Cygwin (e.g. grep). | 964 script needs certain tools in Cygwin (e.g. grep). |
958 </p> | 965 </p> |
959 <p> | 966 <p> |
960 Also, you may need to run <tt>"dos2unix.exe"</tt> on all of the scripts (e.g
. configure) | 967 Also, you may need to run <tt>"dos2unix.exe"</tt> on all of the scripts (e.g
. configure) |
961 in the top source directory of ICU. To avoid this issue, you can download | 968 in the top source directory of ICU. To avoid this issue, you can download |
962 the ICU source for Unix platforms (icu-xxx.tgz). | 969 the ICU source for Unix platforms (icu-xxx.tgz). |
963 </p> | 970 </p> |
964 <p>In addition to the Unix <a href= | 971 <p>In addition to the Unix <a href= |
965 "#HowToConfigureICU">configuration note</a> the following configure options | 972 "#HowToConfigureICU">configuration note</a> the following configure options |
966 currently do not work on Windows with Microsoft's compiler. Some options can | 973 currently do not work on Windows with Microsoft's compiler. Some options can |
(...skipping 29 matching lines...) Expand all Loading... |
996 <li>A recent version of GNU make (3.80+).</li> | 1003 <li>A recent version of GNU make (3.80+).</li> |
997 | 1004 |
998 <li>For a list of z/OS tools please view the <a href="#HowToBuildZOS">z/OS | 1005 <li>For a list of z/OS tools please view the <a href="#HowToBuildZOS">z/OS |
999 build section</a> of this document for further details.</li> | 1006 build section</a> of this document for further details.</li> |
1000 </ul> | 1007 </ul> |
1001 | 1008 |
1002 <p>Here are the steps to build ICU:</p> | 1009 <p>Here are the steps to build ICU:</p> |
1003 | 1010 |
1004 <ol> | 1011 <ol> |
1005 <li>Decompress the icu-<i>X</i>.<i>Y</i>.tgz (or | 1012 <li>Decompress the icu-<i>X</i>.<i>Y</i>.tgz (or |
1006 icu-<i>X</i>.<i>Y</i>.tar.gz) file. For example, <tt>"gunzip -d < | 1013 icu-<i>X</i>.<i>Y</i>.tar.gz) file. For example, <samp>gunzip -d < icu-
<i>X</i>.<i>Y</i>.tgz | tar xvf -</samp></li> |
1007 icu-<i>X</i>.<i>Y</i>.tgz | tar xvf -"</tt></li> | |
1008 | 1014 |
1009 <li>Change directory to the "icu/source".</li> | 1015 <li>Change directory to <code>icu/source</code>. |
| 1016 <samp>cd icu/source</samp> |
| 1017 </li> |
1010 | 1018 |
1011 <li>Run <span style='font-family: monospace;'>"chmod +x runConfigureICU co
nfigure install-sh"</span> because | 1019 <li>Some files may have the wrong permissions.<samp>chmod +x runConfigureI
CU configure install-sh</samp></li> |
1012 these files may have the wrong permissions.</li> | |
1013 | 1020 |
1014 <li>Run the <span style='font-family: monospace;'><a href="source/runConfi
gureICU">runConfigureICU</a></span> | 1021 <li>Run the <span style='font-family: monospace;'><a href="source/runConfi
gureICU">runConfigureICU</a></span> |
1015 script for your platform. (See <a href="#HowToConfigureICU">configuration | 1022 script for your platform. (See <a href="#HowToConfigureICU">configuration |
1016 note</a> below).</li> | 1023 note</a> below).</li> |
1017 | 1024 |
1018 <li>Type <span style='font-family: monospace;'>"gmake"</span> (or "make" i
f GNU make is the default make on | 1025 <li>Now build: <samp>gmake</samp> (or just <code>make</code> if GNU make i
s the default make on |
1019 your platform) to compile the libraries and all the data files. The proper | 1026 your platform) to compile the libraries and all the data files. The proper |
1020 name of the GNU make command is printed at the end of the configuration | 1027 name of the GNU make command is printed at the end of the configuration |
1021 run, as in "You must use gmake to compile ICU". | 1028 run, as in <tt>"You must use gmake to compile ICU"</tt>. |
1022 <br/> | 1029 <br/> |
1023 Note that the compilation command output may be simplified on your platfor
m. If this is the case, you will see just: | 1030 Note that the compilation command output may be simplified on your platfor
m. If this is the case, you will see just: |
1024 <blockquote><p style='background-color: #ddd; font-family: monospace; font
-size: small'>gcc ... stubdata.c</p></blockquote> | 1031 <tt>gcc ... stubdata.c</tt> |
1025 rather than | 1032 rather than |
1026 <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> | 1033 <tt>gcc -DU_NO_DEFAULT_INCLUDE_UTF_HEADERS=1 -D_REENTRANT -I../common -DU
_ATTRIBUTE_DEPRECATED= -O2 -Wall -std=c99 -pedantic -Wshadow -Wpointer-arith -Wm
issing-prototypes -Wwrite-strings -c -DPIC -fPIC -o stubdata.o stubdata.c</tt> |
1027 .<br/> | 1034 <br/> |
1028 If you need to see the whole compilation line, use <span style='font-fami
ly: monospace;'>"gmake VERBOSE=1"</span>. The full compilation line will print i
f an error occurs. | 1035 If you need to see the whole compilation line, use <span style='font-fami
ly: monospace;'>"gmake VERBOSE=1"</span>. The full compilation line will print i
f an error occurs. |
1029 </li> | 1036 </li> |
1030 | 1037 |
1031 <li>Optionally, type <span style='font-family: monospace;'>"gmake check"</
span> to run the test suite, which | 1038 <li>Optionally,<samp>gmake check</samp> will run the test suite, which |
1032 checks for ICU's functionality integrity (See <a href= | 1039 checks for ICU's functionality integrity (See <a href= |
1033 "#HowToTestWithoutGmake">testing note</a> below).</li> | 1040 "#HowToTestWithoutGmake">testing note</a> below).</li> |
1034 | 1041 |
1035 <li>Type <span style='font-family: monospace;'>"gmake install"</span> to i
nstall ICU. If you used the --prefix= | 1042 <li>To install, <samp>gmake install</samp> to install ICU. If you used the
--prefix= |
1036 option on configure or runConfigureICU, ICU will be installed to the | 1043 option on configure or runConfigureICU, ICU will be installed to the |
1037 directory you specified. (See <a href="#HowToInstallICU">installation | 1044 directory you specified. (See <a href="#HowToInstallICU">installation |
1038 note</a> below).</li> | 1045 note</a> below).</li> |
1039 </ol> | 1046 </ol> |
1040 | 1047 |
1041 <p><a name="HowToConfigureICU" id="HowToConfigureICU"><strong>Configuring IC
U | 1048 <p><a name="HowToConfigureICU" id="HowToConfigureICU"><strong>Configuring IC
U |
1042 NOTE:</strong></a> Type <tt>"./runConfigureICU --help"</tt> for help on how | 1049 NOTE:</strong></a> Type <tt>"./runConfigureICU --help"</tt> for help on how |
1043 to run it and a list of supported platforms. You may also want to type | 1050 to run it and a list of supported platforms. You may also want to type |
1044 <tt>"./configure --help"</tt> to print the available configure options that | 1051 <tt>"./configure --help"</tt> to print the available configure options that |
1045 you may want to give runConfigureICU. If you are not using the | 1052 you may want to give runConfigureICU. If you are not using the |
1046 runConfigureICU script, or your platform is not supported by the script, you | 1053 runConfigureICU script, or your platform is not supported by the script, you |
1047 may need to set your CC, CXX, CFLAGS and CXXFLAGS environment variables, and | 1054 may need to set your CC, CXX, CFLAGS and CXXFLAGS environment variables, and |
1048 type <tt>"./configure"</tt>. | 1055 type <tt>"./configure"</tt>. |
1049 HP-UX users, please see this <a href="#ImportantNotesHPUX">note regarding | 1056 HP-UX users, please see this <a href="#ImportantNotesHPUX">note regarding |
1050 HP-UX multithreaded build issues</a> with newer compilers. Solaris users, | 1057 HP-UX multithreaded build issues</a> with newer compilers. Solaris users, |
1051 please see this <a href="#ImportantNotesSolaris">note regarding Solaris | 1058 please see this <a href="#ImportantNotesSolaris">note regarding Solaris |
1052 multithreaded build issues</a>.</p> | 1059 multithreaded build issues</a>.</p> |
1053 | 1060 |
1054 <p>ICU is built with strict compiler warnings enabled by default. If this | 1061 <p>ICU is built with strict compiler warnings enabled by default. If this |
1055 causes excessive numbers of warnings on your platform, use the --disable-str
ict | 1062 causes excessive numbers of warnings on your platform, use the --disable-str
ict |
1056 option to configure to reduce the warning level.</p> | 1063 option to configure to reduce the warning level.</p> |
1057 | 1064 |
1058 <p><a name="HowToTestWithoutGmake" id="HowToTestWithoutGmake"><strong>Runnin
g | 1065 <p><a name="HowToTestWithoutGmake" id="HowToTestWithoutGmake"><strong>Runnin
g |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1134 | 1141 |
1135 <li>The latest versions of z/OS use <a | 1142 <li>The latest versions of z/OS use <a |
1136 href="http://www.ibm.com/support/docview.wss?uid=swg2120240">XPLINK | 1143 href="http://www.ibm.com/support/docview.wss?uid=swg2120240">XPLINK |
1137 version (C128) of the C++ standard library</a> by default. You may see <a | 1144 version (C128) of the C++ standard library</a> by default. You may see <a |
1138 href="http://www.ibm.com/support/docview.wss?uid=swg21376279">an | 1145 href="http://www.ibm.com/support/docview.wss?uid=swg21376279">an |
1139 error</a> when running with XPLINK disabled. To avoid this error, | 1146 error</a> when running with XPLINK disabled. To avoid this error, |
1140 set the following environment variable or similar: | 1147 set the following environment variable or similar: |
1141 | 1148 |
1142 <pre><samp>export _CXX_PSYSIX="CEE.SCEELIB(C128N)":"CBC.SCLBSID(IOSTREAM,COMPLEX
)"</samp></pre> | 1149 <pre><samp>export _CXX_PSYSIX="CEE.SCEELIB(C128N)":"CBC.SCLBSID(IOSTREAM,COMPLEX
)"</samp></pre> |
1143 </li> | 1150 </li> |
| 1151 |
| 1152 <li>When building ICU data, the heap size may need to be increased with th
e following |
| 1153 environment variable: |
1144 | 1154 |
| 1155 <pre><samp>export _CEE_RUNOPTS="HEAPPOOLS(ON),HEAP(4M,1M,ANY,FREE,0K,4080)"</sam
p></pre> |
| 1156 </li> |
| 1157 |
1145 | 1158 |
1146 <li>The rest of the instructions for building and testing ICU on z/OS with | 1159 <li>The rest of the instructions for building and testing ICU on z/OS with |
1147 UNIX System Services are the same as the <a href="#HowToBuildUNIX">How To | 1160 UNIX System Services are the same as the <a href="#HowToBuildUNIX">How To |
1148 Build And Install On UNIX</a> section.</li> | 1161 Build And Install On UNIX</a> section.</li> |
1149 </ul> | 1162 </ul> |
1150 | 1163 |
1151 <h4>z/OS (Batch/PDS) support outside the UNIX system services | 1164 <h4>z/OS (Batch/PDS) support outside the UNIX system services |
1152 environment</h4> | 1165 environment</h4> |
1153 | 1166 |
1154 <p>By default, ICU builds its libraries into the UNIX file system (HFS). In | 1167 <p>By default, ICU builds its libraries into the UNIX file system (HFS). In |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1264 <samp>CRTLIB LIB(<i>libraryname</i>) | 1277 <samp>CRTLIB LIB(<i>libraryname</i>) |
1265 ADDENVVAR ENVVAR(OUTPUTDIR) VALUE('<i>libraryname</i>') REPLACE(*YES) </samp><
/pre> | 1278 ADDENVVAR ENVVAR(OUTPUTDIR) VALUE('<i>libraryname</i>') REPLACE(*YES) </samp><
/pre> |
1266 </li> | 1279 </li> |
1267 | 1280 |
1268 <li> | 1281 <li> |
1269 Set up the following environment variables and job characteristics in your
build process | 1282 Set up the following environment variables and job characteristics in your
build process |
1270 <pre> | 1283 <pre> |
1271 <samp>ADDENVVAR ENVVAR(MAKE) VALUE('gmake') REPLACE(*YES) | 1284 <samp>ADDENVVAR ENVVAR(MAKE) VALUE('gmake') REPLACE(*YES) |
1272 CHGJOB CCSID(37)</samp></pre></li> | 1285 CHGJOB CCSID(37)</samp></pre></li> |
1273 | 1286 |
1274 <li>Fire up the QSH (all subsequent commands are run inside the qsh sessio
n.)</i> | 1287 <li>Fire up the QSH <i>(all subsequent commands are run inside the qsh ses
sion.)</i> |
1275 <pre><samp>qsh</samp></pre> | 1288 <pre><samp>qsh</samp></pre> |
1276 </li> | 1289 </li> |
1277 | 1290 |
1278 <li>Set up the PATH: <pre><samp>export PATH=/QIBM/ProdData/DeveloperTools/
qsh/bin:$PATH:/QOpenSys/usr/bin</samp></pre> | 1291 <li>Set up the PATH: <pre><samp>export PATH=/QIBM/ProdData/DeveloperTools/
qsh/bin:$PATH:/QOpenSys/usr/bin</samp></pre> |
1279 </li> | 1292 </li> |
1280 | 1293 |
1281 <li>Unpack the ICU source code archive: | 1294 <li>Unpack the ICU source code archive: |
1282 <pre><samp>gzip -d icu-<i>X</i>.<i>Y</i>.tgz</samp></pre> | 1295 <pre><samp>gzip -d icu-<i>X</i>.<i>Y</i>.tgz</samp></pre> |
1283 </li> | 1296 </li> |
1284 | 1297 |
1285 <li>Run unpax-icu.sh on the tar file generated from the previous step. | 1298 <li>Run unpax-icu.sh on the tar file generated from the previous step. |
1286 <pre><samp>unpax-icu.sh icu.tar</samp></pre></li> | 1299 <pre><samp>unpax-icu.sh icu.tar</samp></pre></li> |
1287 | 1300 |
1288 <li>Build the program ICULD which ICU will use for linkage. | 1301 <li>Build the program ICULD which ICU will use for linkage. |
1289 <pre><samp>cd icu/as_is/os400 | 1302 <pre><samp>cd icu/as_is/os400 |
1290 qsh bldiculd.sh | 1303 qsh bldiculd.sh |
1291 cd ../../..</pre></samp> | 1304 cd ../../..</samp></pre> |
1292 </li> | 1305 </li> |
1293 | 1306 |
1294 <li>Change into the 'source' directory, and configure ICU. (See <a href="
#HowToConfigureICU">configuration | 1307 <li>Change into the 'source' directory, and configure ICU. (See <a href="
#HowToConfigureICU">configuration |
1295 note</a> for details). Note that --with-data-packaging=archive and setting
the --prefix are recommended, building in default (dll) mode is currently not s
upported. | 1308 note</a> for details). Note that --with-data-packaging=archive and setting
the --prefix are recommended, building in default (dll) mode is currently not s
upported. |
1296 <pre><samp>cd icu/source | 1309 <pre><samp>cd icu/source |
1297 ./runConfigureICU IBMi --prefix=<i>/path/to/somewhere</i> --with-data-packaging=
archive</samp></pre> | 1310 ./runConfigureICU IBMi --prefix=<i>/path/to/somewhere</i> --with-data-packaging=
archive</samp></pre> |
1298 </li> | 1311 </li> |
1299 | 1312 |
1300 <li>Build ICU. <i>(Note: Do not use the -j option)</i> <pre><samp>gmake</s
amp></pre></li> | 1313 <li>Build ICU. <i>(Note: Do not use the -j option)</i> <pre><samp>gmake</s
amp></pre></li> |
1301 | 1314 |
1302 <li>Test ICU. <pre><samp>gmake check</samp></pre> | 1315 <li>Test ICU. <pre><samp>gmake check</samp></pre> |
1303 <smaller>(The <tt> QIBM_MULTI_THREADED=Y</tt> flag will be automatically
applied to intltest - | 1316 (The <tt> QIBM_MULTI_THREADED=Y</tt> flag will be automatically applied
to intltest - |
1304 you can look at the <a href= | 1317 you can look at the <a href= |
1305 "http://publib.boulder.ibm.com/infocenter/iseries/v5r3/index.jsp?topic=/ap
is/concept4.htm"> | 1318 "http://publib.boulder.ibm.com/infocenter/iseries/v5r3/index.jsp?topic=/ap
is/concept4.htm"> |
1306 iSeries Information Center</a> for more details regarding the running of m
ultiple threads | 1319 iSeries Information Center</a> for more details regarding the running of m
ultiple threads |
1307 on IBM i.)</smaller></li> | 1320 on IBM i.)</li> |
1308 </ol> | 1321 </ol> |
1309 | 1322 |
1310 <!-- cross --> | 1323 <!-- cross --> |
1311 <h3><a name="HowToCrossCompileICU" href="#HowToCrossCompileICU" id="HowToCro
ssCompileICU">How To Cross Compile ICU</a></h3> | 1324 <h3><a name="HowToCrossCompileICU" href="#HowToCrossCompileICU" id="HowToCro
ssCompileICU">How To Cross Compile ICU</a></h3> |
1312 <p>This section will explain how to build ICU on one platform, b
ut to produce binaries intended to run on another. This is commonly known as a c
ross compile.</p> | 1325 <p>This section will explain how to build ICU on one platform, b
ut to produce binaries intended to run on another. This is commonly known as a c
ross compile.</p> |
1313 <p>Normally, in the course of a build, ICU needs to run the tool
s 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 event
ually runs on. An example might be, if you are building for a small/headless sys
tem (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> | 1326 <p>Normally, in the course of a build, ICU needs to run the tool
s 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 event
ually runs on. An example might be, if you are building for a small/headless sys
tem (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> |
1314 <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 require
ments on it is are it is able to build ICU from the command line targetting itse
lf (with configure or runConfigureICU), and secondly, that it also contain the c
orrect toolchain for compiling and linking for the resultant platform, referred
to as the "B" system.</p> | 1327 <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 require
ments on it is are it is able to build ICU from the command line targetting itse
lf (with configure or runConfigureICU), and secondly, that it also contain the c
orrect toolchain for compiling and linking for the resultant platform, referred
to as the "B" system.</p> |
1315 <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_no
de/Specifying-Names.html#Specifying-Names">http://www.gnu.org/software/autoconf/
manual/html_node/Specifying-Names.html</a></p> | 1328 <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_no
de/Specifying-Names.html#Specifying-Names">http://www.gnu.org/software/autoconf/
manual/html_node/Specifying-Names.html</a></p> |
1316 <p>Three initially-empty directories will be used in this exampl
e:</p> | 1329 <p>Three initially-empty directories will be used in this exampl
e:</p> |
1317 <table summary="Three directories used in this example" class="d
ocTable"> | 1330 <table summary="Three directories used in this example" class="d
ocTable"> |
1318 <tr> | 1331 <tr> |
1319 <th align="left">/icu</th><td>a copy of the ICU
source</td> | 1332 <th align="left">/icu</th><td>a copy of the ICU
source</td> |
1320 </tr> | 1333 </tr> |
1321 <tr> | 1334 <tr> |
1322 <th align="left">/buildA</th><td>an empty direct
ory, it will contain ICU built for A<br />(MacOSX in this case)</td> | 1335 <th align="left">/buildA</th><td>an empty direct
ory, it will contain ICU built for A<br />(MacOSX in this case)</td> |
1323 </tr> | 1336 </tr> |
1324 <tr> | 1337 <tr> |
1325 <th align="left">/buildB</th><td>an empty direct
ory, it will contain ICU built for B<br />(HaikuOS in this case)</td> | 1338 <th align="left">/buildB</th><td>an empty direct
ory, it will contain ICU built for B<br />(HaikuOS in this case)</td> |
1326 </tr> | 1339 </tr> |
1327 </table> | 1340 </table> |
1328 | 1341 » » |
1329 <ol> | 1342 <ol> |
1330 <li>Check out or unpack the ICU source code into the /icu direct
ory.You will have the directories /icu/source, etc.</li> | 1343 <li>Check out or unpack the ICU source code into the /icu direct
ory.You will have the directories /icu/source, etc.</li> |
1331 <li>Build ICU in /buildA normally (using runConfigureICU or conf
igure): | 1344 <li>Build ICU in /buildA normally (using runConfigureICU or conf
igure): |
1332 <pre class="samp">cd /buildA | 1345 <pre class="samp">cd /buildA |
1333 sh /icu/source/runConfigureICU <strong>MacOSX</strong> | 1346 sh /icu/source/runConfigureICU <strong>MacOSX</strong> |
1334 gnumake | 1347 gnumake |
1335 </pre> | 1348 </pre> |
1336 </li> | 1349 </li> |
1337 <li>Set PATH or other variables as needed, such as CPPFLAGS.</li
> | 1350 <li>Set PATH or other variables as needed, such as CPPFLAGS.</li
> |
1338 <li>Build ICU in /buildB<br /> | 1351 <li>Build ICU in /buildB<br /> |
1339 » » » <div class="note"><b>Note:</b> "<code>--with-cross-build
</code>" takes an absolute path.</div> | 1352 » » » <p class="note">"<code>--with-cross-build</code>" takes
an absolute path.</p> |
1340 <pre class="samp">cd /buildB | 1353 <pre class="samp">cd /buildB |
1341 sh /icu/source/configure --host=<strong>i586-pc-haiku</strong> --with-cross-buil
d=<strong>/buildA</strong> | 1354 sh /icu/source/configure --host=<strong>i586-pc-haiku</strong> --with-cross-buil
d=<strong>/buildA</strong> |
1342 gnumake</pre> | 1355 gnumake</pre> |
1343 </li> | 1356 </li> |
1344 <li>Tests and testdata can be built with "gnumake tests".</li> | 1357 <li>Tests and testdata can be built with "gnumake tests".</li> |
1345 </ol> | 1358 </ol> |
1346 <!-- end cross --> | 1359 <!-- end cross --> |
1347 | 1360 |
1348 <!-- end build environment --> | 1361 <!-- end build environment --> |
1349 | 1362 |
(...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1713 <p>The platform dependencies have been mostly isolated into the following | 1726 <p>The platform dependencies have been mostly isolated into the following |
1714 files in the common library. This information can be useful if you are | 1727 files in the common library. This information can be useful if you are |
1715 porting ICU to a new platform.</p> | 1728 porting ICU to a new platform.</p> |
1716 | 1729 |
1717 <ul> | 1730 <ul> |
1718 <li> | 1731 <li> |
1719 <strong>unicode/platform.h.in</strong> (autoconf'ed platforms)<br /> | 1732 <strong>unicode/platform.h.in</strong> (autoconf'ed platforms)<br /> |
1720 <strong>unicode/p<i>XXXX</i>.h</strong> (others: pwin32.h, ppalmos.h, | 1733 <strong>unicode/p<i>XXXX</i>.h</strong> (others: pwin32.h, ppalmos.h, |
1721 ..): Platform-dependent typedefs and defines:<br /> | 1734 ..): Platform-dependent typedefs and defines:<br /> |
1722 <br /> | 1735 <br /> |
1723 | 1736 |
1724 | 1737 |
1725 <ul> | 1738 <ul> |
1726 <li>Generic types like UBool, int8_t, int16_t, int32_t, int64_t, | 1739 <li>Generic types like UBool, int8_t, int16_t, int32_t, int64_t, |
1727 uint64_t etc.</li> | 1740 uint64_t etc.</li> |
1728 | 1741 |
1729 <li>U_EXPORT and U_IMPORT for specifying dynamic library import and | 1742 <li>U_EXPORT and U_IMPORT for specifying dynamic library import and |
1730 export</li> | 1743 export</li> |
1731 | 1744 |
1732 <li>String handling support for the char16_t and wchar_t types.</li> | 1745 <li>String handling support for the char16_t and wchar_t types.</li> |
1733 </ul> | 1746 </ul> |
1734 <br /> | 1747 <br /> |
1735 </li> | 1748 </li> |
1736 | 1749 |
1737 <li> | 1750 <li> |
1738 <strong>unicode/putil.h, putil.c</strong>: platform-dependent | 1751 <strong>unicode/putil.h, putil.c</strong>: platform-dependent |
1739 implementations of various functions that are platform dependent:<br /> | 1752 implementations of various functions that are platform dependent:<br /> |
1740 <br /> | 1753 <br /> |
1741 | 1754 |
1742 | 1755 |
1743 <ul> | 1756 <ul> |
1744 <li>uprv_isNaN, uprv_isInfinite, uprv_getNaN and uprv_getInfinity for | 1757 <li>uprv_isNaN, uprv_isInfinite, uprv_getNaN and uprv_getInfinity for |
1745 handling special floating point values.</li> | 1758 handling special floating point values.</li> |
1746 | 1759 |
1747 <li>uprv_tzset, uprv_timezone, uprv_tzname and time for getting | 1760 <li>uprv_tzset, uprv_timezone, uprv_tzname and time for getting |
1748 platform specific time and time zone information.</li> | 1761 platform specific time and time zone information.</li> |
1749 | 1762 |
1750 <li>u_getDataDirectory for getting the default data directory.</li> | 1763 <li>u_getDataDirectory for getting the default data directory.</li> |
1751 | 1764 |
(...skipping 21 matching lines...) Expand all Loading... |
1773 from files makes use of these functions.<br /> | 1786 from files makes use of these functions.<br /> |
1774 <br /> | 1787 <br /> |
1775 </li> | 1788 </li> |
1776 | 1789 |
1777 <li>Using platform specific #ifdef macros are highly discouraged outside o
f | 1790 <li>Using platform specific #ifdef macros are highly discouraged outside o
f |
1778 the scope of these files. When the source code gets updated in the future, | 1791 the scope of these files. When the source code gets updated in the future, |
1779 these #ifdef's can cause testing problems for your platform.</li> | 1792 these #ifdef's can cause testing problems for your platform.</li> |
1780 </ul> | 1793 </ul> |
1781 <hr /> | 1794 <hr /> |
1782 | 1795 |
1783 <p>Copyright © 1997-2013 International Business Machines Corporation an
d | 1796 <p>Copyright © 1997-2014 International Business Machines Corporation an
d |
1784 others. All Rights Reserved.<br /> | 1797 others. All Rights Reserved.<br /> |
1785 IBM Globalization Center of Competency - San José<br /> | 1798 IBM Globalization Center of Competency - San José<br /> |
1786 4400 North First Street<br /> | 1799 4400 North First Street<br /> |
1787 San José, CA 95134<br /> | 1800 San José, CA 95134<br /> |
1788 USA</p> | 1801 USA</p> |
1789 </body> | 1802 </body> |
1790 </html> | 1803 </html> |
OLD | NEW |