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