Home | History | Annotate | Download | only in depstest
      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 
     13 system_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 
     24 group: PIC
     25     # Position-Independent Code (-fPIC) requires a Global Offset Table.
     26     _GLOBAL_OFFSET_TABLE_
     27 
     28 group: system_debug
     29     __assert_fail __stack_chk_fail
     30 
     31 group: malloc_functions
     32     free malloc realloc
     33 
     34 group: 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 
     44 group: c_string_formatting
     45     atoi atol strtod strtol strtoul
     46     sprintf
     47     # Additional symbols in an optimized build.
     48     __sprintf_chk
     49 
     50 group: floating_point
     51     abs fabs floor ceil modf fmod log pow sqrt
     52 
     53 group: trigonometry
     54     acos asin atan atan2 cos sin tan
     55     # Additional symbols in an optimized build.
     56     sincos
     57 
     58 group: stdlib_qsort
     59     qsort
     60 
     61 group: pthread
     62     pthread_mutex_init pthread_mutex_destroy pthread_mutex_lock pthread_mutex_unlock
     63     pthread_cond_wait pthread_cond_broadcast
     64 
     65 group: system_locale
     66     getenv
     67     nl_langinfo setlocale
     68     gettimeofday localtime_r tzname tzset __timezone
     69 
     70 group: 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 
     75 group: stdio_output
     76     fflush fwrite
     77     stdout
     78 
     79 group: file_io
     80     open close stat
     81     # Additional symbols in an optimized build.
     82     __xstat
     83 
     84 group: readlink_function
     85     readlink  # putil.cpp uprv_tzname() calls this in a hack to get the time zone name
     86 
     87 group: dir_io
     88     opendir closedir readdir  # for a hack to get the time zone name
     89 
     90 group: mmap_functions  # for memory-mapped data loading
     91     mmap munmap
     92 
     93 group: dlfcn
     94     dlopen dlclose dlsym  # called by putil.o only for icuplug.o
     95 
     96 group: 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 
    115 group: 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 
    127 library: stubdata
    128     stubdata.o  # Exports icudt48_dat.
    129 
    130 library: 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 
    163 group: date_interval  # class DateInterval
    164     dtintrv.o
    165   deps
    166     platform
    167 
    168 group: 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 
    184 group: unormcmp  # unorm_compare()
    185     unormcmp.o
    186   deps
    187     filterednormalizer2
    188     uniset_props  # for uniset_getUnicode32Instance()
    189     ucase
    190 
    191 group: unorm  # old normalization C API
    192     unorm.o
    193   deps
    194     filterednormalizer2
    195     uniset_props  # for uniset_getUnicode32Instance()
    196     uiter
    197 
    198 group: normlzr  # old Normalizer C++ class
    199     normlzr.o
    200   deps
    201     filterednormalizer2
    202     uniset_props  # for uniset_getUnicode32Instance()
    203     schriter
    204 
    205 group: 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 
    214 group: filterednormalizer2
    215     filterednormalizer2.o
    216   deps
    217     normalizer2
    218 
    219 group: idna2003
    220     uidna.o
    221   deps
    222     stringprep punycode
    223 
    224 group: 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 
    231 group: canonical_iterator
    232     caniter.o
    233   deps
    234     normalizer2 usetiter
    235 
    236 group: 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 
    247 group: punycode
    248     punycode.o
    249   deps
    250     platform
    251 
    252 group: uset_props
    253     uset_props.o
    254   deps
    255     uniset_closure uniset_props uniset_core
    256 
    257 group: uset
    258     uset.o
    259   deps
    260     uniset_core
    261 
    262 group: uniset_closure
    263     uniset_closure.o
    264   deps
    265     uniset_core unistr_case_locale unistr_titlecase_brkiter
    266 
    267 group: uniset_props
    268     uniset_props.o ruleiter.o
    269   deps
    270     uniset_core uprops unistr_case
    271     parsepos
    272     resourcebundle
    273     propname unames
    274 
    275 group: parsepos
    276     parsepos.o
    277   deps
    278     platform
    279 
    280 group: usetiter  # UnicodeSetIterator
    281     usetiter.o
    282   deps
    283     uniset_core
    284 
    285 group: 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 
    293 group: icu_utility_with_props
    294     util_props.o
    295   deps
    296     icu_utility uchar ucase
    297 
    298 group: icu_utility
    299     util.o
    300   deps
    301     unistr_core patternprops
    302 
    303 group: utext
    304     utext.o
    305   deps
    306     unistr_core ucase
    307 
    308 group: stringenumeration
    309     ustrenum.o uenum.o
    310   deps
    311     unistr_core
    312 
    313 group: 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 
    322 group: chariter
    323     chariter.o
    324   deps
    325     platform
    326 
    327 group: uiter
    328     uiter.o
    329   deps
    330     platform
    331 
    332 group: unistr_cnv
    333     unistr_cnv.o
    334   deps
    335     conversion unistr_core
    336 
    337 group: unistr_core
    338     unistr.o
    339   deps
    340     ustrtrns appendable
    341 
    342 group: uscript
    343     uscript.o  # uscript_getCode() accepts a locale ID and loads its script code data
    344   deps
    345     propname resourcebundle
    346 
    347 group: uscript_props  # script metadata properties
    348     uscript_props.o
    349   deps
    350     unistr_core platform
    351 
    352 group: 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 
    361 group: propname
    362     propname.o
    363   deps
    364     bytestrie
    365 
    366 group: unames
    367     unames.o
    368   deps
    369     uchar udata
    370 
    371 group: script_runs
    372     usc_impl.o
    373   deps
    374     uchar
    375 
    376 group: uchar
    377     uchar.o
    378   deps
    379     utrie2
    380 
    381 group: messagepattern  # for MessageFormat and tools
    382     messagepattern.o
    383   deps
    384     patternprops unistr_core
    385 
    386 group: simplepatternformatter
    387     simplepatternformatter.o
    388   deps
    389     unistr_core
    390 
    391 group: patternprops
    392     patternprops.o
    393   deps
    394     PIC
    395 
    396 group: ushape
    397     ushape.o
    398   deps
    399     ubidi_props
    400 
    401 group: 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 
    407 group: ubidi_props
    408     ubidi_props.o
    409   deps
    410     utrie2
    411 
    412 group: unistr_props
    413     unistr_props.o
    414   deps
    415     unistr_core uchar
    416 
    417 group: unistr_case_locale
    418     unistr_case_locale.o
    419   deps
    420     unistr_case ustring_case_locale
    421 
    422 group: unistr_case
    423     unistr_case.o
    424   deps
    425     unistr_core
    426     ustring_case
    427 
    428 group: unistr_titlecase_brkiter
    429     unistr_titlecase_brkiter.o
    430   deps
    431     ustr_titlecase_brkiter
    432 
    433 group: ustr_titlecase_brkiter
    434     ustr_titlecase_brkiter.o
    435   deps
    436     breakiterator
    437     ustring_case_locale ucase
    438 
    439 group: ucasemap_titlecase_brkiter
    440     ucasemap_titlecase_brkiter.o
    441   deps
    442     ucasemap breakiterator utext
    443 
    444 group: ucasemap
    445     ucasemap.o
    446   deps
    447     ustring_case
    448     resourcebundle  # uloc_getName() etc.
    449 
    450 group: ustring_case_locale
    451     ustrcase_locale.o
    452   deps
    453     ustring_case
    454     resourcebundle  # for uloc_getDefault()
    455 
    456 group: ustring_case
    457     ustrcase.o
    458   deps
    459     ucase
    460 
    461 group: ucase
    462     ucase.o
    463   deps
    464     unistr_core utrie2
    465 
    466 group: uinit
    467     uinit.o
    468   deps
    469     ucnv_io icuplug
    470 
    471 group: converter_selector
    472     ucnvsel.o
    473   deps
    474     conversion propsvec utrie2_builder uset ucnv_set
    475 
    476 group: ucnvdisp  # ucnv_getDisplayName()
    477     ucnvdisp.o
    478   deps
    479     conversion resourcebundle
    480 
    481 group: ucnv_set  # ucnv_getUnicodeSet
    482     ucnv_set.o
    483   deps
    484     uset
    485 
    486 group: 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 
    497 group: ucnv_io
    498     ucnv_io.o
    499   deps
    500     sort stringenumeration udata
    501 
    502 group: 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 
    509 group: listformatter
    510     listformatter.o
    511   deps
    512     resourcebundle simplepatternformatter
    513 
    514 group: ucat  # message-catalog-like API
    515     ucat.o
    516   deps
    517     resourcebundle
    518 
    519 group: locale_display_names
    520     locdispnames.o
    521   deps
    522     locresdata
    523 
    524 group: icudataver  # u_getDataVersion()
    525     icudataver.o
    526   deps
    527     resourcebundle
    528 
    529 group: loclikely
    530     loclikely.o
    531   deps
    532     resourcebundle
    533 
    534 group: 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 
    541 group: resbund_cnv  # paths are Unicode strings
    542     resbund_cnv.o
    543   deps
    544     conversion resourcebundle ures_cnv
    545 
    546 group: ures_cnv  # ures_openU, path is a Unicode string
    547     ures_cnv.o
    548   deps
    549     conversion resourcebundle
    550 
    551 group: 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 
    571 group: 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 
    578 group: lrucache
    579     lrucache.o
    580   deps
    581     uhash
    582     platform
    583 
    584 group: ucharstriebuilder
    585     ucharstriebuilder.o
    586   deps
    587     ucharstrie stringtriebuilder sort
    588     unistr_core
    589 
    590 group: ucharstrieiterator
    591     ucharstrieiterator.o
    592   deps
    593     ucharstrie unistr_core uvector32
    594 
    595 group: ucharstrie
    596     ucharstrie.o
    597   deps
    598     platform
    599 
    600 group: bytestriebuilder
    601     bytestriebuilder.o
    602   deps
    603     bytestrie stringtriebuilder sort
    604     charstr stringpiece
    605 
    606 group: bytestrieiterator
    607     bytestrieiterator.o
    608   deps
    609     bytestrie charstr uvector32
    610 
    611 group: bytestrie
    612     bytestrie.o
    613   deps
    614     platform
    615 
    616 group: stringtriebuilder
    617     stringtriebuilder.o
    618   deps
    619     uhash
    620 
    621 group: propsvec
    622     propsvec.o
    623   deps
    624     sort utrie2_builder
    625 
    626 group: utrie2_builder
    627     utrie2_builder.o
    628   deps
    629     platform
    630     utrie2
    631     utrie  # for utrie2_fromUTrie()
    632     ucol_swp  # for utrie_swap()
    633 
    634 group: utrie2
    635     utrie2.o
    636   deps
    637     platform
    638 
    639 group: utrie  # Callers should use utrie2 instead.
    640     utrie.o
    641   deps
    642     platform
    643 
    644 group: hashtable  # Maps UnicodeString to value.
    645     uhash_us.o
    646   deps
    647     unistr_core
    648     uhash
    649 
    650 group: uhash
    651     uhash.o
    652   deps
    653     platform
    654 
    655 group: ustack
    656     ustack.o
    657   deps
    658     uvector
    659 
    660 group: uvector
    661     uvector.o
    662   deps
    663     platform
    664     sort  # for UVector::sort()
    665 
    666 group: uvector32
    667     uvectr32.o
    668   deps
    669     platform
    670 
    671 group: uvector64
    672     uvectr64.o
    673   deps
    674     platform
    675 
    676 group: ulist
    677     ulist.o
    678   deps
    679     platform
    680 
    681 group: sort
    682     uarrsort.o
    683   deps
    684     platform
    685 
    686 group: ustr_wcs
    687     ustr_wcs.o
    688   deps
    689     ustrtrns  # on platforms where wchar_t is UTF-32
    690     # platform -- on other platforms
    691 
    692 group: ustrtrns
    693     ustrtrns.o
    694   deps
    695     platform
    696 
    697 group: charstr
    698     charstr.o
    699   deps
    700     unistr_core  # for CharString::appendInvariantChars(const UnicodeString &s, UErrorCode &errorCode)
    701     platform
    702 
    703 group: stringpiece
    704     stringpiece.o
    705   deps
    706     PIC c_strings
    707 
    708 group: bytestream
    709     bytestream.o
    710   deps
    711     platform
    712 
    713 group: appendable
    714     appendable.o
    715   deps
    716     platform
    717 
    718 group: icuplug
    719     icuplug.o
    720   deps
    721     platform
    722 
    723 group: ucol_swp
    724     ucol_swp.o
    725   deps
    726     utrie2  # Format version 4 uses UTrie2.
    727 
    728 group: errorcode  # ErrorCode base class
    729     errorcode.o
    730   deps
    731     utypes
    732     platform
    733 
    734 group: utypes  # u_errorName()
    735     utypes.o
    736 
    737 group: 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 
    760 library: 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 
    769 group: 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 
    776 group: 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 
    783 group: genderinfo
    784     gender.o
    785   deps
    786     resourcebundle
    787     uclean_i18n
    788 
    789 group: 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 
    795 group: 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 
    801 group: alphabetic_index
    802     alphaindex.o
    803   deps
    804     collation localedata
    805     uclean_i18n
    806 
    807 group: 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 
    824 group: 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 
    834 group: string_search
    835     search.o stsearch.o usearch.o
    836   deps
    837     breakiterator collation
    838 
    839 group: 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 
    877 group: digitlist
    878     digitlst.o decContext.o decNumber.o
    879   deps
    880     charstr stringpiece unistr_core
    881 
    882 group: formattable
    883     fmtable.o
    884     measure.o
    885   deps
    886     unistr_core digitlist stringpiece charstr
    887 
    888 group: formattable_cnv
    889     fmtable_cnv.o
    890   deps
    891     formattable unistr_cnv conversion
    892 
    893 group: format
    894     format.o fphdlimp.o fpositer.o
    895   deps
    896     resourcebundle parsepos unistr_core uvector32
    897 
    898 group: 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 
    906 group: regex_cnv
    907     uregexc.o
    908   deps
    909     regex unistr_cnv
    910 
    911 group: 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 
    920 group: 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 
    929 group: filteredbreakiterator
    930     filteredbrk.o
    931   deps
    932     breakiterator ucharstriebuilder
    933 
    934 group: universal_time_scale
    935     utmscale.o
    936 
    937 group: uclean_i18n
    938     ucln_in.o
    939   deps
    940     platform
    941 
    942 # ICU io library ------------------------------------------------------------- #
    943 
    944 library: io
    945   deps
    946     ustdio ustream uclean_io
    947 
    948 group: 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 
    955 group: ustream
    956     ustream.o
    957   deps
    958     unistr_cnv
    959     uchar  # for u_isWhitespace()
    960     iostream
    961 
    962 group: uclean_io
    963     ucln_io.o
    964   deps
    965     platform
    966