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