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