• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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    pluralmap
136    date_interval
137    breakiterator
138    uts46 filterednormalizer2 normalizer2 loadednormalizer2 canonical_iterator
139    normlzr unormcmp unorm
140    idna2003 stringprep
141    stringenumeration
142    unistr_props unistr_case unistr_case_locale unistr_titlecase_brkiter unistr_cnv
143    cstr
144    uniset_core uniset_props uniset_closure usetiter uset uset_props
145    uiter
146    ucasemap ucasemap_titlecase_brkiter script_runs
147    uprops ubidi_props ucase uscript uscript_props
148    ubidi ushape
149    listformatter
150    resourcebundle service_registration resbund_cnv ures_cnv icudataver ucat
151    loclikely
152    conversion converter_selector ucnv_set ucnvdisp
153    messagepattern simplepatternformatter
154    icu_utility icu_utility_with_props
155    ustr_wcs
156    unifiedcache
157    ucharstriebuilder ucharstrieiterator
158    bytestriebuilder bytestrieiterator
159    hashtable uhash uvector uvector32 uvector64 ulist
160    propsvec utrie2 utrie2_builder
161    sort
162    uinit utypes errorcode
163    icuplug
164    platform
165
166group: pluralmap
167    # TODO: Move to i18n library, ticket #11926.
168    pluralmap.o
169  deps
170    platform
171
172group: date_interval  # class DateInterval
173    dtintrv.o
174  deps
175    platform
176
177group: breakiterator
178    # We could try to split off a breakiterator_builder group,
179    # but we still need uniset_props for code like in the ThaiBreakEngine constructor
180    # which does
181    #   fThaiWordSet.applyPattern(UNICODE_STRING_SIMPLE("[[:Thai:]&[:LineBreak=SA:]]"), status)
182    brkiter.o brkeng.o ubrk.o
183    rbbi.o rbbinode.o rbbiscan.o rbbisetb.o rbbistbl.o rbbitblb.o
184    rbbidata.o rbbirb.o
185    dictionarydata.o dictbe.o
186    # BreakIterator::makeInstance() factory implementation makes for circular dependency
187    # between BreakIterator base and FilteredBreakIteratorBuilder.
188    filteredbrk.o
189  deps
190    resourcebundle service_registration
191    schriter utext uniset_core uniset_props
192    uhash ustack utrie
193    ucharstrie bytestrie
194    ucharstriebuilder  # for filteredbrk.o
195    normlzr  # for dictbe.o, should switch to Normalizer2
196    uvector32 # for dictbe.o
197
198group: unormcmp  # unorm_compare()
199    unormcmp.o
200  deps
201    filterednormalizer2
202    uniset_props  # for uniset_getUnicode32Instance()
203    ucase
204
205group: unorm  # old normalization C API
206    unorm.o
207  deps
208    filterednormalizer2
209    uniset_props  # for uniset_getUnicode32Instance()
210    uiter
211
212group: normlzr  # old Normalizer C++ class
213    normlzr.o
214  deps
215    filterednormalizer2
216    uniset_props  # for uniset_getUnicode32Instance()
217    schriter
218
219group: uts46
220    uts46.o
221  deps
222    normalizer2 loadednormalizer2 punycode
223    uchar  # for u_charType() (via U_GET_GC_MASK(c))
224    ubidi_props  # for u_charDirection() & ubidi_getJoiningType()
225    bytestream
226
227group: filterednormalizer2
228    filterednormalizer2.o
229  deps
230    normalizer2
231
232group: idna2003
233    uidna.o
234  deps
235    stringprep punycode
236
237group: stringprep
238    usprep.o
239  deps
240    unorm  # could change to use filterednormalizer2 directly for Unicode 3.2 normalization
241    normalizer2
242    ubidi_props
243
244group: canonical_iterator
245    caniter.o
246  deps
247    normalizer2 usetiter
248
249group: loadednormalizer2
250    loadednormalizer2impl.o
251  deps
252    normalizer2
253
254group: normalizer2
255    normalizer2.o
256    normalizer2impl.o
257  deps
258    uniset_core
259    utrie2_builder  # for building CanonIterData & FCD
260    uvector  # for building CanonIterData
261    uhash  # for the instance cache
262    udata
263
264group: punycode
265    punycode.o
266  deps
267    platform
268
269group: uset_props
270    uset_props.o
271  deps
272    uniset_closure uniset_props uniset_core
273
274group: uset
275    uset.o
276  deps
277    uniset_core
278
279group: uniset_closure
280    uniset_closure.o
281  deps
282    uniset_core unistr_case_locale unistr_titlecase_brkiter
283
284group: uniset_props
285    uniset_props.o ruleiter.o
286  deps
287    uniset_core uprops unistr_case
288    parsepos
289    resourcebundle
290    propname unames
291
292group: parsepos
293    parsepos.o
294  deps
295    platform
296
297group: usetiter  # UnicodeSetIterator
298    usetiter.o
299  deps
300    uniset_core
301
302group: uniset_core
303    unifilt.o unifunct.o
304    uniset.o bmpset.o unisetspan.o
305  deps
306    patternprops
307    icu_utility
308    uvector
309
310group: icu_utility_with_props
311    util_props.o
312  deps
313    icu_utility uchar ucase
314
315group: icu_utility
316    util.o
317  deps
318    patternprops platform
319
320group: utext
321    utext.o
322  deps
323    ucase
324
325group: stringenumeration
326    ustrenum.o uenum.o
327  deps
328    platform
329
330group: schriter
331    schriter.o
332    # The UCharCharacterIterator implements virtual void getText(UnicodeString& result)
333    # so it depends on UnicodeString, therefore it makes little sense to split
334    # schriter and uchriter into separate groups.
335    uchriter.o
336  deps
337    chariter
338
339group: chariter
340    chariter.o
341  deps
342    platform
343
344group: uiter
345    uiter.o
346  deps
347    platform
348
349group: unistr_cnv
350    unistr_cnv.o
351  deps
352    conversion
353
354group: cstr
355    cstr.o
356  deps
357    unistr_cnv
358
359group: uscript
360    uscript.o  # uscript_getCode() accepts a locale ID and loads its script code data
361  deps
362    propname loclikely
363
364group: uscript_props  # script metadata properties
365    uscript_props.o
366  deps
367    platform
368
369group: uprops
370    uprops.o
371  deps
372    normalizer2 loadednormalizer2
373    uchar
374    ubidi_props
375    unistr_case ustring_case  # only for case folding
376    ucase
377
378group: propname
379    propname.o
380  deps
381    bytestrie
382
383group: unames
384    unames.o
385  deps
386    uchar udata
387
388group: script_runs
389    usc_impl.o
390  deps
391    uchar
392
393group: uchar
394    uchar.o
395  deps
396    utrie2
397
398group: messagepattern  # for MessageFormat and tools
399    messagepattern.o
400  deps
401    patternprops platform
402
403group: simplepatternformatter
404    simplepatternformatter.o
405  deps
406    platform
407
408group: patternprops
409    patternprops.o
410  deps
411    PIC
412
413group: ushape
414    ushape.o
415  deps
416    ubidi_props
417
418group: ubidi
419    ubidi.o ubidiln.o ubidiwrt.o
420  deps
421    ubidi_props
422    uchar  # for doWriteReverse() which uses IS_COMBINING(u_charType(c))
423
424group: ubidi_props
425    ubidi_props.o
426  deps
427    utrie2
428
429group: unistr_props
430    unistr_props.o
431  deps
432    uchar platform
433
434group: unistr_case_locale
435    unistr_case_locale.o
436  deps
437    unistr_case ustring_case_locale
438
439group: unistr_case
440    unistr_case.o
441  deps
442    ustring_case
443
444group: unistr_titlecase_brkiter
445    unistr_titlecase_brkiter.o
446  deps
447    ustr_titlecase_brkiter
448
449group: ustr_titlecase_brkiter
450    ustr_titlecase_brkiter.o
451  deps
452    breakiterator
453    ustring_case_locale ucase
454
455group: ucasemap_titlecase_brkiter
456    ucasemap_titlecase_brkiter.o
457  deps
458    ucasemap breakiterator utext
459
460group: ucasemap
461    ucasemap.o
462  deps
463    ustring_case
464    resourcebundle  # uloc_getName() etc.
465
466group: ustring_case_locale
467    ustrcase_locale.o
468  deps
469    ustring_case
470    resourcebundle  # for uloc_getDefault()
471
472group: ustring_case
473    ustrcase.o
474  deps
475    ucase
476
477group: ucase
478    ucase.o
479  deps
480    utrie2
481
482group: uinit
483    uinit.o
484  deps
485    ucnv_io icuplug
486
487group: converter_selector
488    ucnvsel.o
489  deps
490    conversion propsvec utrie2_builder uset ucnv_set
491
492group: ucnvdisp  # ucnv_getDisplayName()
493    ucnvdisp.o
494  deps
495    conversion resourcebundle
496
497group: ucnv_set  # ucnv_getUnicodeSet
498    ucnv_set.o
499  deps
500    uset
501
502group: conversion
503    ustr_cnv.o
504    ucnv.o ucnv_cnv.o ucnv_bld.o ucnv_cb.o ucnv_err.o
505    ucnv_ct.o
506    ucnvmbcs.o ucnv_ext.o
507    ucnvhz.o ucnvisci.o ucnv_lmb.o ucnv2022.o
508    ucnvlat1.o ucnv_u7.o ucnv_u8.o ucnv_u16.o ucnv_u32.o
509    ucnvbocu.o ucnvscsu.o
510  deps
511    ucnv_io
512
513group: ucnv_io
514    ucnv_io.o
515  deps
516    sort stringenumeration udata
517
518group: service_registration
519    serv.o servnotf.o servlkf.o servlk.o servls.o servrbf.o servslkf.o
520    locutil.o
521  deps
522    locale_display_names resourcebundle
523    hashtable uvector
524
525group: listformatter
526    listformatter.o ulistformatter.o
527  deps
528    resourcebundle simplepatternformatter
529
530group: ucat  # message-catalog-like API
531    ucat.o
532  deps
533    resourcebundle
534
535group: locale_display_names
536    locdispnames.o
537  deps
538    locresdata
539
540group: icudataver  # u_getDataVersion()
541    icudataver.o
542  deps
543    resourcebundle
544
545group: loclikely
546    loclikely.o
547  deps
548    resourcebundle uscript_props propname
549
550group: locresdata
551    # This was intended to collect locale functions that load resource bundle data.
552    # See the resourcebundle group about what else loads data.
553    locresdata.o
554  deps
555    resourcebundle
556
557group: resbund_cnv  # paths are Unicode strings
558    resbund_cnv.o
559  deps
560    conversion resourcebundle ures_cnv
561
562group: ures_cnv  # ures_openU, path is a Unicode string
563    ures_cnv.o
564  deps
565    conversion resourcebundle
566
567group: resourcebundle
568    resource.o resbund.o uresbund.o uresdata.o
569    locavailable.o
570    # uloc_tag.c and uloc_keytype.cpp convert between
571    # old ICU/LDML/CLDR locale IDs and newer BCP 47 IDs.
572    # They use data from resource bundles for some of the mappings.
573    # We might want to generate .h files for that data, to #include rather than load,
574    # to minimize dependencies from this code.
575    # Then we could separate this higher-level locale ID code from the resource bundle code.
576    uloc.o uloc_tag.o uloc_keytype.o
577    # Even basic locid.cpp via Locale constructors and Locale::getDefault()
578    # depend on canonicalization and data loading.
579    # We can probably only disentangle basic locale ID handling from resource bundle code
580    # by hardcoding all of the locale ID data.
581    locid.o locmap.o wintz.o
582    # Do we need class LocaleBased? http://bugs.icu-project.org/trac/ticket/8608
583    locbased.o
584  deps
585    udata ucol_swp
586    sort stringenumeration uhash uvector
587
588group: udata
589    udata.o ucmndata.o udatamem.o
590    umapfile.o
591  deps
592    uhash platform stubdata
593    file_io mmap_functions
594
595group: unifiedcache
596    unifiedcache.o
597  deps
598    uhash
599    platform
600
601group: ucharstriebuilder
602    ucharstriebuilder.o
603  deps
604    ucharstrie stringtriebuilder sort
605
606group: ucharstrieiterator
607    ucharstrieiterator.o
608  deps
609    ucharstrie uvector32
610
611group: ucharstrie
612    ucharstrie.o
613  deps
614    platform
615
616group: bytestriebuilder
617    bytestriebuilder.o
618  deps
619    bytestrie stringtriebuilder sort
620
621group: bytestrieiterator
622    bytestrieiterator.o
623  deps
624    bytestrie uvector32
625
626group: bytestrie
627    bytestrie.o
628  deps
629    platform
630
631group: stringtriebuilder
632    stringtriebuilder.o
633  deps
634    uhash
635
636group: propsvec
637    propsvec.o
638  deps
639    sort utrie2_builder
640
641group: utrie2_builder
642    utrie2_builder.o
643  deps
644    platform
645    utrie2
646    utrie  # for utrie2_fromUTrie()
647    ucol_swp  # for utrie_swap()
648
649group: utrie2
650    utrie2.o
651  deps
652    platform
653
654group: utrie  # Callers should use utrie2 instead.
655    utrie.o
656  deps
657    platform
658
659group: hashtable  # Maps UnicodeString to value.
660    uhash_us.o
661  deps
662    uhash
663
664group: uhash
665    uhash.o
666  deps
667    platform
668
669group: ustack
670    ustack.o
671  deps
672    uvector
673
674group: uvector
675    uvector.o
676  deps
677    platform
678    sort  # for UVector::sort()
679
680group: uvector32
681    uvectr32.o
682  deps
683    platform
684
685group: uvector64
686    uvectr64.o
687  deps
688    platform
689
690group: ulist
691    ulist.o
692  deps
693    platform
694
695group: sort
696    uarrsort.o
697  deps
698    platform
699
700group: ustr_wcs
701    ustr_wcs.o
702  deps
703    platform
704
705group: bytestream
706    bytestream.o
707  deps
708    platform
709
710group: icuplug
711    icuplug.o
712  deps
713    platform
714
715group: ucol_swp
716    ucol_swp.o
717  deps
718    utrie2  # Format version 4 uses UTrie2.
719
720group: errorcode  # ErrorCode base class
721    errorcode.o
722  deps
723    utypes
724    platform
725
726group: utypes  # u_errorName()
727    utypes.o
728
729group: platform
730    # Files in the "platform" group.
731    cmemory.o uobject.o
732    cstring.o cwchar.o uinvchar.o
733    charstr.o
734    unistr.o  # for CharString::appendInvariantChars(const UnicodeString &s, UErrorCode &errorCode)
735    appendable.o stringpiece.o ustrtrns.o  # for unistr.o
736    ustring.o  # Other platform files really just need u_strlen
737    ustrfmt.o  # uprv_itou
738    utf_impl.o
739    putil.o
740    ucln_cmn.o  # for putil.o which calls ucln_common_registerCleanup
741    udataswp.o  # for uinvchar.o; TODO: move uinvchar.o swapper functions to udataswp.o?
742    umath.o
743    umutex.o sharedobject.o
744    utrace.o
745  deps
746    # The "platform" group has no ICU dependencies.
747    PIC system_debug malloc_functions c_strings c_string_formatting
748    floating_point pthread system_locale
749    stdio_input readlink_function dir_io
750    dlfcn  # Move related code into icuplug.c?
751    cplusplus
752
753# ICU i18n library ----------------------------------------------------------- #
754
755library: i18n
756  deps
757    region localedata genderinfo charset_detector spoof_detection
758    alphabetic_index collation collation_builder string_search
759    formatting formattable_cnv regex regex_cnv translit
760    universal_time_scale
761    uclean_i18n
762
763group: region
764    region.o uregion.o
765  deps
766    formatting  # Temporary, TODO: Ticket #9982 class Region should use low-level ASCII-integer functions, and probably be moved to the common library.
767    resourcebundle
768    uvector uclean_i18n
769
770group: localedata
771    ulocdata.o
772  deps
773    uniset_props resourcebundle
774    uset_props  # TODO: change to using C++ UnicodeSet, remove this dependency
775    loclikely
776
777group: genderinfo
778    gender.o
779  deps
780    resourcebundle
781    uclean_i18n
782
783group: charset_detector
784    csdetect.o csmatch.o csr2022.o csrecog.o csrmbcs.o csrsbcs.o csrucode.o csrutf8.o inputext.o ucsdet.o
785  deps
786    conversion
787    uclean_i18n
788
789group: spoof_detection
790    uspoof.o uspoof_build.o uspoof_conf.o uspoof_impl.o uspoof_wsconf.o
791    identifier_info.o scriptset.o
792  deps
793    uniset_props regex unorm uscript
794
795group: alphabetic_index
796    alphaindex.o
797  deps
798    collation localedata
799    uclean_i18n
800
801group: collation
802    # The collation "runtime" code should not depend on the collation_builder code.
803    # For example, loading from resource bundles does not fall back to
804    # building from rules.
805    collation.o collationcompare.o collationdata.o
806    collationdatareader.o collationdatawriter.o
807    collationfastlatin.o collationfcd.o collationiterator.o collationkeys.o
808    collationroot.o collationrootelements.o collationsets.o
809    collationsettings.o collationtailoring.o rulebasedcollator.o
810    uitercollationiterator.o utf16collationiterator.o utf8collationiterator.o
811    bocsu.o coleitr.o coll.o sortkey.o ucol.o
812    ucol_res.o ucol_sit.o ucoleitr.o
813  deps
814    bytestream normalizer2 resourcebundle service_registration unifiedcache
815    ucharstrieiterator uiter ulist uset usetiter uvector32 uvector64
816    uclean_i18n propname
817
818group: collation_builder
819    collationbuilder.o collationdatabuilder.o collationfastlatinbuilder.o
820    collationruleparser.o collationweights.o
821  deps
822    canonical_iterator collation ucharstriebuilder uset_props
823
824group: string_search
825    search.o stsearch.o usearch.o
826  deps
827    breakiterator collation
828
829group: formatting
830    # TODO: Try to subdivide this ball of wax.
831    # locale_display_names2
832    locdspnm.o
833    # currency
834    ucurr.o
835    # currencyformat
836    curramt.o currfmt.o currpinf.o currunit.o
837    # decimalformat
838    dcfmtsym.o numsys.o unumsys.o
839    affixpatternparser.o decimfmtimpl.o digitaffix.o digitaffixesandpadding.o
840    digitformatter.o digitgrouping.o digitinterval.o
841    pluralaffix.o precision.o smallintformatter.o valueformatter.o
842    decfmtst.o decimfmt.o decimalformatpattern.o compactdecimalformat.o
843    numfmt.o unum.o
844    winnmfmt.o
845    # scientificnumberformatter - would depend on dcfmtsym, so would be circular.
846    scientificnumberformatter.o
847    # rbnf
848    nfrs.o nfrule.o nfsubs.o rbnf.o
849    # measureformat
850    measfmt.o measunit.o quantityformatter.o
851    # dateformat
852    astro.o buddhcal.o calendar.o cecal.o chnsecal.o coptccal.o dangical.o ethpccal.o
853    gregocal.o gregoimp.o hebrwcal.o indiancal.o islamcal.o japancal.o persncal.o taiwncal.o
854    ucal.o
855    basictz.o olsontz.o rbtz.o simpletz.o timezone.o tzrule.o tztrans.o
856    vtzone.o vzone.o wintzimpl.o zonemeta.o zrule.o ztrans.o
857    tzfmt.o tzgnames.o tznames.o tznames_impl.o
858    datefmt.o dtfmtsym.o dtitvfmt.o dtitvinf.o dtptngen.o dtrule.o reldtfmt.o reldatefmt.o
859    smpdtfmt.o smpdtfst.o udateintervalformat.o udatpg.o windtfmt.o
860    udat.o
861    tmunit.o tmutamt.o tmutfmt.o
862    # messageformat
863    choicfmt.o msgfmt.o plurfmt.o selfmt.o umsg.o
864  deps
865    digitlist formattable format
866    pluralrules
867    collation collation_builder  # for rbnf
868    common
869    floating_point  # sqrt() for astro.o
870    trigonometry  # for astro.o
871    stdlib_qsort  # for ucurr.o (which does not use ICU's uarrsort.o)
872    sharedbreakiterator # for reldatefmt.o
873    uclean_i18n
874
875group: sharedbreakiterator
876    sharedbreakiterator.o
877  deps
878    breakiterator
879
880group: digitlist
881    digitlst.o decContext.o decNumber.o visibledigits.o
882  deps
883    platform
884
885group: formattable
886    fmtable.o
887    measure.o
888  deps
889    digitlist
890
891group: formattable_cnv
892    fmtable_cnv.o
893  deps
894    formattable unistr_cnv conversion
895
896group: format
897    format.o fphdlimp.o fpositer.o ufieldpositer.o
898  deps
899    resourcebundle parsepos uvector32
900
901group: pluralrules
902    standardplural.o plurrule.o upluralrules.o
903  deps
904    digitlist  # plurals depend on decimals
905    patternprops resourcebundle uvector uvector32 unifiedcache
906    unistr_case_locale
907    uclean_i18n
908
909group: regex_cnv
910    uregexc.o
911  deps
912    regex unistr_cnv
913
914group: regex
915    regexcmp.o regexst.o regextxt.o regeximp.o rematch.o repattrn.o uregex.o
916  deps
917    uniset_closure utext uvector32 uvector64 ustack
918    breakiterator
919    uinit  # TODO: Really needed?
920    uclean_i18n
921
922group: translit
923    anytrans.o brktrans.o casetrn.o cpdtrans.o name2uni.o uni2name.o nortrans.o remtrans.o titletrn.o tolowtrn.o toupptrn.o
924    esctrn.o unesctrn.o nultrans.o
925    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
926  deps
927    common
928    formatting  # for Transliterator::getDisplayName()
929    uclean_i18n
930
931group: universal_time_scale
932    utmscale.o
933
934group: uclean_i18n
935    ucln_in.o
936  deps
937    platform
938
939# ICU io library ------------------------------------------------------------- #
940
941library: io
942  deps
943    ustdio ustream uclean_io
944
945group: ustdio
946    locbund.o sprintf.o sscanf.o ufile.o ufmt_cmn.o uprintf.o uprntf_p.o uscanf.o uscanf_p.o ustdio.o
947  deps
948    formatting conversion translit
949    uclean_io
950    stdio_output
951
952group: ustream
953    ustream.o
954  deps
955    unistr_cnv
956    uchar  # for u_isWhitespace()
957    iostream
958
959group: uclean_io
960    ucln_io.o
961  deps
962    platform
963