1# Copyright (c) 2012 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5{
6  'variables': {
7    'use_system_icu%': 0,
8    'icu_use_data_file_flag%': 0,
9    'want_separate_host_toolset%': 1,
10  },
11  'target_defaults': {
12    'direct_dependent_settings': {
13      'defines': [
14        # Tell ICU to not insert |using namespace icu;| into its headers,
15        # so that chrome's source explicitly has to use |icu::|.
16        'U_USING_ICU_NAMESPACE=0',
17      ],
18    },
19    'defines': [
20      'U_USING_ICU_NAMESPACE=0',
21    ],
22    'conditions': [
23      ['component=="static_library"', {
24        'defines': [
25          'U_STATIC_IMPLEMENTATION',
26        ],
27      }],
28      ['(OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \
29         or OS=="netbsd" or OS=="mac" or OS=="android") and \
30        (target_arch=="arm" or target_arch=="ia32" or \
31         target_arch=="mipsel")', {
32        'target_conditions': [
33          ['_toolset=="host"', {
34            'cflags': [ '-m32' ],
35            'ldflags': [ '-m32' ],
36            'asflags': [ '-32' ],
37            'xcode_settings': {
38              'ARCHS': [ 'i386' ],
39            },
40          }],
41        ],
42      }],
43    ],
44    'include_dirs': [
45      'source/common',
46      'source/i18n',
47    ],
48    'msvs_disabled_warnings': [4005, 4068, 4355, 4996, 4267],
49  },
50  'conditions': [
51    ['use_system_icu==0 or want_separate_host_toolset==1', {
52      'targets': [
53        {
54          'target_name': 'icudata',
55          'type': 'static_library',
56          'defines': [
57            'U_HIDE_DATA_SYMBOL',
58          ],
59          'sources': [
60             # These are hand-generated, but will do for now.  The linux
61             # version is an identical copy of the (mac) icudt46l_dat.S file,
62             # modulo removal of the .private_extern and .const directives and
63             # with no leading underscore on the icudt46_dat symbol.
64             'android/icudt46l_dat.S',
65             'linux/icudt46l_dat.S',
66             'mac/icudt46l_dat.S',
67          ],
68          'conditions': [
69            [ 'use_system_icu==1', {
70              'toolsets': ['host'],
71            }, {
72              'toolsets': ['host', 'target'],
73            }],
74            [ 'OS == "win"', {
75              'type': 'none',
76              'copies': [
77                {
78                  'destination': '<(PRODUCT_DIR)',
79                  'files': [
80                    'windows/icudt.dll',
81                  ],
82                },
83              ],
84            }],
85            [ 'OS != "win" and icu_use_data_file_flag', {
86              # Remove any assembly data file.
87              'sources/': [['exclude', 'icudt46l_dat']],
88              # Compile in the stub data symbol.
89              'sources': ['source/stubdata/stubdata.c'],
90              # Make sure any binary depending on this gets the data file.
91              'link_settings': {
92                'target_conditions': [
93                  ['(OS == "mac" and _mac_bundle) or OS=="ios"', {
94                    'mac_bundle_resources': [
95                      'source/data/in/icudt46l.dat',
96                    ],
97                  }, {
98                    'copies': [{
99                      'destination': '<(PRODUCT_DIR)',
100                      'files': [
101                        'source/data/in/icudt46l.dat',
102                      ],
103                    }],
104                  }],
105                ],  # target_conditions
106              },  # link_settings
107            }],
108          ],
109          'target_conditions': [
110            [ 'OS == "win" or OS == "mac" or OS == "ios" or '
111              '(OS == "android" and (_toolset == "target" or host_os != "linux"))', {
112              'sources!': ['linux/icudt46l_dat.S'],
113            }],
114            [ 'OS != "android" or _toolset == "host"', {
115              'sources!': ['android/icudt46l_dat.S'],
116            }],
117            [ 'OS != "mac" and OS != "ios" and '
118              '(OS != "android" or _toolset != "host" or host_os != "mac")', {
119              'sources!': ['mac/icudt46l_dat.S'],
120            }],
121          ],
122        },
123        {
124          'target_name': 'icui18n',
125          'type': '<(component)',
126          'sources': [
127            'source/i18n/anytrans.cpp',
128            'source/i18n/astro.cpp',
129            'source/i18n/basictz.cpp',
130            'source/i18n/bms.cpp',
131            'source/i18n/bmsearch.cpp',
132            'source/i18n/bocsu.c',
133            'source/i18n/brktrans.cpp',
134            'source/i18n/buddhcal.cpp',
135            'source/i18n/calendar.cpp',
136            'source/i18n/casetrn.cpp',
137            'source/i18n/cecal.cpp',
138            'source/i18n/chnsecal.cpp',
139            'source/i18n/choicfmt.cpp',
140            'source/i18n/coleitr.cpp',
141            'source/i18n/coll.cpp',
142            'source/i18n/colldata.cpp',
143            'source/i18n/coptccal.cpp',
144            'source/i18n/cpdtrans.cpp',
145            'source/i18n/csdetect.cpp',
146            'source/i18n/csmatch.cpp',
147            'source/i18n/csr2022.cpp',
148            'source/i18n/csrecog.cpp',
149            'source/i18n/csrmbcs.cpp',
150            'source/i18n/csrsbcs.cpp',
151            'source/i18n/csrucode.cpp',
152            'source/i18n/csrutf8.cpp',
153            'source/i18n/curramt.cpp',
154            'source/i18n/currfmt.cpp',
155            'source/i18n/currpinf.cpp',
156            'source/i18n/currunit.cpp',
157            'source/i18n/datefmt.cpp',
158            'source/i18n/dcfmtsym.cpp',
159            'source/i18n/decContext.c',
160            'source/i18n/decNumber.c',
161            'source/i18n/decimfmt.cpp',
162            'source/i18n/digitlst.cpp',
163            'source/i18n/dtfmtsym.cpp',
164            'source/i18n/dtitvfmt.cpp',
165            'source/i18n/dtitvinf.cpp',
166            'source/i18n/dtptngen.cpp',
167            'source/i18n/dtrule.cpp',
168            'source/i18n/esctrn.cpp',
169            'source/i18n/ethpccal.cpp',
170            'source/i18n/fmtable.cpp',
171            'source/i18n/fmtable_cnv.cpp',
172            'source/i18n/format.cpp',
173            'source/i18n/fphdlimp.cpp',
174            'source/i18n/fpositer.cpp',
175            'source/i18n/funcrepl.cpp',
176            'source/i18n/gregocal.cpp',
177            'source/i18n/gregoimp.cpp',
178            'source/i18n/hebrwcal.cpp',
179            'source/i18n/indiancal.cpp',
180            'source/i18n/inputext.cpp',
181            'source/i18n/islamcal.cpp',
182            'source/i18n/japancal.cpp',
183            'source/i18n/locdspnm.cpp',
184            'source/i18n/measfmt.cpp',
185            'source/i18n/measure.cpp',
186            'source/i18n/msgfmt.cpp',
187            'source/i18n/name2uni.cpp',
188            'source/i18n/nfrs.cpp',
189            'source/i18n/nfrule.cpp',
190            'source/i18n/nfsubs.cpp',
191            'source/i18n/nortrans.cpp',
192            'source/i18n/nultrans.cpp',
193            'source/i18n/numfmt.cpp',
194            'source/i18n/numsys.cpp',
195            'source/i18n/olsontz.cpp',
196            'source/i18n/persncal.cpp',
197            'source/i18n/plurfmt.cpp',
198            'source/i18n/plurrule.cpp',
199            'source/i18n/quant.cpp',
200            'source/i18n/rbnf.cpp',
201            'source/i18n/rbt.cpp',
202            'source/i18n/rbt_data.cpp',
203            'source/i18n/rbt_pars.cpp',
204            'source/i18n/rbt_rule.cpp',
205            'source/i18n/rbt_set.cpp',
206            'source/i18n/rbtz.cpp',
207            'source/i18n/regexcmp.cpp',
208            'source/i18n/regexst.cpp',
209            'source/i18n/regextxt.cpp',
210            'source/i18n/reldtfmt.cpp',
211            'source/i18n/rematch.cpp',
212            'source/i18n/remtrans.cpp',
213            'source/i18n/repattrn.cpp',
214            'source/i18n/search.cpp',
215            'source/i18n/selfmt.cpp',
216            'source/i18n/simpletz.cpp',
217            'source/i18n/smpdtfmt.cpp',
218            'source/i18n/sortkey.cpp',
219            'source/i18n/strmatch.cpp',
220            'source/i18n/strrepl.cpp',
221            'source/i18n/stsearch.cpp',
222            'source/i18n/taiwncal.cpp',
223            'source/i18n/tblcoll.cpp',
224            'source/i18n/timezone.cpp',
225            'source/i18n/titletrn.cpp',
226            'source/i18n/tmunit.cpp',
227            'source/i18n/tmutamt.cpp',
228            'source/i18n/tmutfmt.cpp',
229            'source/i18n/tolowtrn.cpp',
230            'source/i18n/toupptrn.cpp',
231            'source/i18n/translit.cpp',
232            'source/i18n/transreg.cpp',
233            'source/i18n/tridpars.cpp',
234            'source/i18n/tzrule.cpp',
235            'source/i18n/tztrans.cpp',
236            'source/i18n/ucal.cpp',
237            'source/i18n/ucln_in.c',
238            'source/i18n/ucol.cpp',
239            'source/i18n/ucol_bld.cpp',
240            'source/i18n/ucol_cnt.cpp',
241            'source/i18n/ucol_elm.cpp',
242            'source/i18n/ucol_res.cpp',
243            'source/i18n/ucol_sit.cpp',
244            'source/i18n/ucol_tok.cpp',
245            'source/i18n/ucol_wgt.cpp',
246            'source/i18n/ucoleitr.cpp',
247            'source/i18n/ucsdet.cpp',
248            'source/i18n/ucurr.cpp',
249            'source/i18n/udat.cpp',
250            'source/i18n/udatpg.cpp',
251            'source/i18n/ulocdata.c',
252            'source/i18n/umsg.cpp',
253            'source/i18n/unesctrn.cpp',
254            'source/i18n/uni2name.cpp',
255            'source/i18n/unum.cpp',
256            'source/i18n/uregex.cpp',
257            'source/i18n/uregexc.cpp',
258            'source/i18n/usearch.cpp',
259            'source/i18n/uspoof.cpp',
260            'source/i18n/uspoof_build.cpp',
261            'source/i18n/uspoof_conf.cpp',
262            'source/i18n/uspoof_impl.cpp',
263            'source/i18n/uspoof_wsconf.cpp',
264            'source/i18n/utmscale.c',
265            'source/i18n/utrans.cpp',
266            'source/i18n/vtzone.cpp',
267            'source/i18n/vzone.cpp',
268            'source/i18n/windtfmt.cpp',
269            'source/i18n/winnmfmt.cpp',
270            'source/i18n/wintzimpl.cpp',
271            'source/i18n/zonemeta.cpp',
272            'source/i18n/zrule.cpp',
273            'source/i18n/zstrfmt.cpp',
274            'source/i18n/ztrans.cpp',
275          ],
276          'defines': [
277            'U_I18N_IMPLEMENTATION',
278          ],
279          'dependencies': [
280            'icuuc',
281          ],
282          'direct_dependent_settings': {
283            'include_dirs': [
284              'source/i18n',
285            ],
286          },
287          'conditions': [
288            [ 'use_system_icu==1', {
289              'toolsets': ['host'],
290            }, {
291              'toolsets': ['host', 'target'],
292            }],
293            [ 'os_posix == 1 and OS != "mac" and OS != "ios"', {
294              # Since ICU wants to internally use its own deprecated APIs, don't
295              # complain about it.
296              'cflags': [
297                '-Wno-deprecated-declarations',
298              ],
299              'cflags_cc': [
300                '-frtti',
301              ],
302            }],
303            ['OS == "mac" or OS == "ios"', {
304              'xcode_settings': {
305                'GCC_ENABLE_CPP_RTTI': 'YES',       # -frtti
306              },
307            }],
308            ['OS == "win"', {
309              'msvs_settings': {
310                'VCCLCompilerTool': {
311                  'RuntimeTypeInfo': 'true',
312                },
313              }
314            }],
315            ['clang==1', {
316              'xcode_settings': {
317                'WARNING_CFLAGS': [
318                  # ICU uses its own deprecated functions.
319                  '-Wno-deprecated-declarations',
320                  # ICU prefers `a && b || c` over `(a && b) || c`.
321                  '-Wno-logical-op-parentheses',
322                  # ICU has some `unsigned < 0` checks.
323                  '-Wno-tautological-compare',
324                  # uspoof.h has a U_NAMESPACE_USE macro. That's a bug,
325                  # the header should use U_NAMESPACE_BEGIN instead.
326                  # http://bugs.icu-project.org/trac/ticket/9054
327                  '-Wno-header-hygiene',
328                  # Looks like a real issue, see http://crbug.com/114660
329                  '-Wno-return-type-c-linkage',
330                ],
331              },
332              'cflags': [
333                '-Wno-deprecated-declarations',
334                '-Wno-logical-op-parentheses',
335                '-Wno-tautological-compare',
336                '-Wno-header-hygiene',
337                '-Wno-return-type-c-linkage',
338              ],
339            }],
340            ['OS == "android" and clang==0', {
341                # Disable sincos() optimization to avoid a linker error since
342                # Android's math library doesn't have sincos().  Either
343                # -fno-builtin-sin or -fno-builtin-cos works.
344                'cflags': [
345                    '-fno-builtin-sin',
346                ],
347            }],
348            ['OS == "android" and use_system_stlport == 1', {
349              'target_conditions': [
350                ['_toolset == "target"', {
351                  # ICU requires RTTI, which is not present in the system's
352                  # stlport, so we have to include gabi++.
353                  'include_dirs': [
354                    '<(android_src)/abi/cpp/include',
355                  ],
356                  'link_settings': {
357                    'libraries': [
358                      '-lgabi++',
359                    ],
360                  },
361                }],
362              ],
363            }],
364          ],
365        },
366        {
367          'target_name': 'icuuc',
368          'type': '<(component)',
369          'sources': [
370            'source/common/bmpset.cpp',
371            'source/common/brkeng.cpp',
372            'source/common/brkiter.cpp',
373            'source/common/bytestream.cpp',
374            'source/common/caniter.cpp',
375            'source/common/chariter.cpp',
376            'source/common/charstr.cpp',
377            'source/common/cmemory.c',
378            'source/common/cstring.c',
379            'source/common/cwchar.c',
380            'source/common/dictbe.cpp',
381            'source/common/dtintrv.cpp',
382            'source/common/errorcode.cpp',
383            'source/common/filterednormalizer2.cpp',
384            'source/common/icudataver.c',
385            'source/common/icuplug.c',
386            'source/common/locavailable.cpp',
387            'source/common/locbased.cpp',
388            'source/common/locdispnames.cpp',
389            'source/common/locid.cpp',
390            'source/common/loclikely.cpp',
391            'source/common/locmap.c',
392            'source/common/locresdata.cpp',
393            'source/common/locutil.cpp',
394            'source/common/mutex.cpp',
395            'source/common/normalizer2.cpp',
396            'source/common/normalizer2impl.cpp',
397            'source/common/normlzr.cpp',
398            'source/common/parsepos.cpp',
399            'source/common/propname.cpp',
400            'source/common/propsvec.c',
401            'source/common/punycode.c',
402            'source/common/putil.c',
403            'source/common/rbbi.cpp',
404            'source/common/rbbidata.cpp',
405            'source/common/rbbinode.cpp',
406            'source/common/rbbirb.cpp',
407            'source/common/rbbiscan.cpp',
408            'source/common/rbbisetb.cpp',
409            'source/common/rbbistbl.cpp',
410            'source/common/rbbitblb.cpp',
411            'source/common/resbund.cpp',
412            'source/common/resbund_cnv.cpp',
413            'source/common/ruleiter.cpp',
414            'source/common/schriter.cpp',
415            'source/common/serv.cpp',
416            'source/common/servlk.cpp',
417            'source/common/servlkf.cpp',
418            'source/common/servls.cpp',
419            'source/common/servnotf.cpp',
420            'source/common/servrbf.cpp',
421            'source/common/servslkf.cpp',
422            'source/common/stringpiece.cpp',
423            'source/common/triedict.cpp',
424            'source/common/uarrsort.c',
425            'source/common/ubidi.c',
426            'source/common/ubidi_props.c',
427            'source/common/ubidiln.c',
428            'source/common/ubidiwrt.c',
429            'source/common/ubrk.cpp',
430            'source/common/ucase.c',
431            'source/common/ucasemap.c',
432            'source/common/ucat.c',
433            'source/common/uchar.c',
434            'source/common/uchriter.cpp',
435            'source/common/ucln_cmn.c',
436            'source/common/ucmndata.c',
437            'source/common/ucnv.c',
438            'source/common/ucnv2022.c',
439            'source/common/ucnv_bld.c',
440            'source/common/ucnv_cb.c',
441            'source/common/ucnv_cnv.c',
442            'source/common/ucnv_err.c',
443            'source/common/ucnv_ext.c',
444            'source/common/ucnv_io.c',
445            'source/common/ucnv_lmb.c',
446            'source/common/ucnv_set.c',
447            'source/common/ucnv_u16.c',
448            'source/common/ucnv_u32.c',
449            'source/common/ucnv_u7.c',
450            'source/common/ucnv_u8.c',
451            'source/common/ucnvbocu.c',
452            'source/common/ucnvdisp.c',
453            'source/common/ucnvhz.c',
454            'source/common/ucnvisci.c',
455            'source/common/ucnvlat1.c',
456            'source/common/ucnvmbcs.c',
457            'source/common/ucnvscsu.c',
458            'source/common/ucnvsel.cpp',
459            'source/common/ucol_swp.cpp',
460            'source/common/udata.cpp',
461            'source/common/udatamem.c',
462            'source/common/udataswp.c',
463            'source/common/uenum.c',
464            'source/common/uhash.c',
465            'source/common/uhash_us.cpp',
466            'source/common/uidna.cpp',
467            'source/common/uinit.c',
468            'source/common/uinvchar.c',
469            'source/common/uiter.cpp',
470            'source/common/ulist.c',
471            'source/common/uloc.c',
472            'source/common/uloc_tag.c',
473            'source/common/umapfile.c',
474            'source/common/umath.c',
475            'source/common/umutex.c',
476            'source/common/unames.c',
477            'source/common/unifilt.cpp',
478            'source/common/unifunct.cpp',
479            'source/common/uniset.cpp',
480            'source/common/uniset_props.cpp',
481            'source/common/unisetspan.cpp',
482            'source/common/unistr.cpp',
483            'source/common/unistr_case.cpp',
484            'source/common/unistr_cnv.cpp',
485            'source/common/unistr_props.cpp',
486            'source/common/unorm.cpp',
487            'source/common/unorm_it.c',
488            'source/common/unormcmp.cpp',
489            'source/common/uobject.cpp',
490            'source/common/uprops.cpp',
491            'source/common/ures_cnv.c',
492            'source/common/uresbund.c',
493            'source/common/uresdata.c',
494            'source/common/usc_impl.c',
495            'source/common/uscript.c',
496            'source/common/uset.cpp',
497            'source/common/uset_props.cpp',
498            'source/common/usetiter.cpp',
499            'source/common/ushape.c',
500            'source/common/usprep.cpp',
501            'source/common/ustack.cpp',
502            'source/common/ustr_cnv.c',
503            'source/common/ustr_wcs.c',
504            'source/common/ustrcase.c',
505            'source/common/ustrenum.cpp',
506            'source/common/ustrfmt.c',
507            'source/common/ustring.c',
508            'source/common/ustrtrns.c',
509            'source/common/utext.cpp',
510            'source/common/utf_impl.c',
511            'source/common/util.cpp',
512            'source/common/util_props.cpp',
513            'source/common/utrace.c',
514            'source/common/utrie.c',
515            'source/common/utrie2.cpp',
516            'source/common/utrie2_builder.c',
517            'source/common/uts46.cpp',
518            'source/common/utypes.c',
519            'source/common/uvector.cpp',
520            'source/common/uvectr32.cpp',
521            'source/common/uvectr64.cpp',
522            'source/common/wintz.c',
523          ],
524          'defines': [
525            'U_COMMON_IMPLEMENTATION',
526          ],
527          'dependencies': [
528            'icudata',
529          ],
530          'direct_dependent_settings': {
531            'include_dirs': [
532              'source/common',
533            ],
534            'conditions': [
535              [ 'component=="static_library"', {
536                'defines': [
537                  'U_STATIC_IMPLEMENTATION',
538                ],
539              }],
540            ],
541          },
542          'conditions': [
543            [ 'use_system_icu==1', {
544              'toolsets': ['host'],
545            }, {
546              'toolsets': ['host', 'target'],
547            }],
548            [ 'OS == "win"', {
549              'sources': [
550                'source/stubdata/stubdata.c',
551              ],
552            }],
553            [ 'os_posix == 1 and OS != "mac" and OS != "ios"', {
554              'cflags': [
555                # Since ICU wants to internally use its own deprecated APIs,
556                # don't complain about it.
557                '-Wno-deprecated-declarations',
558                '-Wno-unused-function',
559              ],
560              'cflags_cc': [
561                '-frtti',
562              ],
563            }],
564            ['OS == "mac" or OS == "ios"', {
565              'xcode_settings': {
566                'GCC_ENABLE_CPP_RTTI': 'YES',       # -frtti
567              },
568            }],
569            ['OS == "win"', {
570              'msvs_settings': {
571                'VCCLCompilerTool': {
572                  'RuntimeTypeInfo': 'true',
573                },
574              },
575            }],
576            ['OS == "android" and use_system_stlport == 1', {
577              'target_conditions': [
578                ['_toolset == "target"', {
579                  # ICU requires RTTI, which is not present in the system's
580                  # stlport, so we have to include gabi++.
581                  'include_dirs': [
582                    '<(android_src)/abi/cpp/include',
583                  ],
584                  'link_settings': {
585                    'libraries': [
586                      '-lgabi++',
587                    ],
588                  },
589                }],
590              ],
591            }],
592            ['clang==1', {
593              'xcode_settings': {
594                'WARNING_CFLAGS': [
595                  # ICU uses its own deprecated functions.
596                  '-Wno-deprecated-declarations',
597                  # ICU prefers `a && b || c` over `(a && b) || c`.
598                  '-Wno-logical-op-parentheses',
599                  # ICU has some `unsigned < 0` checks.
600                  '-Wno-tautological-compare',
601                  # uresdata.c has switch(RES_GET_TYPE(x)) code. The
602                  # RES_GET_TYPE macro returns an UResType enum, but some switch
603                  # statement contains case values that aren't part of that
604                  # enum (e.g. URES_TABLE32 which is in UResInternalType). This
605                  # is on purpose.
606                  '-Wno-switch',
607                ],
608              },
609              'cflags': [
610                '-Wno-deprecated-declarations',
611                '-Wno-logical-op-parentheses',
612                '-Wno-tautological-compare',
613                '-Wno-switch',
614              ],
615            }],
616          ],
617        },
618      ],
619    }],
620    ['use_system_icu==1', {
621      'targets': [
622        {
623          'target_name': 'system_icu',
624          'type': 'none',
625          'conditions': [
626            ['want_separate_host_toolset==1', {
627              'toolsets': ['target'],
628            }, {
629              'toolsets': ['host', 'target'],
630            }],
631            ['OS=="android"', {
632              'direct_dependent_settings': {
633                'include_dirs': [
634                  '<(android_src)/external/icu4c/common',
635                  '<(android_src)/external/icu4c/i18n',
636                ],
637              },
638              'link_settings': {
639                'libraries': [
640                  '-licui18n',
641                  '-licuuc',
642                ],
643              },
644            },{ # OS!="android"
645              'link_settings': {
646                'ldflags': [
647                  '<!@(icu-config --ldflags)',
648                ],
649                'libraries': [
650                  '<!@(icu-config --ldflags-libsonly)',
651                ],
652              },
653            }],
654          ],
655        },
656        {
657          'target_name': 'icudata',
658          'type': 'none',
659          'dependencies': ['system_icu'],
660          'export_dependent_settings': ['system_icu'],
661          'conditions': [
662            ['want_separate_host_toolset==1', {
663              'toolsets': ['target'],
664            }, {
665              'toolsets': ['host', 'target'],
666            }],
667          ],
668        },
669        {
670          'target_name': 'icui18n',
671          'type': 'none',
672          'dependencies': ['system_icu'],
673          'export_dependent_settings': ['system_icu'],
674          'variables': {
675            'headers_root_path': 'source/i18n',
676            'header_filenames': [
677              # This list can easily be updated using the command below:
678              # find third_party/icu/source/i18n/unicode -iname '*.h' \
679              # -printf "'%p',\n" | \
680              # sed -e 's|third_party/icu/source/i18n/||' | sort -u
681              'unicode/basictz.h',
682              'unicode/bmsearch.h',
683              'unicode/bms.h',
684              'unicode/calendar.h',
685              'unicode/choicfmt.h',
686              'unicode/coleitr.h',
687              'unicode/colldata.h',
688              'unicode/coll.h',
689              'unicode/curramt.h',
690              'unicode/currpinf.h',
691              'unicode/currunit.h',
692              'unicode/datefmt.h',
693              'unicode/dcfmtsym.h',
694              'unicode/decimfmt.h',
695              'unicode/dtfmtsym.h',
696              'unicode/dtitvfmt.h',
697              'unicode/dtitvinf.h',
698              'unicode/dtptngen.h',
699              'unicode/dtrule.h',
700              'unicode/fieldpos.h',
701              'unicode/fmtable.h',
702              'unicode/format.h',
703              'unicode/fpositer.h',
704              'unicode/gregocal.h',
705              'unicode/locdspnm.h',
706              'unicode/measfmt.h',
707              'unicode/measunit.h',
708              'unicode/measure.h',
709              'unicode/msgfmt.h',
710              'unicode/numfmt.h',
711              'unicode/numsys.h',
712              'unicode/plurfmt.h',
713              'unicode/plurrule.h',
714              'unicode/rbnf.h',
715              'unicode/rbtz.h',
716              'unicode/regex.h',
717              'unicode/search.h',
718              'unicode/selfmt.h',
719              'unicode/simpletz.h',
720              'unicode/smpdtfmt.h',
721              'unicode/sortkey.h',
722              'unicode/stsearch.h',
723              'unicode/tblcoll.h',
724              'unicode/timezone.h',
725              'unicode/tmunit.h',
726              'unicode/tmutamt.h',
727              'unicode/tmutfmt.h',
728              'unicode/translit.h',
729              'unicode/tzrule.h',
730              'unicode/tztrans.h',
731              'unicode/ucal.h',
732              'unicode/ucoleitr.h',
733              'unicode/ucol.h',
734              'unicode/ucsdet.h',
735              'unicode/ucurr.h',
736              'unicode/udat.h',
737              'unicode/udatpg.h',
738              'unicode/uldnames.h',
739              'unicode/ulocdata.h',
740              'unicode/umsg.h',
741              'unicode/unirepl.h',
742              'unicode/unum.h',
743              'unicode/uregex.h',
744              'unicode/usearch.h',
745              'unicode/uspoof.h',
746              'unicode/utmscale.h',
747              'unicode/utrans.h',
748              'unicode/vtzone.h',
749            ],
750          },
751          'includes': [
752            '../../build/shim_headers.gypi',
753          ],
754          'conditions': [
755            ['want_separate_host_toolset==1', {
756              'toolsets': ['target'],
757            }, {
758              'toolsets': ['host', 'target'],
759            }],
760          ],
761        },
762        {
763          'target_name': 'icuuc',
764          'type': 'none',
765          'dependencies': ['system_icu'],
766          'export_dependent_settings': ['system_icu'],
767          'variables': {
768            'headers_root_path': 'source/common',
769            'header_filenames': [
770              # This list can easily be updated using the command below:
771              # find third_party/icu/source/common/unicode -iname '*.h' \
772              # -printf "'%p',\n" | \
773              # sed -e 's|third_party/icu/source/common/||' | sort -u
774              'unicode/brkiter.h',
775              'unicode/bytestream.h',
776              'unicode/caniter.h',
777              'unicode/chariter.h',
778              'unicode/dbbi.h',
779              'unicode/docmain.h',
780              'unicode/dtintrv.h',
781              'unicode/errorcode.h',
782              'unicode/icudataver.h',
783              'unicode/icuplug.h',
784              'unicode/idna.h',
785              'unicode/localpointer.h',
786              'unicode/locid.h',
787              'unicode/normalizer2.h',
788              'unicode/normlzr.h',
789              'unicode/pandroid.h',
790              'unicode/parseerr.h',
791              'unicode/parsepos.h',
792              'unicode/pfreebsd.h',
793              'unicode/plinux.h',
794              'unicode/pmac.h',
795              'unicode/popenbsd.h',
796              'unicode/ppalmos.h',
797              'unicode/ptypes.h',
798              'unicode/putil.h',
799              'unicode/pwin32.h',
800              'unicode/rbbi.h',
801              'unicode/rep.h',
802              'unicode/resbund.h',
803              'unicode/schriter.h',
804              'unicode/std_string.h',
805              'unicode/strenum.h',
806              'unicode/stringpiece.h',
807              'unicode/symtable.h',
808              'unicode/ubidi.h',
809              'unicode/ubrk.h',
810              'unicode/ucasemap.h',
811              'unicode/ucat.h',
812              'unicode/uchar.h',
813              'unicode/uchriter.h',
814              'unicode/uclean.h',
815              'unicode/ucnv_cb.h',
816              'unicode/ucnv_err.h',
817              'unicode/ucnv.h',
818              'unicode/ucnvsel.h',
819              'unicode/uconfig.h',
820              'unicode/udata.h',
821              'unicode/udeprctd.h',
822              'unicode/udraft.h',
823              'unicode/uenum.h',
824              'unicode/uidna.h',
825              'unicode/uintrnal.h',
826              'unicode/uiter.h',
827              'unicode/uloc.h',
828              'unicode/umachine.h',
829              'unicode/umisc.h',
830              'unicode/unifilt.h',
831              'unicode/unifunct.h',
832              'unicode/unimatch.h',
833              'unicode/uniset.h',
834              'unicode/unistr.h',
835              'unicode/unorm2.h',
836              'unicode/unorm.h',
837              'unicode/uobject.h',
838              'unicode/uobslete.h',
839              'unicode/urename.h',
840              'unicode/urep.h',
841              'unicode/ures.h',
842              'unicode/uscript.h',
843              'unicode/uset.h',
844              'unicode/usetiter.h',
845              'unicode/ushape.h',
846              'unicode/usprep.h',
847              'unicode/ustring.h',
848              'unicode/usystem.h',
849              'unicode/utext.h',
850              'unicode/utf16.h',
851              'unicode/utf32.h',
852              'unicode/utf8.h',
853              'unicode/utf.h',
854              'unicode/utf_old.h',
855              'unicode/utrace.h',
856              'unicode/utypeinfo.h',
857              'unicode/utypes.h',
858              'unicode/uvernum.h',
859              'unicode/uversion.h',
860            ],
861          },
862          'includes': [
863            '../../build/shim_headers.gypi',
864          ],
865          'conditions': [
866            ['want_separate_host_toolset==1', {
867              'toolsets': ['target'],
868            }, {
869              'toolsets': ['host', 'target'],
870            }],
871          ],
872        },
873      ],
874    }],
875  ],
876}
877