Rename isSystemLocationEnabled to isLocationEnabled, as per internal review (185995).
[chromium-blink-merge.git] / build / secondary / third_party / icu / BUILD.gn
blob8b64f706ebbb7fb0dc35acf20435ecfe1faf720f
1 # Copyright 2014 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.
5 import("//third_party/icu/config.gni")
7 # Meta target that includes both icuuc and icui18n. Most targets want both.
8 # You can depend on the individually if you need to.
9 group("icu") {
10   deps = [
11     ":icui18n",
12     ":icuuc",
13   ]
16 # Shared config used by ICU and all dependents.
17 config("icu_config") {
18   defines = [
19     "U_USING_ICU_NAMESPACE=0",
20     "U_ENABLE_DYLOAD=0",
21   ]
23   if (component_mode != "shared_library") {
24     defines += [ "U_STATIC_IMPLEMENTATION" ]
25   }
27   include_dirs = [
28     "source/common",
29     "source/i18n",
30   ]
33 # Config used only by ICU code.
34 config("icu_code") {
35   cflags = []
36   if (is_win) {
37     # Disable some compiler warnings.
38     cflags += [
39       "/wd4005",  # Macro redefinition.
40       "/wd4068",  # Unknown pragmas.
41       "/wd4267",  # Conversion from size_t on 64-bits.
42       "/wd4996",  # Deprecated functions.
43     ]
44   } else if (is_linux) {
45     cflags += [
46       # Since ICU wants to internally use its own deprecated APIs, don't
47       # complain about it.
48       "-Wno-deprecated-declarations",
49       "-Wno-unused-function",
50     ]
51   }
52   if (is_clang) {
53     cflags += [
54       "-Wno-deprecated-declarations",
55       "-Wno-logical-op-parentheses",
56       "-Wno-tautological-compare",
57       "-Wno-switch",
58     ]
59   }
62 component("icui18n") {
63   sources = [
64     "source/i18n/alphaindex.cpp",
65     "source/i18n/anytrans.cpp",
66     "source/i18n/astro.cpp",
67     "source/i18n/basictz.cpp",
68     "source/i18n/bocsu.cpp",
69     "source/i18n/brktrans.cpp",
70     "source/i18n/buddhcal.cpp",
71     "source/i18n/calendar.cpp",
72     "source/i18n/casetrn.cpp",
73     "source/i18n/cecal.cpp",
74     "source/i18n/chnsecal.cpp",
75     "source/i18n/choicfmt.cpp",
76     "source/i18n/coleitr.cpp",
77     "source/i18n/coll.cpp",
78     "source/i18n/compactdecimalformat.cpp",
79     "source/i18n/coptccal.cpp",
80     "source/i18n/cpdtrans.cpp",
81     "source/i18n/csdetect.cpp",
82     "source/i18n/csmatch.cpp",
83     "source/i18n/csr2022.cpp",
84     "source/i18n/csrecog.cpp",
85     "source/i18n/csrmbcs.cpp",
86     "source/i18n/csrsbcs.cpp",
87     "source/i18n/csrucode.cpp",
88     "source/i18n/csrutf8.cpp",
89     "source/i18n/curramt.cpp",
90     "source/i18n/currfmt.cpp",
91     "source/i18n/currpinf.cpp",
92     "source/i18n/currunit.cpp",
93     "source/i18n/dangical.cpp",
94     "source/i18n/datefmt.cpp",
95     "source/i18n/dcfmtsym.cpp",
96     "source/i18n/decContext.c",
97     "source/i18n/decfmtst.cpp",
98     "source/i18n/decimfmt.cpp",
99     "source/i18n/decNumber.c",
100     "source/i18n/digitlst.cpp",
101     "source/i18n/dtfmtsym.cpp",
102     "source/i18n/dtitvfmt.cpp",
103     "source/i18n/dtitvinf.cpp",
104     "source/i18n/dtptngen.cpp",
105     "source/i18n/dtrule.cpp",
106     "source/i18n/esctrn.cpp",
107     "source/i18n/ethpccal.cpp",
108     "source/i18n/fmtable_cnv.cpp",
109     "source/i18n/fmtable.cpp",
110     "source/i18n/format.cpp",
111     "source/i18n/fphdlimp.cpp",
112     "source/i18n/fpositer.cpp",
113     "source/i18n/funcrepl.cpp",
114     "source/i18n/gender.cpp",
115     "source/i18n/gregocal.cpp",
116     "source/i18n/gregoimp.cpp",
117     "source/i18n/hebrwcal.cpp",
118     "source/i18n/identifier_info.cpp",
119     "source/i18n/indiancal.cpp",
120     "source/i18n/inputext.cpp",
121     "source/i18n/islamcal.cpp",
122     "source/i18n/japancal.cpp",
123     "source/i18n/locdspnm.cpp",
124     "source/i18n/measfmt.cpp",
125     "source/i18n/measure.cpp",
126     "source/i18n/msgfmt.cpp",
127     "source/i18n/name2uni.cpp",
128     "source/i18n/nfrs.cpp",
129     "source/i18n/nfrule.cpp",
130     "source/i18n/nfsubs.cpp",
131     "source/i18n/nortrans.cpp",
132     "source/i18n/nultrans.cpp",
133     "source/i18n/numfmt.cpp",
134     "source/i18n/numsys.cpp",
135     "source/i18n/olsontz.cpp",
136     "source/i18n/persncal.cpp",
137     "source/i18n/plurfmt.cpp",
138     "source/i18n/plurrule.cpp",
139     "source/i18n/quant.cpp",
140     "source/i18n/rbnf.cpp",
141     "source/i18n/rbt.cpp",
142     "source/i18n/rbt_data.cpp",
143     "source/i18n/rbt_pars.cpp",
144     "source/i18n/rbt_rule.cpp",
145     "source/i18n/rbt_set.cpp",
146     "source/i18n/rbtz.cpp",
147     "source/i18n/regexcmp.cpp",
148     "source/i18n/regeximp.cpp",
149     "source/i18n/regexst.cpp",
150     "source/i18n/regextxt.cpp",
151     "source/i18n/region.cpp",
152     "source/i18n/reldtfmt.cpp",
153     "source/i18n/rematch.cpp",
154     "source/i18n/remtrans.cpp",
155     "source/i18n/repattrn.cpp",
156     "source/i18n/scriptset.cpp",
157     "source/i18n/search.cpp",
158     "source/i18n/selfmt.cpp",
159     "source/i18n/simpletz.cpp",
160     "source/i18n/smpdtfmt.cpp",
161     "source/i18n/smpdtfst.cpp",
162     "source/i18n/sortkey.cpp",
163     "source/i18n/strmatch.cpp",
164     "source/i18n/strrepl.cpp",
165     "source/i18n/stsearch.cpp",
166     "source/i18n/taiwncal.cpp",
167     "source/i18n/tblcoll.cpp",
168     "source/i18n/timezone.cpp",
169     "source/i18n/titletrn.cpp",
170     "source/i18n/tmunit.cpp",
171     "source/i18n/tmutamt.cpp",
172     "source/i18n/tmutfmt.cpp",
173     "source/i18n/tolowtrn.cpp",
174     "source/i18n/toupptrn.cpp",
175     "source/i18n/translit.cpp",
176     "source/i18n/transreg.cpp",
177     "source/i18n/tridpars.cpp",
178     "source/i18n/tzfmt.cpp",
179     "source/i18n/tzgnames.cpp",
180     "source/i18n/tznames.cpp",
181     "source/i18n/tznames_impl.cpp",
182     "source/i18n/tzrule.cpp",
183     "source/i18n/tztrans.cpp",
184     "source/i18n/ucal.cpp",
185     "source/i18n/ucln_in.c",
186     "source/i18n/ucol_bld.cpp",
187     "source/i18n/ucol_cnt.cpp",
188     "source/i18n/ucol.cpp",
189     "source/i18n/ucoleitr.cpp",
190     "source/i18n/ucol_elm.cpp",
191     "source/i18n/ucol_res.cpp",
192     "source/i18n/ucol_sit.cpp",
193     "source/i18n/ucol_tok.cpp",
194     "source/i18n/ucol_wgt.cpp",
195     "source/i18n/ucsdet.cpp",
196     "source/i18n/ucurr.cpp",
197     "source/i18n/udat.cpp",
198     "source/i18n/udateintervalformat.cpp",
199     "source/i18n/udatpg.cpp",
200     "source/i18n/ulocdata.c",
201     "source/i18n/umsg.cpp",
202     "source/i18n/unesctrn.cpp",
203     "source/i18n/uni2name.cpp",
204     "source/i18n/unum.cpp",
205     "source/i18n/unumsys.cpp",
206     "source/i18n/upluralrules.cpp",
207     "source/i18n/uregexc.cpp",
208     "source/i18n/uregex.cpp",
209     "source/i18n/uregion.cpp",
210     "source/i18n/usearch.cpp",
211     "source/i18n/uspoof_build.cpp",
212     "source/i18n/uspoof_conf.cpp",
213     "source/i18n/uspoof.cpp",
214     "source/i18n/uspoof_impl.cpp",
215     "source/i18n/uspoof_wsconf.cpp",
216     "source/i18n/utmscale.c",
217     "source/i18n/utrans.cpp",
218     "source/i18n/vtzone.cpp",
219     "source/i18n/vzone.cpp",
220     "source/i18n/windtfmt.cpp",
221     "source/i18n/winnmfmt.cpp",
222     "source/i18n/wintzimpl.cpp",
223     "source/i18n/zonemeta.cpp",
224     "source/i18n/zrule.cpp",
225     "source/i18n/ztrans.cpp",
226   ]
227   defines = [ "U_I18N_IMPLEMENTATION" ]
228   deps = [
229     ":icuuc",
230   ]
232   # ICU uses RTTI, replace the default "no rtti" config.
233   configs -= [
234     "//build/config/compiler:no_rtti",  # ICU uses RTTI.
235     "//build/config/compiler:chromium_code",
236   ]
237   configs += [
238     "//build/config/compiler:rtti",
239     "//build/config/compiler:no_chromium_code",
240   ]
242   configs += [ ":icu_code" ]
243   public_configs = [ ":icu_config" ]
245   cflags = []
246   if (is_android || is_linux) {
247     cflags += [
248       # ICU uses its own deprecated functions.
249       "-Wno-deprecated-declarations",
250     ]
251   }
252   if (is_clang) {
253     # uspoof.h has a U_NAMESPACE_USE macro. That's a bug,
254     # the header should use U_NAMESPACE_BEGIN instead.
255     # http://bugs.icu-project.org/trac/ticket/9054
256     configs -= [ "//build/config/clang:extra_warnings" ]
258     cflags += [
259       "-Wno-header-hygiene",
261       # Looks like a real issue, see http://crbug.com/114660
262       "-Wno-return-type-c-linkage",
263     ]
264   }
267 component("icuuc") {
268   sources = [
269     "source/common/appendable.cpp",
270     "source/common/bmpset.cpp",
271     "source/common/brkeng.cpp",
272     "source/common/brkiter.cpp",
273     "source/common/bytestream.cpp",
274     "source/common/bytestriebuilder.cpp",
275     "source/common/bytestrie.cpp",
276     "source/common/bytestrieiterator.cpp",
277     "source/common/caniter.cpp",
278     "source/common/chariter.cpp",
279     "source/common/charstr.cpp",
280     "source/common/cmemory.c",
281     "source/common/cstring.c",
282     "source/common/cwchar.c",
283     "source/common/dictbe.cpp",
284     "source/common/dictionarydata.cpp",
285     "source/common/dtintrv.cpp",
286     "source/common/errorcode.cpp",
287     "source/common/filterednormalizer2.cpp",
288     "source/common/icudataver.c",
289     "source/common/icuplug.c",
290     "source/common/listformatter.cpp",
291     "source/common/locavailable.cpp",
292     "source/common/locbased.cpp",
293     "source/common/locdispnames.cpp",
294     "source/common/locid.cpp",
295     "source/common/loclikely.cpp",
296     "source/common/locmap.c",
297     "source/common/locresdata.cpp",
298     "source/common/locutil.cpp",
299     "source/common/messagepattern.cpp",
300     "source/common/normalizer2.cpp",
301     "source/common/normalizer2impl.cpp",
302     "source/common/normlzr.cpp",
303     "source/common/parsepos.cpp",
304     "source/common/patternprops.cpp",
305     "source/common/propname.cpp",
306     "source/common/propsvec.c",
307     "source/common/punycode.cpp",
308     "source/common/putil.cpp",
309     "source/common/rbbi.cpp",
310     "source/common/rbbidata.cpp",
311     "source/common/rbbinode.cpp",
312     "source/common/rbbirb.cpp",
313     "source/common/rbbiscan.cpp",
314     "source/common/rbbisetb.cpp",
315     "source/common/rbbistbl.cpp",
316     "source/common/rbbitblb.cpp",
317     "source/common/resbund_cnv.cpp",
318     "source/common/resbund.cpp",
319     "source/common/ruleiter.cpp",
320     "source/common/schriter.cpp",
321     "source/common/serv.cpp",
322     "source/common/servlk.cpp",
323     "source/common/servlkf.cpp",
324     "source/common/servls.cpp",
325     "source/common/servnotf.cpp",
326     "source/common/servrbf.cpp",
327     "source/common/servslkf.cpp",
328     "source/common/stringpiece.cpp",
329     "source/common/stringtriebuilder.cpp",
330     "source/common/uarrsort.c",
331     "source/common/ubidi.c",
332     "source/common/ubidiln.c",
333     "source/common/ubidi_props.c",
334     "source/common/ubidiwrt.c",
335     "source/common/ubrk.cpp",
336     "source/common/ucase.cpp",
337     "source/common/ucasemap.cpp",
338     "source/common/ucasemap_titlecase_brkiter.cpp",
339     "source/common/ucat.c",
340     "source/common/uchar.c",
341     "source/common/ucharstriebuilder.cpp",
342     "source/common/ucharstrie.cpp",
343     "source/common/ucharstrieiterator.cpp",
344     "source/common/uchriter.cpp",
345     "source/common/ucln_cmn.c",
346     "source/common/ucmndata.c",
347     "source/common/ucnv2022.cpp",
348     "source/common/ucnv_bld.cpp",
349     "source/common/ucnvbocu.cpp",
350     "source/common/ucnv.c",
351     "source/common/ucnv_cb.c",
352     "source/common/ucnv_cnv.c",
353     "source/common/ucnv_ct.c",
354     "source/common/ucnvdisp.c",
355     "source/common/ucnv_err.c",
356     "source/common/ucnv_ext.cpp",
357     "source/common/ucnvhz.c",
358     "source/common/ucnv_io.cpp",
359     "source/common/ucnvisci.c",
360     "source/common/ucnvlat1.c",
361     "source/common/ucnv_lmb.c",
362     "source/common/ucnvmbcs.c",
363     "source/common/ucnvscsu.c",
364     "source/common/ucnvsel.cpp",
365     "source/common/ucnv_set.c",
366     "source/common/ucnv_u16.c",
367     "source/common/ucnv_u32.c",
368     "source/common/ucnv_u7.c",
369     "source/common/ucnv_u8.c",
370     "source/common/ucol_swp.cpp",
371     "source/common/udata.cpp",
372     "source/common/udatamem.c",
373     "source/common/udataswp.c",
374     "source/common/uenum.c",
375     "source/common/uhash.c",
376     "source/common/uhash_us.cpp",
377     "source/common/uidna.cpp",
378     "source/common/uinit.cpp",
379     "source/common/uinvchar.c",
380     "source/common/uiter.cpp",
381     "source/common/ulist.c",
382     "source/common/uloc.cpp",
383     "source/common/uloc_tag.c",
384     "source/common/umapfile.c",
385     "source/common/umath.c",
386     "source/common/umutex.cpp",
387     "source/common/unames.cpp",
388     "source/common/unifilt.cpp",
389     "source/common/unifunct.cpp",
390     "source/common/uniset_closure.cpp",
391     "source/common/uniset.cpp",
392     "source/common/uniset_props.cpp",
393     "source/common/unisetspan.cpp",
394     "source/common/unistr_case.cpp",
395     "source/common/unistr_case_locale.cpp",
396     "source/common/unistr_cnv.cpp",
397     "source/common/unistr.cpp",
398     "source/common/unistr_props.cpp",
399     "source/common/unistr_titlecase_brkiter.cpp",
400     "source/common/unormcmp.cpp",
401     "source/common/unorm.cpp",
402     "source/common/unorm_it.c",
403     "source/common/uobject.cpp",
404     "source/common/uprops.cpp",
405     "source/common/uresbund.cpp",
406     "source/common/ures_cnv.c",
407     "source/common/uresdata.c",
408     "source/common/usc_impl.c",
409     "source/common/uscript.c",
410     "source/common/uscript_props.cpp",
411     "source/common/uset.cpp",
412     "source/common/usetiter.cpp",
413     "source/common/uset_props.cpp",
414     "source/common/ushape.cpp",
415     "source/common/usprep.cpp",
416     "source/common/ustack.cpp",
417     "source/common/ustrcase.cpp",
418     "source/common/ustrcase_locale.cpp",
419     "source/common/ustr_cnv.c",
420     "source/common/ustrenum.cpp",
421     "source/common/ustrfmt.c",
422     "source/common/ustring.cpp",
423     "source/common/ustr_titlecase_brkiter.cpp",
424     "source/common/ustrtrns.cpp",
425     "source/common/ustr_wcs.cpp",
426     "source/common/utext.cpp",
427     "source/common/utf_impl.c",
428     "source/common/util.cpp",
429     "source/common/util_props.cpp",
430     "source/common/utrace.c",
431     "source/common/utrie2_builder.cpp",
432     "source/common/utrie2.cpp",
433     "source/common/utrie.cpp",
434     "source/common/uts46.cpp",
435     "source/common/utypes.c",
436     "source/common/uvector.cpp",
437     "source/common/uvectr32.cpp",
438     "source/common/uvectr64.cpp",
439     "source/common/wintz.c",
440   ]
441   defines = [ "U_COMMON_IMPLEMENTATION" ]
442   deps = [
443     ":icudata",
444   ]
445   configs += [ ":icu_code" ]
447   configs -= [
448     "//build/config/compiler:no_rtti",  # ICU uses RTTI.
449     "//build/config/compiler:chromium_code",
450   ]
451   configs += [
452     "//build/config/compiler:rtti",
453     "//build/config/compiler:no_chromium_code",
454   ]
456   public_configs = [ ":icu_config" ]
458   if (is_win || icu_use_data_file) {
459     sources += [ "source/stubdata/stubdata.c" ]
460   }
463 # TODO(GYP) support use_system_icu.
464 if (icu_use_data_file) {
465   if (is_ios) {
466     # TODO(GYP): Support mac resource bundle shown below.
467     # 'link_settings': {
468     #   'mac_bundle_resources': [
469     #     'source/data/in/icudtl.dat',
470     #   ],
471     # }
472   } else {
473     copy("icudata") {
474       if (is_android) {
475         sources = [
476           "android/icudtl.dat",
477         ]
478       } else {
479         sources = [
480           "source/data/in/icudtl.dat",
481         ]
482       }
484       outputs = [
485         "$root_out_dir/icudtl.dat",
486       ]
487     }
488   }
489 } else {
490   if (is_win) {
491     # On Windows the target DLL is pre-built so just use a copy rule.
492     copy("icudata") {
493       sources = [
494         "windows/icudt.dll",
495       ]
496       outputs = [
497         "$root_out_dir/icudt.dll",
498       ]
499     }
500   } else {
501     source_set("icudata") {
502       # These are hand-generated, but will do for now.
503       #
504       # TODO(GYP): Gyp has considerations here for QNX and for the host toolchain
505       #  that have not been ported over.
506       if (is_linux) {
507         sources = [
508           "linux/icudtl_dat.S",
509         ]
510       } else if (is_mac) {
511         sources = [
512           "mac/icudtl_dat.S",
513         ]
514       } else if (is_android) {
515         sources = [
516           "android/icudtl_dat.S",
517         ]
518       } else {
519         assert(false, "No icu data for this platform")
520       }
521       defines = [ "U_HIDE_DATA_SYMBOL" ]
522     }
523   }