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