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