1# Copyright (C) 2011-2014, International Business Machines
2# Corporation and others. All Rights Reserved.
3#
4# file name: dependencies.txt
5#
6# created on: 2011may26
7# created by: Markus W. Scherer
8#
9# See http://site.icu-project.org/processes/release/tasks/healthy-code#TOC-Check-library-dependencies
10
11# Standard library symbols used by ICU --------------------------------------- #
12
13system_symbols:
14  deps
15    # C
16    PIC system_debug malloc_functions c_strings c_string_formatting
17    floating_point trigonometry
18    stdlib_qsort
19    pthread system_locale
20    stdio_input stdio_output file_io readlink_function dir_io mmap_functions dlfcn
21    # C++
22    cplusplus iostream
23
24group: PIC
25    # Position-Independent Code (-fPIC) requires a Global Offset Table.
26    _GLOBAL_OFFSET_TABLE_
27
28group: system_debug
29    __assert_fail __stack_chk_fail
30
31group: malloc_functions
32    free malloc realloc
33
34group: c_strings
35    isspace isdigit
36    __ctype_b_loc  # for <ctype.h>
37    # We must not use tolower and toupper because they are system-locale-sensitive (Turkish i).
38    strlen strchr strrchr strstr strcmp strncmp strcpy strncpy strcat strncat
39    memcmp memcpy memmove memset
40    # Additional symbols in an optimized build.
41    __strcpy_chk __strncpy_chk __strcat_chk __strncat_chk
42    __rawmemchr __memcpy_chk __memmove_chk __memset_chk
43
44group: c_string_formatting
45    atoi atol strtod strtol strtoul
46    sprintf
47    # Additional symbols in an optimized build.
48    __sprintf_chk
49
50group: floating_point
51    abs fabs floor ceil modf fmod log pow sqrt
52
53group: trigonometry
54    acos asin atan atan2 cos sin tan
55    # Additional symbols in an optimized build.
56    sincos
57
58group: stdlib_qsort
59    qsort
60
61group: pthread
62    pthread_mutex_init pthread_mutex_destroy pthread_mutex_lock pthread_mutex_unlock
63    pthread_cond_wait pthread_cond_broadcast
64
65group: system_locale
66    getenv
67    nl_langinfo setlocale
68    gettimeofday localtime_r tzname tzset __timezone
69
70group: stdio_input
71    fopen fclose fgets fread fseek ftell rewind feof fileno
72    # Additional symbols in an optimized build.
73    __fgets_chk __fread_chk
74
75group: stdio_output
76    fflush fwrite
77    stdout
78
79group: file_io
80    open close stat
81    # Additional symbols in an optimized build.
82    __xstat
83
84group: readlink_function
85    readlink  # putil.cpp uprv_tzname() calls this in a hack to get the time zone name
86
87group: dir_io
88    opendir closedir readdir  # for a hack to get the time zone name
89
90group: mmap_functions  # for memory-mapped data loading
91    mmap munmap
92
93group: dlfcn
94    dlopen dlclose dlsym  # called by putil.o only for icuplug.o
95
96group: cplusplus
97    __dynamic_cast
98    # The compiler generates references to the global operator delete
99    # even when no code actually uses it.
100    # ICU must not _use_ the global operator delete.
101    "operator delete(void*)"
102    # ICU also must not use the global operator new.
103    # "operator new[](unsigned long)"
104
105    # _Unwind_Resume is related to exceptions:
106    # "A call to this routine is inserted as the end of a landing pad that performs cleanup,
107    # but does not resume normal execution. It causes unwinding to proceed further."
108    # (Linux Standard Base Specification 1.3)
109    # Even though ICU does not actually use (nor handle) exceptions.
110    _Unwind_Resume
111    # std::terminate() looks similar to _Unwind_Resume:
112    # "Calls the current terminate handler."
113    std::terminate()
114
115group: iostream
116    "std::basic_ios<char, std::char_traits<char> >::clear(std::_Ios_Iostate)"
117    "std::basic_ios<char, std::char_traits<char> >::eof() const"
118    "std::basic_ios<char, std::char_traits<char> >::fail() const"
119    "std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)"
120    std::istream::get()
121    std::istream::putback(char)
122    # Additional symbols in an optimized build.
123    "std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, long)"
124
125# ICU common library --------------------------------------------------------- #
126
127library: stubdata
128    stubdata.o  # Exports icudt48_dat.
129
130library: common
131    # All files in the common library are listed in its dependencies.
132  deps
133    # Libraries and groups that the common library depends on.
134    date_interval
135    breakiterator
136    uts46 filterednormalizer2 normalizer2 canonical_iterator
137    normlzr unormcmp unorm
138    idna2003 stringprep
139    stringenumeration
140    unistr_core unistr_props unistr_case unistr_case_locale unistr_titlecase_brkiter unistr_cnv
141    uniset_core uniset_props uniset_closure usetiter uset uset_props
142    uiter
143    ucasemap ucasemap_titlecase_brkiter script_runs
144    uprops ubidi_props ucase uscript uscript_props
145    ubidi ushape
146    listformatter
147    resourcebundle service_registration resbund_cnv ures_cnv icudataver ucat
148    loclikely
149    conversion converter_selector ucnv_set ucnvdisp
150    messagepattern simplepatternformatter
151    icu_utility icu_utility_with_props
152    ustr_wcs
153    lrucache
154    ucharstriebuilder ucharstrieiterator
155    bytestriebuilder bytestrieiterator
156    hashtable uhash uvector uvector32 uvector64 ulist
157    propsvec utrie2 utrie2_builder
158    sort
159    uinit utypes errorcode
160    icuplug
161    platform
162
163group: date_interval  # class DateInterval
164    dtintrv.o
165  deps
166    platform
167
168group: breakiterator
169    # We could try to split off a breakiterator_builder group,
170    # but we still need uniset_props for code like in the ThaiBreakEngine constructor
171    # which does
172    #   fThaiWordSet.applyPattern(UNICODE_STRING_SIMPLE("[[:Thai:]&[:LineBreak=SA:]]"), status)
173    brkiter.o brkeng.o ubrk.o
174    rbbi.o rbbinode.o rbbiscan.o rbbisetb.o rbbistbl.o rbbitblb.o
175    rbbidata.o rbbirb.o
176    dictionarydata.o dictbe.o
177  deps
178    resourcebundle service_registration
179    schriter utext uniset_core uniset_props
180    uhash ustack utrie
181    ucharstrie bytestrie
182    normlzr  # for dictbe.o, should switch to Normalizer2
183
184group: unormcmp  # unorm_compare()
185    unormcmp.o
186  deps
187    filterednormalizer2
188    uniset_props  # for uniset_getUnicode32Instance()
189    ucase
190
191group: unorm  # old normalization C API
192    unorm.o
193  deps
194    filterednormalizer2
195    uniset_props  # for uniset_getUnicode32Instance()
196    uiter
197
198group: normlzr  # old Normalizer C++ class
199    normlzr.o
200  deps
201    filterednormalizer2
202    uniset_props  # for uniset_getUnicode32Instance()
203    schriter
204
205group: uts46
206    uts46.o
207  deps
208    normalizer2 punycode
209    uchar  # for u_charType() (via U_GET_GC_MASK(c))
210    ubidi_props  # for u_charDirection() & ubidi_getJoiningType()
211    unistr_core
212    stringpiece bytestream
213
214group: filterednormalizer2
215    filterednormalizer2.o
216  deps
217    normalizer2
218
219group: idna2003
220    uidna.o
221  deps
222    stringprep punycode
223
224group: stringprep
225    usprep.o
226  deps
227    unorm  # could change to use filterednormalizer2 directly for Unicode 3.2 normalization
228    normalizer2
229    ubidi_props
230
231group: canonical_iterator
232    caniter.o
233  deps
234    normalizer2 usetiter
235
236group: normalizer2
237    normalizer2.o
238    normalizer2impl.o
239  deps
240    uniset_core
241    unistr_core
242    utrie2_builder  # for building CanonIterData & FCD
243    uvector  # for building CanonIterData
244    uhash  # for the instance cache
245    udata
246
247group: punycode
248    punycode.o
249  deps
250    platform
251
252group: uset_props
253    uset_props.o
254  deps
255    uniset_closure uniset_props uniset_core
256
257group: uset
258    uset.o
259  deps
260    uniset_core
261
262group: uniset_closure
263    uniset_closure.o
264  deps
265    uniset_core unistr_case_locale unistr_titlecase_brkiter
266
267group: uniset_props
268    uniset_props.o ruleiter.o
269  deps
270    uniset_core uprops unistr_case
271    parsepos
272    resourcebundle
273    propname unames
274
275group: parsepos
276    parsepos.o
277  deps
278    platform
279
280group: usetiter  # UnicodeSetIterator
281    usetiter.o
282  deps
283    uniset_core
284
285group: uniset_core
286    unifilt.o unifunct.o
287    uniset.o bmpset.o unisetspan.o
288  deps
289    patternprops
290    unistr_core icu_utility
291    uvector
292
293group: icu_utility_with_props
294    util_props.o
295  deps
296    icu_utility uchar ucase
297
298group: icu_utility
299    util.o
300  deps
301    unistr_core patternprops
302
303group: utext
304    utext.o
305  deps
306    unistr_core ucase
307
308group: stringenumeration
309    ustrenum.o uenum.o
310  deps
311    unistr_core
312
313group: schriter
314    schriter.o
315    # The UCharCharacterIterator implements virtual void getText(UnicodeString& result)
316    # so it depends on UnicodeString, therefore it makes little sense to split
317    # schriter and uchriter into separate groups.
318    uchriter.o
319  deps
320    chariter unistr_core
321
322group: chariter
323    chariter.o
324  deps
325    platform
326
327group: uiter
328    uiter.o
329  deps
330    platform
331
332group: unistr_cnv
333    unistr_cnv.o
334  deps
335    conversion unistr_core
336
337group: unistr_core
338    unistr.o
339  deps
340    ustrtrns appendable
341
342group: uscript
343    uscript.o  # uscript_getCode() accepts a locale ID and loads its script code data
344  deps
345    propname resourcebundle
346
347group: uscript_props  # script metadata properties
348    uscript_props.o
349  deps
350    unistr_core platform
351
352group: uprops
353    uprops.o
354  deps
355    normalizer2
356    uchar
357    ubidi_props
358    unistr_case ustring_case  # only for case folding
359    ucase
360
361group: propname
362    propname.o
363  deps
364    bytestrie
365
366group: unames
367    unames.o
368  deps
369    uchar udata
370
371group: script_runs
372    usc_impl.o
373  deps
374    uchar
375
376group: uchar
377    uchar.o
378  deps
379    utrie2
380
381group: messagepattern  # for MessageFormat and tools
382    messagepattern.o
383  deps
384    patternprops unistr_core
385
386group: simplepatternformatter
387    simplepatternformatter.o
388  deps
389    unistr_core
390
391group: patternprops
392    patternprops.o
393  deps
394    PIC
395
396group: ushape
397    ushape.o
398  deps
399    ubidi_props
400
401group: ubidi
402    ubidi.o ubidiln.o ubidiwrt.o
403  deps
404    ubidi_props
405    uchar  # for doWriteReverse() which uses IS_COMBINING(u_charType(c))
406
407group: ubidi_props
408    ubidi_props.o
409  deps
410    utrie2
411
412group: unistr_props
413    unistr_props.o
414  deps
415    unistr_core uchar
416
417group: unistr_case_locale
418    unistr_case_locale.o
419  deps
420    unistr_case ustring_case_locale
421
422group: unistr_case
423    unistr_case.o
424  deps
425    unistr_core
426    ustring_case
427
428group: unistr_titlecase_brkiter
429    unistr_titlecase_brkiter.o
430  deps
431    ustr_titlecase_brkiter
432
433group: ustr_titlecase_brkiter
434    ustr_titlecase_brkiter.o
435  deps
436    breakiterator
437    ustring_case_locale ucase
438
439group: ucasemap_titlecase_brkiter
440    ucasemap_titlecase_brkiter.o
441  deps
442    ucasemap breakiterator utext
443
444group: ucasemap
445    ucasemap.o
446  deps
447    ustring_case
448    resourcebundle  # uloc_getName() etc.
449
450group: ustring_case_locale
451    ustrcase_locale.o
452  deps
453    ustring_case
454    resourcebundle  # for uloc_getDefault()
455
456group: ustring_case
457    ustrcase.o
458  deps
459    ucase
460
461group: ucase
462    ucase.o
463  deps
464    unistr_core utrie2
465
466group: uinit
467    uinit.o
468  deps
469    ucnv_io icuplug
470
471group: converter_selector
472    ucnvsel.o
473  deps
474    conversion propsvec utrie2_builder uset ucnv_set
475
476group: ucnvdisp  # ucnv_getDisplayName()
477    ucnvdisp.o
478  deps
479    conversion resourcebundle
480
481group: ucnv_set  # ucnv_getUnicodeSet
482    ucnv_set.o
483  deps
484    uset
485
486group: conversion
487    ustr_cnv.o
488    ucnv.o ucnv_cnv.o ucnv_bld.o ucnv_cb.o ucnv_err.o
489    ucnv_ct.o
490    ucnvmbcs.o ucnv_ext.o
491    ucnvhz.o ucnvisci.o ucnv_lmb.o ucnv2022.o
492    ucnvlat1.o ucnv_u7.o ucnv_u8.o ucnv_u16.o ucnv_u32.o
493    ucnvbocu.o ucnvscsu.o
494  deps
495    ucnv_io
496
497group: ucnv_io
498    ucnv_io.o
499  deps
500    sort stringenumeration udata
501
502group: service_registration
503    serv.o servnotf.o servlkf.o servlk.o servls.o servrbf.o servslkf.o
504    locutil.o
505  deps
506    locale_display_names resourcebundle
507    hashtable uvector
508
509group: listformatter
510    listformatter.o
511  deps
512    resourcebundle simplepatternformatter
513
514group: ucat  # message-catalog-like API
515    ucat.o
516  deps
517    resourcebundle
518
519group: locale_display_names
520    locdispnames.o
521  deps
522    locresdata
523
524group: icudataver  # u_getDataVersion()
525    icudataver.o
526  deps
527    resourcebundle
528
529group: loclikely
530    loclikely.o
531  deps
532    resourcebundle
533
534group: locresdata
535    # This was intended to collect locale functions that load resource bundle data.
536    # See the resourcebundle group about what else loads data.
537    locresdata.o
538  deps
539    resourcebundle
540
541group: resbund_cnv  # paths are Unicode strings
542    resbund_cnv.o
543  deps
544    conversion resourcebundle ures_cnv
545
546group: ures_cnv  # ures_openU, path is a Unicode string
547    ures_cnv.o
548  deps
549    conversion resourcebundle
550
551group: resourcebundle
552    resbund.o uresbund.o uresdata.o
553    locavailable.o
554    # uloc_tag.c converts between old ICU/LDML/CLDR locale IDs and newer BCP 47 IDs.
555    # It uses data from resource bundles for some of the mappings.
556    # We might want to generate .c files for that data, to #include rather than load,
557    # to minimize dependencies from this code.
558    # Then we could separate this higher-level locale ID code from the resource bundle code.
559    uloc.o uloc_tag.o
560    # Even basic locid.cpp via Locale constructors and Locale::getDefault()
561    # depend on canonicalization and data loading.
562    # We can probably only disentangle basic locale ID handling from resource bundle code
563    # by hardcoding all of the locale ID data.
564    locid.o locmap.o wintz.o
565    # Do we need class LocaleBased? http://bugs.icu-project.org/trac/ticket/8608
566    locbased.o
567  deps
568    udata ucol_swp
569    sort stringenumeration uhash
570
571group: udata
572    udata.o ucmndata.o udatamem.o
573    umapfile.o
574  deps
575    uhash charstr stringpiece platform stubdata
576    file_io mmap_functions
577
578group: lrucache
579    lrucache.o
580  deps
581    uhash
582    platform
583
584group: ucharstriebuilder
585    ucharstriebuilder.o
586  deps
587    ucharstrie stringtriebuilder sort
588    unistr_core
589
590group: ucharstrieiterator
591    ucharstrieiterator.o
592  deps
593    ucharstrie unistr_core uvector32
594
595group: ucharstrie
596    ucharstrie.o
597  deps
598    platform
599
600group: bytestriebuilder
601    bytestriebuilder.o
602  deps
603    bytestrie stringtriebuilder sort
604    charstr stringpiece
605
606group: bytestrieiterator
607    bytestrieiterator.o
608  deps
609    bytestrie charstr uvector32
610
611group: bytestrie
612    bytestrie.o
613  deps
614    platform
615
616group: stringtriebuilder
617    stringtriebuilder.o
618  deps
619    uhash
620
621group: propsvec
622    propsvec.o
623  deps
624    sort utrie2_builder
625
626group: utrie2_builder
627    utrie2_builder.o
628  deps
629    platform
630    utrie2
631    utrie  # for utrie2_fromUTrie()
632    ucol_swp  # for utrie_swap()
633
634group: utrie2
635    utrie2.o
636  deps
637    platform
638
639group: utrie  # Callers should use utrie2 instead.
640    utrie.o
641  deps
642    platform
643
644group: hashtable  # Maps UnicodeString to value.
645    uhash_us.o
646  deps
647    unistr_core
648    uhash
649
650group: uhash
651    uhash.o
652  deps
653    platform
654
655group: ustack
656    ustack.o
657  deps
658    uvector
659
660group: uvector
661    uvector.o
662  deps
663    platform
664    sort  # for UVector::sort()
665
666group: uvector32
667    uvectr32.o
668  deps
669    platform
670
671group: uvector64
672    uvectr64.o
673  deps
674    platform
675
676group: ulist
677    ulist.o
678  deps
679    platform
680
681group: sort
682    uarrsort.o
683  deps
684    platform
685
686group: ustr_wcs
687    ustr_wcs.o
688  deps
689    ustrtrns  # on platforms where wchar_t is UTF-32
690    # platform -- on other platforms
691
692group: ustrtrns
693    ustrtrns.o
694  deps
695    platform
696
697group: charstr
698    charstr.o
699  deps
700    unistr_core  # for CharString::appendInvariantChars(const UnicodeString &s, UErrorCode &errorCode)
701    platform
702
703group: stringpiece
704    stringpiece.o
705  deps
706    PIC c_strings
707
708group: bytestream
709    bytestream.o
710  deps
711    platform
712
713group: appendable
714    appendable.o
715  deps
716    platform
717
718group: icuplug
719    icuplug.o
720  deps
721    platform
722
723group: ucol_swp
724    ucol_swp.o
725  deps
726    utrie2  # Format version 4 uses UTrie2.
727
728group: errorcode  # ErrorCode base class
729    errorcode.o
730  deps
731    utypes
732    platform
733
734group: utypes  # u_errorName()
735    utypes.o
736
737group: platform
738    # Files in the "platform" group.
739    cmemory.o uobject.o
740    cstring.o cwchar.o uinvchar.o
741    ustring.o  # Other platform files really just need u_strlen
742    ustrfmt.o  # uprv_itou
743    utf_impl.o
744    putil.o
745    ucln_cmn.o  # for putil.o which calls ucln_common_registerCleanup
746    udataswp.o  # for uinvchar.o; TODO: move uinvchar.o swapper functions to udataswp.o?
747    umath.o
748    umutex.o sharedobject.o
749    utrace.o
750  deps
751    # The "platform" group has no ICU dependencies.
752    PIC system_debug malloc_functions c_strings c_string_formatting
753    floating_point pthread system_locale
754    stdio_input readlink_function dir_io
755    dlfcn  # Move related code into icuplug.c?
756    cplusplus
757
758# ICU i18n library ----------------------------------------------------------- #
759
760library: i18n
761  deps
762    region localedata genderinfo charset_detector spoof_detection
763    alphabetic_index collation collation_builder string_search
764    formatting formattable_cnv regex regex_cnv translit
765    filteredbreakiterator
766    universal_time_scale
767    uclean_i18n
768
769group: region
770    region.o uregion.o
771  deps
772    formatting  # Temporary, TODO: Ticket #9982 class Region should use low-level ASCII-integer functions, and probably be moved to the common library.
773    resourcebundle
774    uvector uclean_i18n
775
776group: localedata
777    ulocdata.o
778  deps
779    uniset_props resourcebundle
780    uset_props  # TODO: change to using C++ UnicodeSet, remove this dependency
781    loclikely
782
783group: genderinfo
784    gender.o
785  deps
786    resourcebundle
787    uclean_i18n
788
789group: charset_detector
790    csdetect.o csmatch.o csr2022.o csrecog.o csrmbcs.o csrsbcs.o csrucode.o csrutf8.o inputext.o ucsdet.o
791  deps
792    conversion
793    uclean_i18n
794
795group: spoof_detection
796    uspoof.o uspoof_build.o uspoof_conf.o uspoof_impl.o uspoof_wsconf.o
797    identifier_info.o scriptset.o
798  deps
799    uniset_props regex unorm uscript
800
801group: alphabetic_index
802    alphaindex.o
803  deps
804    collation localedata
805    uclean_i18n
806
807group: collation
808    # The collation "runtime" code should not depend on the collation_builder code.
809    # For example, loading from resource bundles does not fall back to
810    # building from rules.
811    collation.o collationcompare.o collationdata.o
812    collationdatareader.o collationdatawriter.o
813    collationfastlatin.o collationfcd.o collationiterator.o collationkeys.o
814    collationroot.o collationrootelements.o collationsets.o
815    collationsettings.o collationtailoring.o rulebasedcollator.o
816    uitercollationiterator.o utf16collationiterator.o utf8collationiterator.o
817    bocsu.o coleitr.o coll.o sortkey.o ucol.o
818    ucol_res.o ucol_sit.o ucoleitr.o
819  deps
820    bytestream normalizer2 resourcebundle service_registration
821    ucharstrieiterator uiter ulist uset usetiter uvector32 uvector64
822    uclean_i18n
823
824group: collation_builder
825    # The CollationBaseDataBuilder is only called from genuca, and maybe from tests.
826    # It is in the i18n library so that it gets maintained and refactored together with
827    # related code.
828    collationbasedatabuilder.o
829    collationbuilder.o collationdatabuilder.o collationfastlatinbuilder.o
830    collationruleparser.o collationweights.o
831  deps
832    canonical_iterator collation ucharstriebuilder uset_props
833
834group: string_search
835    search.o stsearch.o usearch.o
836  deps
837    breakiterator collation
838
839group: formatting
840    # TODO: Try to subdivide this ball of wax.
841    # locale_display_names2
842    locdspnm.o
843    # currency
844    ucurr.o
845    # currencyformat
846    curramt.o currfmt.o currpinf.o currunit.o
847    # decimalformat
848    dcfmtsym.o decfmtst.o decimfmt.o decimalformatpattern.o compactdecimalformat.o
849    numfmt.o numsys.o unumsys.o unum.o winnmfmt.o
850    # rbnf
851    nfrs.o nfrule.o nfsubs.o rbnf.o
852    # measureformat
853    measfmt.o measunit.o quantityformatter.o
854    # dateformat
855    astro.o buddhcal.o calendar.o cecal.o chnsecal.o coptccal.o dangical.o ethpccal.o
856    gregocal.o gregoimp.o hebrwcal.o indiancal.o islamcal.o japancal.o persncal.o taiwncal.o
857    ucal.o
858    basictz.o olsontz.o rbtz.o simpletz.o timezone.o tzrule.o tztrans.o
859    vtzone.o vzone.o wintzimpl.o zonemeta.o zrule.o ztrans.o
860    tzfmt.o tzgnames.o tznames.o tznames_impl.o
861    datefmt.o dtfmtsym.o dtitvfmt.o dtitvinf.o dtptngen.o dtrule.o reldtfmt.o reldatefmt.o
862    smpdtfmt.o smpdtfst.o udateintervalformat.o udatpg.o windtfmt.o
863    udat.o
864    tmunit.o tmutamt.o tmutfmt.o
865    # messageformat
866    choicfmt.o msgfmt.o plurfmt.o selfmt.o umsg.o
867  deps
868    digitlist formattable format
869    pluralrules
870    collation collation_builder  # for rbnf
871    common
872    floating_point  # sqrt() for astro.o
873    trigonometry  # for astro.o
874    stdlib_qsort  # for ucurr.o (which does not use ICU's uarrsort.o)
875    uclean_i18n
876
877group: digitlist
878    digitlst.o decContext.o decNumber.o
879  deps
880    charstr stringpiece unistr_core
881
882group: formattable
883    fmtable.o
884    measure.o
885  deps
886    unistr_core digitlist stringpiece charstr
887
888group: formattable_cnv
889    fmtable_cnv.o
890  deps
891    formattable unistr_cnv conversion
892
893group: format
894    format.o fphdlimp.o fpositer.o
895  deps
896    resourcebundle parsepos unistr_core uvector32
897
898group: pluralrules
899    plurrule.o upluralrules.o
900  deps
901    digitlist  # plurals depend on decimals
902    patternprops resourcebundle uvector uvector32 lrucache
903    unistr_case_locale
904    uclean_i18n
905
906group: regex_cnv
907    uregexc.o
908  deps
909    regex unistr_cnv
910
911group: regex
912    regexcmp.o regexst.o regextxt.o regeximp.o rematch.o repattrn.o uregex.o
913  deps
914    uniset_closure utext uvector32 uvector64 ustack
915    breakiterator
916    unistr_core
917    uinit  # TODO: Really needed?
918    uclean_i18n
919
920group: translit
921    anytrans.o brktrans.o casetrn.o cpdtrans.o name2uni.o uni2name.o nortrans.o remtrans.o titletrn.o tolowtrn.o toupptrn.o
922    esctrn.o unesctrn.o nultrans.o
923    funcrepl.o quant.o rbt.o rbt_data.o rbt_pars.o rbt_rule.o rbt_set.o strmatch.o strrepl.o translit.o transreg.o tridpars.o utrans.o
924  deps
925    common
926    formatting  # for Transliterator::getDisplayName()
927    uclean_i18n
928
929group: filteredbreakiterator
930    filteredbrk.o
931  deps
932    breakiterator ucharstriebuilder
933
934group: universal_time_scale
935    utmscale.o
936
937group: uclean_i18n
938    ucln_in.o
939  deps
940    platform
941
942# ICU io library ------------------------------------------------------------- #
943
944library: io
945  deps
946    ustdio ustream uclean_io
947
948group: ustdio
949    locbund.o sprintf.o sscanf.o ufile.o ufmt_cmn.o uprintf.o uprntf_p.o uscanf.o uscanf_p.o ustdio.o
950  deps
951    formatting conversion translit
952    uclean_io
953    stdio_output
954
955group: ustream
956    ustream.o
957  deps
958    unistr_cnv
959    uchar  # for u_isWhitespace()
960    iostream
961
962group: uclean_io
963    ucln_io.o
964  deps
965    platform
966