OLD | NEW |
| (Empty) |
1 # Copyright (c) 2006-2008 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 # Variables to control what does or doesn't get built here: | |
6 # | |
7 # CombinedLib | |
8 # When True, builds a combined libicu.a (or icu.lib) containing | |
9 # the common, i18n, stubdata and toolutil parts of ICU. When | |
10 # False, builds those as separate libraries. | |
11 # | |
12 # GeneratedDataLib | |
13 # When True, specifies that we want to build a libicudata.a | |
14 # (or icudata.lib) library containing the data. When False, | |
15 # we copy out the icudt38l.dat file or the Chromium icudt38.dll | |
16 # file. | |
17 # | |
18 # Note that we've only verified the behavior that each platform | |
19 # needs to build the way it currently wants, so don't expect that | |
20 # you can just change the way a given platform builds without maybe | |
21 # having to fix things. For example, attempts to set GenerateDataLib | |
22 # on Windows will need to fix problems executing the utilities that | |
23 # handle the generation. | |
24 | |
25 CombinedLib = True | |
26 GenerateDataLib = False | |
27 | |
28 Import('env') | |
29 | |
30 env = env.Clone( | |
31 GENERATED_DIR = env.Dir('$ICU38_DIR/generated'), | |
32 GENCCODE = env.File('$ICU38_DIR/generated/genccode$PROGSUFFIX'), | |
33 ICUPKG = env.File('$ICU38_DIR/generated/icupkg$PROGSUFFIX'), | |
34 ) | |
35 | |
36 env.Prepend( | |
37 CPPPATH = [ | |
38 'source/common', | |
39 'public/common', | |
40 'source/i18n', | |
41 'public/i18n', | |
42 'source/tools/toolutil', | |
43 '#/..', | |
44 ], | |
45 CPPDEFINES = [ | |
46 'U_STATIC_IMPLEMENTATION', | |
47 ], | |
48 ) | |
49 | |
50 if env['PLATFORM'] == 'darwin': | |
51 CombinedLib = False | |
52 GenerateDataLib = True | |
53 | |
54 env['CCFLAGS'].remove('-Werror') | |
55 env['CPPDEFINES'].remove('DEBUG') | |
56 env['GENCCODE_NAME'] = 'icudt38l' | |
57 env['GENCCODE_FLAGS'] = '-a gcc-darwin -n $GENCCODE_NAME -e icudt38' | |
58 env['GENCCODE_SUFFIX'] = '.s' | |
59 | |
60 if env['PLATFORM'] =='posix': | |
61 env['GENCCODE_NAME'] = 'icudt38l' | |
62 env['GENCCODE_FLAGS'] = '-a gcc -n $GENCCODE_NAME -e icudt38' | |
63 env['GENCCODE_SUFFIX'] = '.s' | |
64 | |
65 if env['PLATFORM'] == 'win32': | |
66 env['GENCCODE_NAME'] = 'icudt38' | |
67 env['GENCCODE_FLAGS'] = '-e icudt38' | |
68 env['GENCCODE_SUFFIX'] = '.c' | |
69 | |
70 if env['PLATFORM'] == 'win32': | |
71 env.Append(CCFLAGS = ['/WX']) | |
72 else: | |
73 env.Append( | |
74 CCFLAGS = [ | |
75 '-Wno-parentheses', | |
76 | |
77 # See uprv_UnicodeStringDummy at end of source/common/unistr.cpp. | |
78 '-Wno-unused-function' | |
79 ] | |
80 ) | |
81 | |
82 if 'WIN32_LEAN_AND_MEAN' in env['CPPDEFINES']: | |
83 env['CPPDEFINES'].remove('WIN32_LEAN_AND_MEAN') | |
84 | |
85 # | |
86 | |
87 common_input_files = [ | |
88 'source/common/bmpset.cpp', | |
89 'source/common/brkeng.cpp', | |
90 'source/common/brkiter.cpp', | |
91 'source/common/caniter.cpp', | |
92 'source/common/chariter.cpp', | |
93 'source/common/cmemory.c', | |
94 'source/common/cstring.c', | |
95 'source/common/cwchar.c', | |
96 'source/common/dictbe.cpp', | |
97 'source/common/locbased.cpp', | |
98 'source/common/locid.cpp', | |
99 'source/common/locmap.c', | |
100 'source/common/locutil.cpp', | |
101 'source/common/normlzr.cpp', | |
102 'source/common/parsepos.cpp', | |
103 'source/common/propname.cpp', | |
104 'source/common/punycode.c', | |
105 'source/common/putil.c', | |
106 'source/common/rbbi.cpp', | |
107 'source/common/rbbidata.cpp', | |
108 'source/common/rbbinode.cpp', | |
109 'source/common/rbbirb.cpp', | |
110 'source/common/rbbiscan.cpp', | |
111 'source/common/rbbisetb.cpp', | |
112 'source/common/rbbistbl.cpp', | |
113 'source/common/rbbitblb.cpp', | |
114 'source/common/resbund.cpp', | |
115 'source/common/resbund_cnv.cpp', | |
116 'source/common/ruleiter.cpp', | |
117 'source/common/schriter.cpp', | |
118 'source/common/serv.cpp', | |
119 'source/common/servlk.cpp', | |
120 'source/common/servlkf.cpp', | |
121 'source/common/servls.cpp', | |
122 'source/common/servnotf.cpp', | |
123 'source/common/servrbf.cpp', | |
124 'source/common/servslkf.cpp', | |
125 'source/common/triedict.cpp', | |
126 'source/common/uarrsort.c', | |
127 'source/common/ubidi.c', | |
128 'source/common/ubidi_props.c', | |
129 'source/common/ubidiln.c', | |
130 'source/common/ubidiwrt.c', | |
131 'source/common/ubrk.cpp', | |
132 'source/common/ucase.c', | |
133 'source/common/ucasemap.c', | |
134 'source/common/ucat.c', | |
135 'source/common/uchar.c', | |
136 'source/common/uchriter.cpp', | |
137 'source/common/ucln_cmn.c', | |
138 'source/common/ucmndata.c', | |
139 'source/common/ucnv.c', | |
140 'source/common/ucnv_bld.c', | |
141 'source/common/ucnv_cb.c', | |
142 'source/common/ucnv_cnv.c', | |
143 'source/common/ucnv_err.c', | |
144 'source/common/ucnv_ext.c', | |
145 'source/common/ucnv_io.c', | |
146 'source/common/ucnv_lmb.c', | |
147 'source/common/ucnv_set.c', | |
148 'source/common/ucnv_u16.c', | |
149 'source/common/ucnv_u32.c', | |
150 'source/common/ucnv_u7.c', | |
151 'source/common/ucnv_u8.c', | |
152 'source/common/ucnv2022.c', | |
153 'source/common/ucnvbocu.c', | |
154 'source/common/ucnvdisp.c', | |
155 'source/common/ucnvhz.c', | |
156 'source/common/ucnvisci.c', | |
157 'source/common/ucnvlat1.c', | |
158 'source/common/ucnvmbcs.c', | |
159 'source/common/ucnvscsu.c', | |
160 'source/common/ucol_swp.c', | |
161 'source/common/udata.c', | |
162 'source/common/udatamem.c', | |
163 'source/common/udataswp.c', | |
164 'source/common/uenum.c', | |
165 'source/common/uhash.c', | |
166 'source/common/uhash_us.cpp', | |
167 'source/common/uidna.cpp', | |
168 'source/common/uinit.c', | |
169 'source/common/uinvchar.c', | |
170 'source/common/uiter.cpp', | |
171 'source/common/uloc.c', | |
172 'source/common/umapfile.c', | |
173 'source/common/umath.c', | |
174 'source/common/umutex.c', | |
175 'source/common/unames.c', | |
176 'source/common/unifilt.cpp', | |
177 'source/common/unifunct.cpp', | |
178 'source/common/uniset.cpp', | |
179 'source/common/uniset_props.cpp', | |
180 'source/common/unisetspan.cpp', | |
181 'source/common/unistr.cpp', | |
182 'source/common/unistr_case.cpp', | |
183 'source/common/unistr_cnv.cpp', | |
184 'source/common/unistr_props.cpp', | |
185 'source/common/unorm.cpp', | |
186 'source/common/unorm_it.c', | |
187 'source/common/unormcmp.cpp', | |
188 'source/common/uobject.cpp', | |
189 'source/common/uprops.c', | |
190 'source/common/ures_cnv.c', | |
191 'source/common/uresbund.c', | |
192 'source/common/uresdata.c', | |
193 'source/common/usc_impl.c', | |
194 'source/common/uscript.c', | |
195 'source/common/uset.cpp', | |
196 'source/common/uset_props.cpp', | |
197 'source/common/usetiter.cpp', | |
198 'source/common/ushape.c', | |
199 'source/common/usprep.cpp', | |
200 'source/common/ustack.cpp', | |
201 'source/common/ustr_cnv.c', | |
202 'source/common/ustr_wcs.c', | |
203 'source/common/ustrcase.c', | |
204 'source/common/ustrenum.cpp', | |
205 'source/common/ustrfmt.c', | |
206 'source/common/ustring.c', | |
207 'source/common/ustrtrns.c', | |
208 'source/common/utext.cpp', | |
209 'source/common/utf_impl.c', | |
210 'source/common/util.cpp', | |
211 'source/common/util_props.cpp', | |
212 'source/common/utrace.c', | |
213 'source/common/utrie.c', | |
214 'source/common/utypes.c', | |
215 'source/common/uvector.cpp', | |
216 'source/common/uvectr32.cpp', | |
217 'source/common/wintz.c', | |
218 ] | |
219 | |
220 # | |
221 | |
222 i18n_input_files = [ | |
223 'source/i18n/anytrans.cpp', | |
224 'source/i18n/astro.cpp', | |
225 'source/i18n/basictz.cpp', | |
226 'source/i18n/bocsu.c', | |
227 'source/i18n/buddhcal.cpp', | |
228 'source/i18n/calendar.cpp', | |
229 'source/i18n/casetrn.cpp', | |
230 'source/i18n/choicfmt.cpp', | |
231 'source/i18n/coleitr.cpp', | |
232 'source/i18n/coll.cpp', | |
233 'source/i18n/cpdtrans.cpp', | |
234 'source/i18n/csdetect.cpp', | |
235 'source/i18n/csmatch.cpp', | |
236 'source/i18n/csr2022.cpp', | |
237 'source/i18n/csrecog.cpp', | |
238 'source/i18n/csrmbcs.cpp', | |
239 'source/i18n/csrsbcs.cpp', | |
240 'source/i18n/csrucode.cpp', | |
241 'source/i18n/csrutf8.cpp', | |
242 'source/i18n/curramt.cpp', | |
243 'source/i18n/currfmt.cpp', | |
244 'source/i18n/currunit.cpp', | |
245 'source/i18n/datefmt.cpp', | |
246 'source/i18n/dcfmtsym.cpp', | |
247 'source/i18n/decimfmt.cpp', | |
248 'source/i18n/digitlst.cpp', | |
249 'source/i18n/dtfmtsym.cpp', | |
250 'source/i18n/dtrule.cpp', | |
251 'source/i18n/esctrn.cpp', | |
252 'source/i18n/fmtable.cpp', | |
253 'source/i18n/fmtable_cnv.cpp', | |
254 'source/i18n/format.cpp', | |
255 'source/i18n/funcrepl.cpp', | |
256 'source/i18n/gregocal.cpp', | |
257 'source/i18n/gregoimp.cpp', | |
258 'source/i18n/hebrwcal.cpp', | |
259 'source/i18n/indiancal.cpp', | |
260 'source/i18n/inputext.cpp', | |
261 'source/i18n/islamcal.cpp', | |
262 'source/i18n/japancal.cpp', | |
263 'source/i18n/measfmt.cpp', | |
264 'source/i18n/measure.cpp', | |
265 'source/i18n/msgfmt.cpp', | |
266 'source/i18n/name2uni.cpp', | |
267 'source/i18n/nfrs.cpp', | |
268 'source/i18n/nfrule.cpp', | |
269 'source/i18n/nfsubs.cpp', | |
270 'source/i18n/nortrans.cpp', | |
271 'source/i18n/nultrans.cpp', | |
272 'source/i18n/numfmt.cpp', | |
273 'source/i18n/olsontz.cpp', | |
274 'source/i18n/persncal.cpp', | |
275 'source/i18n/plurfmt.cpp', | |
276 'source/i18n/plurrule.cpp', | |
277 'source/i18n/quant.cpp', | |
278 'source/i18n/rbnf.cpp', | |
279 'source/i18n/rbt.cpp', | |
280 'source/i18n/rbt_data.cpp', | |
281 'source/i18n/rbt_pars.cpp', | |
282 'source/i18n/rbt_rule.cpp', | |
283 'source/i18n/rbt_set.cpp', | |
284 'source/i18n/regexcmp.cpp', | |
285 'source/i18n/regexst.cpp', | |
286 'source/i18n/reldtfmt.cpp', | |
287 'source/i18n/rematch.cpp', | |
288 'source/i18n/remtrans.cpp', | |
289 'source/i18n/repattrn.cpp', | |
290 'source/i18n/search.cpp', | |
291 'source/i18n/simpletz.cpp', | |
292 'source/i18n/smpdtfmt.cpp', | |
293 'source/i18n/sortkey.cpp', | |
294 'source/i18n/strmatch.cpp', | |
295 'source/i18n/strrepl.cpp', | |
296 'source/i18n/stsearch.cpp', | |
297 'source/i18n/taiwncal.cpp', | |
298 'source/i18n/tblcoll.cpp', | |
299 'source/i18n/timezone.cpp', | |
300 'source/i18n/titletrn.cpp', | |
301 'source/i18n/tolowtrn.cpp', | |
302 'source/i18n/toupptrn.cpp', | |
303 'source/i18n/translit.cpp', | |
304 'source/i18n/transreg.cpp', | |
305 'source/i18n/tridpars.cpp', | |
306 'source/i18n/tzrule.cpp', | |
307 'source/i18n/tztrans.cpp', | |
308 'source/i18n/ucal.cpp', | |
309 'source/i18n/ucln_in.c', | |
310 'source/i18n/ucol.cpp', | |
311 'source/i18n/ucol_bld.cpp', | |
312 'source/i18n/ucol_cnt.cpp', | |
313 'source/i18n/ucol_elm.cpp', | |
314 'source/i18n/ucol_res.cpp', | |
315 'source/i18n/ucol_sit.cpp', | |
316 'source/i18n/ucol_tok.cpp', | |
317 'source/i18n/ucol_wgt.c', | |
318 'source/i18n/ucoleitr.cpp', | |
319 'source/i18n/ucsdet.cpp', | |
320 'source/i18n/ucurr.cpp', | |
321 'source/i18n/udat.cpp', | |
322 'source/i18n/ulocdata.c', | |
323 'source/i18n/umsg.cpp', | |
324 'source/i18n/unesctrn.cpp', | |
325 'source/i18n/uni2name.cpp', | |
326 'source/i18n/unum.cpp', | |
327 'source/i18n/uregex.cpp', | |
328 'source/i18n/uregexc.cpp', | |
329 'source/i18n/usearch.cpp', | |
330 'source/i18n/utmscale.c', | |
331 'source/i18n/utrans.cpp', | |
332 'source/i18n/vtzone.cpp', | |
333 'source/i18n/windtfmt.cpp', | |
334 'source/i18n/winnmfmt.cpp', | |
335 ] | |
336 | |
337 # | |
338 | |
339 stubdata_input_files = [ | |
340 'source/stubdata/stubdata.c', | |
341 ] | |
342 | |
343 # | |
344 | |
345 toolutil_input_files = [ | |
346 'source/tools/toolutil/filestrm.c', | |
347 'source/tools/toolutil/package.cpp', | |
348 'source/tools/toolutil/pkgitems.cpp', | |
349 'source/tools/toolutil/propsvec.c', | |
350 'source/tools/toolutil/swapimpl.cpp', | |
351 'source/tools/toolutil/toolutil.c', | |
352 'source/tools/toolutil/toolutil.vcproj', | |
353 'source/tools/toolutil/ucbuf.c', | |
354 'source/tools/toolutil/ucm.c', | |
355 'source/tools/toolutil/ucmstate.c', | |
356 'source/tools/toolutil/unewdata.c', | |
357 'source/tools/toolutil/uoptions.c', | |
358 'source/tools/toolutil/uparse.c', | |
359 'source/tools/toolutil/writesrc.c', | |
360 'source/tools/toolutil/xmlparser.cpp', | |
361 ] | |
362 | |
363 # | |
364 | |
365 if CombinedLib: | |
366 | |
367 # These empirically fail to build when U_COMMON_IMPLEMENTATION | |
368 # isn't defined in addition to U_COMBINED_IMPLEMENTATION. Remove | |
369 # them from the source file list and re-append them with Nodes | |
370 # for custom-built object files with both defined. | |
371 | |
372 need_common_implementation = [ | |
373 'source/common/ubidi.c', | |
374 'source/common/ubidiln.c', | |
375 ] | |
376 | |
377 for n in need_common_implementation: | |
378 common_input_files.remove(n) | |
379 o = env.Object(n, CPPDEFINES = env['CPPDEFINES'] + | |
380 ['U_COMMON_IMPLEMENTATION', | |
381 'U_COMBINED_IMPLEMENTATION']) | |
382 common_input_files.append(o) | |
383 | |
384 icu_lib = env.ChromeStaticLibrary('icu', common_input_files + | |
385 i18n_input_files + | |
386 stubdata_input_files, | |
387 CPPDEFINES = env['CPPDEFINES'] + | |
388 ['U_COMBINED_IMPLEMENTATION']) | |
389 | |
390 else: | |
391 | |
392 icu_lib = env.ChromeStaticLibrary('icuuc', common_input_files, | |
393 CPPDEFINES = env['CPPDEFINES'] + | |
394 ['U_COMMON_IMPLEMENTATION']) | |
395 | |
396 env.ChromeStaticLibrary('icui18n', i18n_input_files, | |
397 CPPDEFINES = env['CPPDEFINES'] + | |
398 ['U_I18N_IMPLEMENTATION']) | |
399 | |
400 env.ChromeStaticLibrary('icudata_stub', stubdata_input_files) | |
401 | |
402 env.ChromeStaticLibrary('icutu', toolutil_input_files, | |
403 CPPDEFINES = env['CPPDEFINES'] + | |
404 ['U_TOOLUTIL_IMPLEMENTATION']) | |
405 | |
406 | |
407 # | |
408 | |
409 if GenerateDataLib: | |
410 | |
411 icudata_lst = env.Command(['$GENERATED_DIR/icudata.lst', | |
412 '$GENERATED_DIR/icudt38l/ucadata.icu'], | |
413 ['source/data/in/icudt38l.dat'], | |
414 ('$ICUPKG -d ${TARGETS[1].dir} --list -x "*"' | |
415 ' $SOURCE > $TARGET')) | |
416 env.Depends(icudata_lst, '$ICUPKG') | |
417 | |
418 icudt38_dat = env.Command(['$GENERATED_DIR/${GENCCODE_NAME}.dat'], | |
419 icudata_lst, | |
420 ('$ICUPKG -tl -c -s ${SOURCES[1].dir}' | |
421 ' -a $SOURCE new $TARGET')) | |
422 env.Depends(icudt38_dat, '$ICUPKG') | |
423 | |
424 icudt38_src = env.Command('$GENERATED_DIR/${GENCCODE_NAME}_dat${GENCCODE_SUFFI
X}', | |
425 icudt38_dat, | |
426 '$GENCCODE $GENCCODE_FLAGS -d ${TARGET.dir} $SOURCE'
) | |
427 env.Depends(icudt38_src, '$GENCCODE') | |
428 | |
429 icu_data = env.ChromeStaticLibrary('icudata', icudt38_src) | |
430 | |
431 if CombinedLib: | |
432 lib_list = ['icu'] | |
433 else: | |
434 lib_list = ['icui18n', 'icutu', 'icuuc', 'icudata_stub'] | |
435 | |
436 env_tools = env.Clone(LIBS = lib_list) | |
437 | |
438 env_tools.Program(env['GENCCODE'], 'source/tools/genccode/genccode.c') | |
439 env_tools.Program(env['ICUPKG'], 'source/tools/icupkg/icupkg.cpp') | |
440 | |
441 env.Install('$LIBS_DIR', icu_data) | |
442 | |
443 else: | |
444 | |
445 icu_data = None | |
446 | |
447 # The ICU library isn't useful without the data properly installed. | |
448 if env['PLATFORM'] == 'win32': | |
449 icu_data = env.Install('$OBJ_ROOT', 'icudt38.dll') | |
450 else: | |
451 icu_data = env.Install('$OBJ_ROOT', 'source/data/in/icudt38l.dat') | |
452 | |
453 env.Requires(icu_lib, icu_data) | |
OLD | NEW |