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