1 # Copyright (C) 2016 and later: Unicode, Inc. and others.
2 # License & terms of use: http://www.unicode.org/copyright.html
3 #**********************************************************************
4 #* Copyright (C) 1999-2016, International Business Machines Corporation
5 #* and others. All Rights Reserved.
6 #**********************************************************************
7 # nmake file for creating data files on win32
9 # nmake /f makedata.mak icumake=$(ProjectDir)
11 # 12/10/1999 weiv Created
13 ##############################################################################
14 # Keep the following in sync with the version - see common/unicode/uvernum.h
15 U_ICUDATA_NAME=icudt59
16 ##############################################################################
20 U_ICUDATA_ENDIAN_SUFFIX=l
22 ICU_LIB_TARGET=$(DLL_OUTPUT)\$(U_ICUDATA_NAME).dll
25 # Must be provided by whoever runs this makefile.
26 # Is the directory containing this file (makedata.mak)
27 # Is the directory into which most data is built (prior to packaging)
31 !ERROR Can't find ICUMAKE (ICU Data Make dir, should point to icu\source\data\ )!
33 !MESSAGE ICU data make path is $(ICUMAKE)
35 # Suffixes for data files
36 .SUFFIXES : .nrm .icu .ucm .cnv .dll .dat .res .txt .c
40 # the prefix "icudt21_" for use in filenames
41 ICUPKG=$(U_ICUDATA_NAME)$(U_ICUDATA_ENDIAN_SUFFIX)
43 # need to nuke \\ for .NET...
46 ICUBLD=$(ICUOUT)\build
47 ICUBLD_PKG=$(ICUBLD)\$(ICUPKG)
51 # The root of the ICU source directory tree
54 ICUP=$(ICUP:\source\data\..\..=)
55 # In case the first one didn't do it, try this one. .NET would do the second one.
56 ICUP=$(ICUP:\source\data\\..\..=)
57 !MESSAGE ICU root path is $(ICUP)
61 # The data directory in source
63 ICUSRCDATA=$(ICUP)\source\data
64 ICUSRCDATA_RELATIVE_PATH=..\..\..
67 # The directory that contains ucmcore.mk files along with *.ucm files
72 # The directory that contains resfiles.mk files along with *.txt locale data files
77 # The directory that contains colfiles.mk files along with *.txt collation data files
82 # The directory that contains rbnffiles.mk files along with *.txt RBNF data files
87 # The directory that contains trfiles.mk files along with *.txt transliterator files
92 # The directory that contains resfiles.mk files along with *.txt break iterator files
97 # The directory that contains Unicode data files
99 ICUUNIDATA=$(ICUP)\source\data\unidata
103 # The directory that contains miscfiles.mk along with files that are miscelleneous data
105 ICUMISC=$(ICUP)\source\data\misc
109 # The directory that contains sprepfiles.mk files along with *.txt stringprep files
115 # The source directory. Contains the source files for the common data to be built.
116 # WARNING: NOT THE SAME AS ICU_DATA environment variable. Confusing.
117 ICUDATA=$(ICUP)\source\data
121 # Destination directory for the common data DLL file.
122 # This is the same place that all of the other ICU DLLs go (the code-containing DLLs)
123 # The lib file for the data DLL goes in $(DLL_OUTPUT)/../lib/
125 !IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug"
126 DLL_OUTPUT=$(ICUP)\binARM$(UWP)
127 !ELSE IF "$(CFG)" == "x64\Release" || "$(CFG)" == "x64\Debug"
128 DLL_OUTPUT=$(ICUP)\bin64$(UWP)
129 !ELSE IF "$(UWP)" == "UWP"
130 DLL_OUTPUT=$(ICUP)\bin32$(UWP)
132 DLL_OUTPUT=$(ICUP)\bin$(UWP)
137 # The source directory for data needed for test programs.
138 TESTDATA=$(ICUP)\source\test\testdata
142 # The destination directory for the built test data .dat file
143 TESTDATAOUT=$(ICUP)\source\test\testdata\out
147 # The build directory for test data intermidiate files
148 # (Tests are NOT run from this makefile,
149 # only the data is put in place.)
150 TESTDATABLD=$(ICUP)\source\test\testdata\out\build
154 # Directory under which all of the ICU data building tools live.
156 ICUTOOLS=$(ICUP)\source\tools
157 !MESSAGE ICU tools path is $(ICUTOOLS)
161 # ARM needs to use one of the other tools, so make sure to get an usable cfg path
162 # Since tools, particularly pkggen, have architecture built-in, we made x64 on
163 # Windows be machine-independent and use those tools.
166 !IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug"
169 !MESSAGE ICU tools CFG subpath is $(CFGTOOLS)
171 # The current ICU tools need to be in the path first.
172 # x86 uses x86, x64 and arm use x64
173 !IF "$(CFG)" == "x86\Release" || "$(CFG)" == "x86\Debug"
174 PATH = $(ICUP)\bin;$(PATH)
177 PATH = $(ICUP)\bin64;$(PATH)
178 ICUPBIN=$(ICUP)\bin64
182 # This variable can be overridden to "-m static" by the project settings,
183 # if you want a static data library.
184 !IF "$(ICU_PACKAGE_MODE)"==""
185 ICU_PACKAGE_MODE=-m dll
188 # If this archive exists, build from that
189 # instead of building everything from scratch.
190 ICUDATA_SOURCE_ARCHIVE=$(ICUSRCDATA)\in\$(ICUPKG).dat
191 !IF !EXISTS("$(ICUDATA_SOURCE_ARCHIVE)")
192 # Does a big endian version exist either?
193 ICUDATA_ARCHIVE=$(ICUSRCDATA)\in\$(U_ICUDATA_NAME)b.dat
194 !IF EXISTS("$(ICUDATA_ARCHIVE)")
195 ICUDATA_SOURCE_ARCHIVE=$(ICUTMP)\$(ICUPKG).dat
197 # Nothing was usable for input
198 !UNDEF ICUDATA_SOURCE_ARCHIVE
202 !IFDEF ICUDATA_SOURCE_ARCHIVE
203 !MESSAGE ICU data source archive is $(ICUDATA_SOURCE_ARCHIVE)
205 # We're including a list of .ucm files.
206 # There are several lists, they are all optional.
208 # Always build the mapping files for the EBCDIC fallback codepages
209 # They are necessary on EBCDIC machines, and
210 # the following logic is much easier if UCM_SOURCE is never empty.
212 UCM_SOURCE=ibm-37_P100-1995.ucm ibm-1047_P100-1995.ucm
214 !IF EXISTS("$(ICUSRCDATA)\$(ICUUCM)\ucmcore.mk")
215 !INCLUDE "$(ICUSRCDATA)\$(ICUUCM)\ucmcore.mk"
216 UCM_SOURCE=$(UCM_SOURCE) $(UCM_SOURCE_CORE)
218 !MESSAGE Warning: cannot find "ucmcore.mk". Not building core MIME/Unix/Windows converter files.
221 !IF EXISTS("$(ICUSRCDATA)\$(ICUUCM)\ucmfiles.mk")
222 !INCLUDE "$(ICUSRCDATA)\$(ICUUCM)\ucmfiles.mk"
223 UCM_SOURCE=$(UCM_SOURCE) $(UCM_SOURCE_FILES)
225 !MESSAGE Warning: cannot find "ucmfiles.mk". Not building many converter files.
228 !IF EXISTS("$(ICUSRCDATA)\$(ICUUCM)\ucmebcdic.mk")
229 !INCLUDE "$(ICUSRCDATA)\$(ICUUCM)\ucmebcdic.mk"
230 UCM_SOURCE=$(UCM_SOURCE) $(UCM_SOURCE_EBCDIC)
231 !IFDEF UCM_SOURCE_EBCDIC_IGNORE_SISO
232 BUILD_SPECIAL_CNV_FILES=YES
233 UCM_SOURCE_SPECIAL=$(UCM_SOURCE_EBCDIC_IGNORE_SISO)
235 !UNDEF BUILD_SPECIAL_CNV_FILES
238 !MESSAGE Warning: cannot find "ucmebcdic.mk". Not building EBCDIC converter files.
241 !IF EXISTS("$(ICUSRCDATA)\$(ICUUCM)\ucmlocal.mk")
242 !INCLUDE "$(ICUSRCDATA)\$(ICUUCM)\ucmlocal.mk"
243 UCM_SOURCE=$(UCM_SOURCE) $(UCM_SOURCE_LOCAL)
244 !IFDEF UCM_SOURCE_EBCDIC_IGNORE_SISO_LOCAL
245 UCM_SOURCE_SPECIAL=$(UCM_SOURCE_SPECIAL) $(UCM_SOURCE_EBCDIC_IGNORE_SISO_LOCAL)
246 BUILD_SPECIAL_CNV_FILES=YES
249 !MESSAGE Information: cannot find "ucmlocal.mk". Not building user-additional converter files.
252 CNV_FILES=$(UCM_SOURCE:.ucm=.cnv)
253 !IFDEF BUILD_SPECIAL_CNV_FILES
254 CNV_FILES_SPECIAL=$(UCM_SOURCE_SPECIAL:.ucm=.cnv)
257 !IF EXISTS("$(ICUSRCDATA)\$(ICUBRK)\brkfiles.mk")
258 !INCLUDE "$(ICUSRCDATA)\$(ICUBRK)\brkfiles.mk"
259 !IF EXISTS("$(ICUSRCDATA)\$(ICUBRK)\brklocal.mk")
260 !INCLUDE "$(ICUSRCDATA)\$(ICUBRK)\brklocal.mk"
261 BRK_SOURCE=$(BRK_SOURCE) $(BRK_SOURCE_LOCAL)
262 BRK_DICT_SOURCE=$(BRK_DICT_SOURCE) $(BRK_DICT_SOURCE_LOCAL)
263 BRK_RES_SOURCE=$(BRK_RES_SOURCE) $(BRK_RES_SOURCE_LOCAL)
265 !MESSAGE Information: cannot find "brklocal.mk". Not building user-additional break iterator files.
268 !MESSAGE Warning: cannot find "brkfiles.mk"
272 # Break iterator data files.
274 BRK_FILES=$(ICUBRK)\$(BRK_SOURCE:.txt =.brk brkitr\)
275 BRK_FILES=$(BRK_FILES:.txt=.brk)
276 BRK_FILES=$(BRK_FILES:brkitr\ =brkitr\)
278 !IFDEF BRK_DICT_SOURCE
279 BRK_DICT_FILES = $(ICUBRK)\$(BRK_DICT_SOURCE:.txt =.dict brkitr\)
280 BRK_DICT_FILES = $(BRK_DICT_FILES:.txt=.dict)
281 BRK_DICT_FILES = $(BRK_DICT_FILES:brkitr\ =brkitr\)
284 !IFDEF BRK_RES_SOURCE
285 BRK_RES_FILES = $(BRK_RES_SOURCE:.txt =.res brkitr\)
286 BRK_RES_FILES = $(BRK_RES_FILES:.txt=.res)
287 BRK_RES_FILES = $(ICUBRK)\root.res $(ICUBRK)\$(BRK_RES_FILES:brkitr\ =)
288 ALL_RES = $(ALL_RES) $(ICUBRK)\res_index.res
291 # Read list of locale resource bundle files
292 !IF EXISTS("$(ICUSRCDATA)\$(ICULOC)\resfiles.mk")
293 !INCLUDE "$(ICUSRCDATA)\$(ICULOC)\resfiles.mk"
294 !IF EXISTS("$(ICUSRCDATA)\$(ICULOC)\reslocal.mk")
295 !INCLUDE "$(ICUSRCDATA)\$(ICULOC)\reslocal.mk"
296 GENRB_SOURCE=$(GENRB_SOURCE) $(GENRB_SOURCE_LOCAL)
298 !MESSAGE Information: cannot find "reslocal.mk". Not building user-additional resource bundle files.
301 !MESSAGE Warning: cannot find "resfiles.mk"
305 RB_FILES = root.res pool.res $(GENRB_ALIAS_SOURCE:.txt=.res) $(GENRB_ALIAS_SOURCE_LOCAL:.txt=.res) $(GENRB_SOURCE:.txt=.res)
306 ALL_RES = $(ALL_RES) res_index.res
310 # Read the list of currency display name resource bundle files
311 !IF EXISTS("$(ICUSRCDATA)\curr\resfiles.mk")
312 !INCLUDE "$(ICUSRCDATA)\curr\resfiles.mk"
313 !IF EXISTS("$(ICUSRCDATA)\curr\reslocal.mk")
314 !INCLUDE "$(ICUSRCDATA)\curr\reslocal.mk"
315 CURR_SOURCE=$(CURR_SOURCE) $(CURR_SOURCE_LOCAL)
317 !MESSAGE Information: cannot find "curr\reslocal.mk". Not building user-additional resource bundle files.
320 !MESSAGE Warning: cannot find "curr\resfiles.mk"
324 CURR_FILES = curr\root.txt supplementalData.txt $(CURR_ALIAS_SOURCE) $(CURR_SOURCE)
325 CURR_RES_FILES = $(CURR_FILES:.txt =.res curr\)
326 CURR_RES_FILES = $(CURR_RES_FILES:.txt=.res)
327 CURR_RES_FILES = curr\pool.res $(CURR_RES_FILES:curr\ =curr\)
328 ALL_RES = $(ALL_RES) curr\res_index.res
331 # Read the list of language/script display name resource bundle files
332 !IF EXISTS("$(ICUSRCDATA)\lang\resfiles.mk")
333 !INCLUDE "$(ICUSRCDATA)\lang\resfiles.mk"
334 !IF EXISTS("$(ICUSRCDATA)\lang\reslocal.mk")
335 !INCLUDE "$(ICUSRCDATA)\lang\reslocal.mk"
336 LANG_SOURCE=$(LANG_SOURCE) $(LANG_SOURCE_LOCAL)
338 !MESSAGE Information: cannot find "lang\reslocal.mk". Not building user-additional resource bundle files.
341 !MESSAGE Warning: cannot find "lang\resfiles.mk"
345 LANG_FILES = lang\root.txt $(LANG_ALIAS_SOURCE) $(LANG_SOURCE)
346 LANG_RES_FILES = $(LANG_FILES:.txt =.res lang\)
347 LANG_RES_FILES = $(LANG_RES_FILES:.txt=.res)
348 LANG_RES_FILES = lang\pool.res $(LANG_RES_FILES:lang\ =lang\)
349 ALL_RES = $(ALL_RES) lang\res_index.res
352 # Read the list of region display name resource bundle files
353 !IF EXISTS("$(ICUSRCDATA)\region\resfiles.mk")
354 !INCLUDE "$(ICUSRCDATA)\region\resfiles.mk"
355 !IF EXISTS("$(ICUSRCDATA)\region\reslocal.mk")
356 !INCLUDE "$(ICUSRCDATA)\region\reslocal.mk"
357 REGION_SOURCE=$(REGION_SOURCE) $(REGION_SOURCE_LOCAL)
359 !MESSAGE Information: cannot find "region\reslocal.mk". Not building user-additional resource bundle files.
362 !MESSAGE Warning: cannot find "region\resfiles.mk"
366 REGION_FILES = region\root.txt $(REGION_ALIAS_SOURCE) $(REGION_SOURCE)
367 REGION_RES_FILES = $(REGION_FILES:.txt =.res region\)
368 REGION_RES_FILES = $(REGION_RES_FILES:.txt=.res)
369 REGION_RES_FILES = region\pool.res $(REGION_RES_FILES:region\ =region\)
370 ALL_RES = $(ALL_RES) region\res_index.res
373 # Read the list of time zone display name resource bundle files
374 !IF EXISTS("$(ICUSRCDATA)\zone\resfiles.mk")
375 !INCLUDE "$(ICUSRCDATA)\zone\resfiles.mk"
376 !IF EXISTS("$(ICUSRCDATA)\zone\reslocal.mk")
377 !INCLUDE "$(ICUSRCDATA)\zone\reslocal.mk"
378 ZONE_SOURCE=$(ZONE_SOURCE) $(ZONE_SOURCE_LOCAL)
380 !MESSAGE Information: cannot find "zone\reslocal.mk". Not building user-additional resource bundle files.
382 ZONE_SOURCE=$(ZONE_SOURCE) tzdbNames.txt
384 !MESSAGE Warning: cannot find "zone\resfiles.mk"
388 ZONE_FILES = zone\root.txt $(ZONE_ALIAS_SOURCE) $(ZONE_SOURCE)
389 ZONE_RES_FILES = $(ZONE_FILES:.txt =.res zone\)
390 ZONE_RES_FILES = $(ZONE_RES_FILES:.txt=.res)
391 ZONE_RES_FILES = zone\pool.res $(ZONE_RES_FILES:zone\ =zone\)
392 ALL_RES = $(ALL_RES) zone\res_index.res
395 # Read the list of units display name resource bundle files
396 !IF EXISTS("$(ICUSRCDATA)\unit\resfiles.mk")
397 !INCLUDE "$(ICUSRCDATA)\unit\resfiles.mk"
398 !IF EXISTS("$(ICUSRCDATA)\unit\reslocal.mk")
399 !INCLUDE "$(ICUSRCDATA)\unit\reslocal.mk"
400 UNIT_SOURCE=$(UNIT_SOURCE) $(UNIT_SOURCE_LOCAL)
402 !MESSAGE Information: cannot find "unit\reslocal.mk". Not building user-additional resource bundle files.
405 !MESSAGE Warning: cannot find "unit\resfiles.mk"
409 UNIT_FILES = unit\root.txt $(UNIT_ALIAS_SOURCE) $(UNIT_SOURCE)
410 UNIT_RES_FILES = $(UNIT_FILES:.txt =.res unit\)
411 UNIT_RES_FILES = $(UNIT_RES_FILES:.txt=.res)
412 UNIT_RES_FILES = unit\pool.res $(UNIT_RES_FILES:unit\ =unit\)
413 ALL_RES = $(ALL_RES) unit\res_index.res
416 # Read the list of collation resource bundle files
417 !IF EXISTS("$(ICUSRCDATA)\$(ICUCOL)\colfiles.mk")
418 !INCLUDE "$(ICUSRCDATA)\$(ICUCOL)\colfiles.mk"
419 !IF EXISTS("$(ICUSRCDATA)\$(ICUCOL)\collocal.mk")
420 !INCLUDE "$(ICUSRCDATA)\$(ICUCOL)\collocal.mk"
421 COLLATION_SOURCE=$(COLLATION_SOURCE) $(COLLATION_SOURCE_LOCAL)
423 !MESSAGE Information: cannot find "collocal.mk". Not building user-additional resource bundle files.
426 !MESSAGE Warning: cannot find "colfiles.mk"
429 !IFDEF COLLATION_SOURCE
430 COL_FILES = $(ICUCOL)\root.txt $(COLLATION_ALIAS_SOURCE) $(COLLATION_SOURCE)
431 COL_COL_FILES = $(COL_FILES:.txt =.res coll\)
432 COL_COL_FILES = $(COL_COL_FILES:.txt=.res)
433 COL_COL_FILES = $(COL_COL_FILES:coll\ =)
434 ALL_RES = $(ALL_RES) $(ICUCOL)\res_index.res
437 # Read the list of RBNF resource bundle files
438 !IF EXISTS("$(ICUSRCDATA)\$(ICURBNF)\rbnffiles.mk")
439 !INCLUDE "$(ICUSRCDATA)\$(ICURBNF)\rbnffiles.mk"
440 !IF EXISTS("$(ICUSRCDATA)\$(ICURBNF)\rbnflocal.mk")
441 !INCLUDE "$(ICUSRCDATA)\$(ICURBNF)\rbnflocal.mk"
442 RBNF_SOURCE=$(RBNF_SOURCE) $(RBNF_SOURCE_LOCAL)
444 !MESSAGE Information: cannot find "rbnflocal.mk". Not building user-additional resource bundle files.
447 !MESSAGE Warning: cannot find "rbnffiles.mk"
451 RBNF_FILES = $(ICURBNF)\root.txt $(RBNF_ALIAS_SOURCE) $(RBNF_SOURCE)
452 RBNF_RES_FILES = $(RBNF_FILES:.txt =.res rbnf\)
453 RBNF_RES_FILES = $(RBNF_RES_FILES:.txt=.res)
454 RBNF_RES_FILES = $(RBNF_RES_FILES:rbnf\ =rbnf\)
455 ALL_RES = $(ALL_RES) $(ICURBNF)\res_index.res
458 # Read the list of transliterator resource bundle files
459 !IF EXISTS("$(ICUSRCDATA)\$(ICUTRNS)\trnsfiles.mk")
460 !INCLUDE "$(ICUSRCDATA)\$(ICUTRNS)\trnsfiles.mk"
461 !IF EXISTS("$(ICUSRCDATA)\$(ICUTRNS)\trnslocal.mk")
462 !INCLUDE "$(ICUSRCDATA)\$(ICUTRNS)\trnslocal.mk"
463 TRANSLIT_SOURCE=$(TRANSLIT_SOURCE) $(TRANSLIT_SOURCE_LOCAL)
465 !MESSAGE Information: cannot find "trnslocal.mk". Not building user-additional transliterator files.
468 !MESSAGE Warning: cannot find "trnsfiles.mk"
471 !IFDEF TRANSLIT_SOURCE
472 TRANSLIT_FILES = $(ICUTRNS)\$(TRANSLIT_ALIAS_SOURCE) $(TRANSLIT_SOURCE)
473 TRANSLIT_RES_FILES = $(TRANSLIT_FILES:.txt =.res translit\)
474 TRANSLIT_RES_FILES = $(TRANSLIT_RES_FILES:.txt=.res)
475 TRANSLIT_RES_FILES = $(TRANSLIT_RES_FILES:translit\ =translit\)
476 #ALL_RES = $(ALL_RES) $(ICUTRNS)\res_index.res
479 # Read the list of miscellaneous resource bundle files
480 !IF EXISTS("$(ICUSRCDATA)\$(ICUMISC2)\miscfiles.mk")
481 !INCLUDE "$(ICUSRCDATA)\$(ICUMISC2)\miscfiles.mk"
482 !IF EXISTS("$(ICUSRCDATA)\$(ICUMISC2)\misclocal.mk")
483 !INCLUDE "$(ICUSRCDATA)\$(ICUMISC2)\misclocal.mk"
484 MISC_SOURCE=$(MISC_SOURCE) $(MISC_SOURCE_LOCAL)
486 !MESSAGE Information: cannot find "misclocal.mk". Not building user-additional miscellaenous files.
489 !MESSAGE Warning: cannot find "miscfiles.mk"
492 MISC_FILES = $(MISC_SOURCE:.txt=.res)
494 # don't include COL_FILES
495 ALL_RES = $(ALL_RES) $(RB_FILES) $(MISC_FILES)
498 # Read the list of stringprep profile files
499 !IF EXISTS("$(ICUSRCDATA)\$(ICUSPREP)\sprepfiles.mk")
500 !INCLUDE "$(ICUSRCDATA)\$(ICUSPREP)\sprepfiles.mk"
501 !IF EXISTS("$(ICUSRCDATA)\$(ICUSPREP)\spreplocal.mk")
502 !INCLUDE "$(ICUSRCDATA)\$(ICUSPREP)\spreplocal.mk"
503 SPREP_SOURCE=$(SPREP_SOURCE) $(SPREP_SOURCE_LOCAL)
505 !MESSAGE Information: cannot find "spreplocal.mk". Not building user-additional stringprep files.
508 !MESSAGE Warning: cannot find "sprepfiles.mk"
511 SPREP_FILES = $(SPREP_SOURCE:.txt=.spp)
513 # Common defines for both ways of building ICU's data library.
514 COMMON_ICUDATA_DEPENDENCIES="$(ICUPBIN)\pkgdata.exe" "$(ICUTMP)\icudata.res" "$(ICUP)\source\stubdata\stubdatabuilt.txt"
515 COMMON_ICUDATA_ARGUMENTS=-f -e $(U_ICUDATA_NAME) -v $(ICU_PACKAGE_MODE) -c -p $(ICUPKG) -T "$(ICUTMP)" -L $(U_ICUDATA_NAME) -d "$(ICUBLD_PKG)" -s .
516 !IF "$(UWP)" == "UWP"
517 COMMON_ICUDATA_ARGUMENTS=$(COMMON_ICUDATA_ARGUMENTS) -u
518 !IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug"
519 COMMON_ICUDATA_ARGUMENTS=$(COMMON_ICUDATA_ARGUMENTS) -a
523 #############################################################################
526 # This target builds all the data files. The world starts here.
527 # Note: we really want the common data dll to go to $(DLL_OUTPUT), not $(ICUBLD_PKG). But specifying
528 # that here seems to cause confusion with the building of the stub library of the same name.
529 # Building the common dll in $(ICUBLD_PKG) unconditionally copies it to $(DLL_OUTPUT) too.
531 #############################################################################
532 ALL : GODATA "$(ICU_LIB_TARGET)" "$(TESTDATAOUT)\testdata.dat"
533 @echo All targets are up to date
535 !IF "$(UWP)" == "UWP"
536 @if not exist "$(ICUMAKE)\..\..\commondata\" mkdir "$(ICUMAKE)\..\..\commondata\"
537 copy "$(ICUOUT)\$(U_ICUDATA_NAME)$(U_ICUDATA_ENDIAN_SUFFIX).dat" "$(ICUMAKE)\..\..\commondata\"
540 # The core Unicode properties files (uprops.icu, ucase.icu, ubidi.icu)
541 # are hardcoded in the common DLL and therefore not included in the data package any more.
542 # They are not built by default but need to be built for ICU4J data and for getting the .c source files
543 # when updating the Unicode data.
544 # Changed in makedata.mak revision 1.117. See Jitterbug 4497.
545 # 2010-dec Removed pnames.icu.
547 # C:\svn\icuproj\icu\trunk\source\data>nmake -f makedata.mak ICUMAKE=C:\svn\icuproj\icu\trunk\source\data\ CFG=x86\Debug uni-core-data
548 uni-core-data: GODATA "$(ICUBLD_PKG)\pnames.icu" "$(ICUBLD_PKG)\uprops.icu" "$(ICUBLD_PKG)\ucase.icu" "$(ICUBLD_PKG)\ubidi.icu" "$(ICUBLD_PKG)\nfc.nrm"
549 @echo Unicode .icu files built to "$(ICUBLD_PKG)"
551 # Build the ICU4J icudata.jar and testdata.jar.
552 # see icu4j-readme.txt
554 ICU4J_TZDATA="$(ICUOUT)\icu4j\icutzdata.jar"
555 ICU4J_DATA_DIRNAME=com\ibm\icu\impl\data\$(U_ICUDATA_NAME)b
556 ICU4J_TZDATA_PATHS=$(ICU4J_DATA_DIRNAME)\zoneinfo64.res $(ICU4J_DATA_DIRNAME)\metaZones.res $(ICU4J_DATA_DIRNAME)\timezoneTypes.res $(ICU4J_DATA_DIRNAME)\windowsZones.res
558 generate-data: GODATA "$(ICUOUT)\$(ICUPKG).dat" uni-core-data
559 if not exist "$(ICUOUT)\icu4j\$(ICU4J_DATA_DIRNAME)" mkdir "$(ICUOUT)\icu4j\$(ICU4J_DATA_DIRNAME)"
560 if not exist "$(ICUOUT)\icu4j\tzdata\$(ICU4J_DATA_DIRNAME)" mkdir "$(ICUOUT)\icu4j\tzdata\$(ICU4J_DATA_DIRNAME)"
561 echo pnames.icu ubidi.icu ucase.icu uprops.icu nfc.nrm > "$(ICUOUT)\icu4j\add.txt"
562 "$(ICUPBIN)\icupkg" "$(ICUOUT)\$(ICUPKG).dat" "$(ICUOUT)\icu4j\$(U_ICUDATA_NAME)b.dat" -a "$(ICUOUT)\icu4j\add.txt" -s "$(ICUBLD_PKG)" -x * -tb -d "$(ICUOUT)\icu4j\$(ICU4J_DATA_DIRNAME)"
563 @for %f in ($(ICU4J_TZDATA_PATHS)) do @move "$(ICUOUT)\icu4j\%f" "$(ICUOUT)\icu4j\tzdata\$(ICU4J_DATA_DIRNAME)"
565 "$(ICUOUT)\icu4j\icutzdata.jar": GODATA generate-data
566 "$(JAR)" cf "$(ICUOUT)\icu4j\icutzdata.jar" -C "$(ICUOUT)\icu4j\tzdata" "$(ICU4J_DATA_DIRNAME)"
569 # - add the uni-core-data to the ICU package
570 # - swap the ICU data
571 # - extract all data items
572 # - package them into the .jar file
573 "$(ICUOUT)\icu4j\icudata.jar": GODATA generate-data
574 "$(JAR)" cf "$(ICUOUT)\icu4j\icudata.jar" -C "$(ICUOUT)\icu4j" "$(ICU4J_DATA_DIRNAME)"
576 # Build testdata.jar:
577 # - swap the test data
578 # - extract all data items
579 # - package them into the .jar file
580 "$(ICUOUT)\icu4j\testdata.jar": GODATA "$(TESTDATAOUT)\testdata.dat"
581 if not exist "$(ICUOUT)\icu4j\com\ibm\icu\dev\data\testdata" mkdir "$(ICUOUT)\icu4j\com\ibm\icu\dev\data\testdata"
582 "$(ICUPBIN)\icupkg" "$(TESTDATAOUT)\testdata.dat" -r test.icu -x * -tb -d "$(ICUOUT)\icu4j\com\ibm\icu\dev\data\testdata"
583 "$(JAR)" cf "$(ICUOUT)\icu4j\testdata.jar" -C "$(ICUOUT)\icu4j" com\ibm\icu\dev\data\testdata
585 ## Compare to: source\data\Makefile.in and source\test\testdata\Makefile.in
587 DEBUGUTILITIESDATA_DIR=main\tests\core\src\com\ibm\icu\dev\test\util
588 DEBUGUTILITIESDATA_SRC=DebugUtilitiesData.java
590 # Build DebugUtilitiesData.java
591 "$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)\$(DEBUGUTILITIESDATA_SRC)" : {"$(ICUTOOLS)\gentest\$(CFGTOOLS)"}gentest.exe
592 if not exist "$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)" mkdir "$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)"
593 "$(ICUTOOLS)\gentest\$(CFGTOOLS)\gentest" -j -d"$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)"
595 ICU4J_DATA="$(ICUOUT)\icu4j\icudata.jar" "$(ICUOUT)\icu4j\testdata.jar" "$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)\$(DEBUGUTILITIESDATA_SRC)"
597 icu4j-data: GODATA $(ICU4J_DATA) $(ICU4J_TZDATA)
601 "$(ICU4J_ROOT)\main\shared\data\icudata.jar": "$(ICUOUT)\icu4j\icudata.jar"
602 if not exist "$(ICU4J_ROOT)\main\shared\data" mkdir "$(ICU4J_ROOT)\main\shared\data"
603 copy "$(ICUOUT)\icu4j\icudata.jar" "$(ICU4J_ROOT)\main\shared\data"
605 "$(ICU4J_ROOT)\main\shared\data\icutzdata.jar": "$(ICUOUT)\icu4j\icutzdata.jar"
606 if not exist "$(ICU4J_ROOT)\main\shared\data" mkdir "$(ICU4J_ROOT)\main\shared\data"
607 copy "$(ICUOUT)\icu4j\icutzdata.jar" "$(ICU4J_ROOT)\main\shared\data"
609 "$(ICU4J_ROOT)\main\shared\data\testdata.jar": "$(ICUOUT)\icu4j\testdata.jar"
610 if not exist "$(ICU4J_ROOT)\main\shared\data" mkdir "$(ICU4J_ROOT)\main\shared\data"
611 copy "$(ICUOUT)\icu4j\testdata.jar" "$(ICU4J_ROOT)\main\shared\data"
613 # "$(DEBUGUTILTIESDATA_OUT)"
615 "$(ICU4J_ROOT)\$(DEBUGUTILITIESDATA_DIR)\$(DEBUGUTILITIESDATA_SRC)": "$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)\$(DEBUGUTILITIESDATA_SRC)"
616 if not exist "$(ICU4J_ROOT)\$(DEBUGUTILITIESDATA_DIR)" mkdir "$(ICU4J_ROOT)\$(DEBUGUTILITIESDATA_DIR)"
617 copy "$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)\$(DEBUGUTILITIESDATA_SRC)" "$(ICU4J_ROOT)\$(DEBUGUTILITIESDATA_DIR)\$(DEBUGUTILITIESDATA_SRC)"
619 ICU4J_DATA_INSTALLED="$(ICU4J_ROOT)\main\shared\data\icudata.jar" "$(ICU4J_ROOT)\main\shared\data\icutzdata.jar" "$(ICU4J_ROOT)\main\shared\data\testdata.jar" "$(ICU4J_ROOT)\$(DEBUGUTILITIESDATA_DIR)\$(DEBUGUTILITIESDATA_SRC)"
621 icu4j-data-install : GODATA $(ICU4J_DATA) $(ICU4J_TZDATA) $(ICU4J_DATA_INSTALLED)
622 @echo ICU4J data output to "$(ICU4J_ROOT)"
627 @echo ERROR ICU4J_ROOT not set
635 # testdata - nmake will invoke pkgdata, which will create testdata.dat
637 "$(TESTDATAOUT)\testdata.dat": "$(TESTDATA)\*" "$(ICUBLD_PKG)\$(ICUCOL)\ucadata.icu" $(TRANSLIT_RES_FILES) $(MISC_FILES) $(RB_FILES) {"$(ICUTOOLS)\genrb\$(CFGTOOLS)"}genrb.exe
639 @echo building testdata...
640 nmake /nologo /f "$(TESTDATA)\testdata.mak" TESTDATA=. ICUTOOLS="$(ICUTOOLS)" ICUPBIN="$(ICUPBIN)" ICUP="$(ICUP)" CFG=$(CFGTOOLS) TESTDATAOUT="$(TESTDATAOUT)" TESTDATABLD="$(TESTDATABLD)"
642 #invoke pkgdata for ICU common data
643 # pkgdata will drop all output files (.dat, .dll, .lib) into the target (ICUBLD_PKG) directory.
644 # move the .dll and .lib files to their final destination afterwards.
645 # The $(U_ICUDATA_NAME).lib and $(U_ICUDATA_NAME).exp should already be in the right place due to stubdata.
647 # 2005-may-05 Removed Unicode properties files (unorm.icu, uprops.icu, ucase.icu, ubidi.icu)
648 # from data build. See Jitterbug 4497. (makedata.mak revision 1.117)
650 !IFDEF ICUDATA_SOURCE_ARCHIVE
651 "$(ICU_LIB_TARGET)" : $(COMMON_ICUDATA_DEPENDENCIES) "$(ICUDATA_SOURCE_ARCHIVE)"
652 @echo Building icu data from $(ICUDATA_SOURCE_ARCHIVE)
654 "$(ICUPBIN)\icupkg" -x * --list "$(ICUDATA_SOURCE_ARCHIVE)" > "$(ICUTMP)\icudata.lst"
655 "$(ICUPBIN)\pkgdata" $(COMMON_ICUDATA_ARGUMENTS) "$(ICUTMP)\icudata.lst"
656 copy "$(U_ICUDATA_NAME).dll" "$(DLL_OUTPUT)"
657 -@erase "$(U_ICUDATA_NAME).dll"
658 copy "$(ICUTMP)\$(ICUPKG).dat" "$(ICUOUT)\$(U_ICUDATA_NAME)$(U_ICUDATA_ENDIAN_SUFFIX).dat"
659 -@erase "$(ICUTMP)\$(ICUPKG).dat"
661 "$(ICU_LIB_TARGET)" : $(COMMON_ICUDATA_DEPENDENCIES) $(CNV_FILES) $(CNV_FILES_SPECIAL) "$(ICUBLD_PKG)\unames.icu" "$(ICUBLD_PKG)\cnvalias.icu" "$(ICUBLD_PKG)\nfkc.nrm" "$(ICUBLD_PKG)\nfkc_cf.nrm" "$(ICUBLD_PKG)\uts46.nrm" "$(ICUBLD_PKG)\$(ICUCOL)\ucadata.icu" $(CURR_RES_FILES) $(LANG_RES_FILES) $(REGION_RES_FILES) $(ZONE_RES_FILES) $(UNIT_RES_FILES) $(BRK_FILES) $(BRK_DICT_FILES) $(BRK_RES_FILES) $(ALL_RES) $(COL_COL_FILES) $(RBNF_RES_FILES) $(TRANSLIT_RES_FILES) $(SPREP_FILES) "$(ICUBLD_PKG)\confusables.cfu"
662 @echo Building icu data
664 "$(ICUPBIN)\pkgdata" $(COMMON_ICUDATA_ARGUMENTS) <<"$(ICUTMP)\icudata.lst"
667 $(ICUCOL)\ucadata.icu
672 $(CNV_FILES:.cnv =.cnv
674 $(CNV_FILES_SPECIAL:.cnv =.cnv
678 $(CURR_RES_FILES:.res =.res
680 $(LANG_RES_FILES:.res =.res
682 $(REGION_RES_FILES:.res =.res
684 $(ZONE_RES_FILES:.res =.res
686 $(UNIT_RES_FILES:.res =.res
688 $(COL_COL_FILES:.res =.res
690 $(RBNF_RES_FILES:.res =.res
692 $(TRANSLIT_RES_FILES:.res =.res
694 $(BRK_FILES:.brk =.brk
696 $(BRK_DICT_FILES:.dict =.dict
698 $(BRK_RES_FILES:.res =.res
700 $(SPREP_FILES:.spp=.spp
703 -@erase "$(ICU_LIB_TARGET)"
704 @if not exist "$(DLL_OUTPUT)" mkdir "$(DLL_OUTPUT)"
705 copy "$(U_ICUDATA_NAME).dll" "$(ICU_LIB_TARGET)"
706 -@erase "$(U_ICUDATA_NAME).dll"
707 copy "$(ICUTMP)\$(ICUPKG).dat" "$(ICUOUT)\$(U_ICUDATA_NAME)$(U_ICUDATA_ENDIAN_SUFFIX).dat"
708 -@erase "$(ICUTMP)\$(ICUPKG).dat"
711 # utility target to create missing directories
713 @if not exist "$(ICUOUT)\$(NULL)" mkdir "$(ICUOUT)"
714 @if not exist "$(ICUTMP)\$(NULL)" mkdir "$(ICUTMP)"
715 @if not exist "$(ICUOUT)\build\$(NULL)" mkdir "$(ICUOUT)\build"
716 @if not exist "$(ICUBLD_PKG)\$(NULL)" mkdir "$(ICUBLD_PKG)"
717 @if not exist "$(ICUBLD_PKG)\curr\$(NULL)" mkdir "$(ICUBLD_PKG)\curr"
718 @if not exist "$(ICUBLD_PKG)\lang\$(NULL)" mkdir "$(ICUBLD_PKG)\lang"
719 @if not exist "$(ICUBLD_PKG)\region\$(NULL)" mkdir "$(ICUBLD_PKG)\region"
720 @if not exist "$(ICUBLD_PKG)\zone\$(NULL)" mkdir "$(ICUBLD_PKG)\zone"
721 @if not exist "$(ICUBLD_PKG)\$(ICUBRK)\$(NULL)" mkdir "$(ICUBLD_PKG)\$(ICUBRK)"
722 @if not exist "$(ICUBLD_PKG)\$(ICUCOL)\$(NULL)" mkdir "$(ICUBLD_PKG)\$(ICUCOL)"
723 @if not exist "$(ICUBLD_PKG)\$(ICURBNF)\$(NULL)" mkdir "$(ICUBLD_PKG)\$(ICURBNF)"
724 @if not exist "$(ICUBLD_PKG)\$(ICUTRNS)\$(NULL)" mkdir "$(ICUBLD_PKG)\$(ICUTRNS)"
725 @if not exist "$(TESTDATAOUT)\$(NULL)" mkdir "$(TESTDATAOUT)"
726 @if not exist "$(TESTDATABLD)\$(NULL)" mkdir "$(TESTDATABLD)"
727 @if not exist "$(TESTDATAOUT)\testdata\$(NULL)" mkdir "$(TESTDATAOUT)\testdata"
729 # utility target to send us to the right dir
733 # This is to remove all the data files
735 @echo Cleaning up the data files.
750 -@erase "region\*.res"
751 -@erase "region\*.txt"
754 @cd "$(ICUBLD_PKG)\$(ICUBRK)"
759 @cd "$(ICUBLD_PKG)\$(ICUCOL)"
762 @cd "$(ICUBLD_PKG)\$(ICURBNF)"
765 @cd "$(ICUBLD_PKG)\$(ICUTRNS)"
785 @cd "$(TESTDATAOUT)\testdata"
790 # RBBI .brk file generation.
791 {$(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\rules}.txt.brk:
793 @"$(ICUTOOLS)\genbrk\$(CFGTOOLS)\genbrk" -c -r $< -o $@ -d"$(ICUBLD_PKG)" -i "$(ICUBLD_PKG)"
795 #RBBI .dict file generation.
796 {$(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\dictionaries}.txt.dict:
798 @"$(ICUTOOLS)\gendict\$(CFGTOOLS)\gendict" -c --uchars $< "$(ICUBLD_PKG)\$@"
800 $(ICUBRK)\thaidict.dict:
801 @echo Creating $(ICUBRK)\thaidict.dict
802 @"$(ICUTOOLS)\gendict\$(CFGTOOLS)\gendict" -c --bytes --transform offset-0x0e00 $(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\dictionaries\thaidict.txt "$(ICUBLD_PKG)\$(ICUBRK)\thaidict.dict"
804 $(ICUBRK)\laodict.dict:
805 @echo Creating $(ICUBRK)\laodict.dict
806 @"$(ICUTOOLS)\gendict\$(CFGTOOLS)\gendict" -c --bytes --transform offset-0x0e80 $(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\dictionaries\laodict.txt "$(ICUBLD_PKG)\$(ICUBRK)\laodict.dict"
808 $(ICUBRK)\burmesedict.dict:
809 @echo Creating $(ICUBRK)\burmesedict.dict
810 @"$(ICUTOOLS)\gendict\$(CFGTOOLS)\gendict" -c --bytes --transform offset-0x1000 $(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\dictionaries\burmesedict.txt "$(ICUBLD_PKG)\$(ICUBRK)\burmesedict.dict"
812 $(ICUBRK)\khmerdict.dict:
813 @echo Creating $(ICUBRK)\khmerdict.dict
814 @"$(ICUTOOLS)\gendict\$(CFGTOOLS)\gendict" -c --bytes --transform offset-0x1780 $(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\dictionaries\khmerdict.txt "$(ICUBLD_PKG)\$(ICUBRK)\khmerdict.dict"
816 !IFNDEF ICUDATA_SOURCE_ARCHIVE
817 # Rule for creating converters
818 $(CNV_FILES): $(UCM_SOURCE)
819 @echo Building Charset Conversion table $(@B)
820 @"$(ICUTOOLS)\makeconv\$(CFGTOOLS)\makeconv" -c -d"$(ICUBLD_PKG)" $(ICUSRCDATA_RELATIVE_PATH)\$(ICUUCM)\$(@B).ucm
823 !IFDEF BUILD_SPECIAL_CNV_FILES
824 $(CNV_FILES_SPECIAL): $(UCM_SOURCE_SPECIAL)
825 @echo Building Special Charset Conversion table $(@B)
826 @"$(ICUTOOLS)\makeconv\$(CFGTOOLS)\makeconv" -c --ignore-siso-check -d"$(ICUBLD_PKG)" $(ICUSRCDATA_RELATIVE_PATH)\$(ICUUCM)\$(@B).ucm
829 # Batch inference rule for creating miscellaneous resource files
830 # TODO: -q option is specified to squelch the 120+ warnings about
831 # empty intvectors and binary elements. Unfortunately, this may
832 # squelch other legitimate warnings. When there is a better
833 # way, remove the -q.
834 {$(ICUSRCDATA_RELATIVE_PATH)\$(ICUMISC2)}.txt.res::
835 @echo Making Miscellaneous Resource Bundle files
836 @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -q -d"$(ICUBLD_PKG)" $<
838 # Inference rule for creating resource bundle files
839 {$(ICUSRCDATA_RELATIVE_PATH)\$(ICULOC)}.txt.res::
840 @echo Making Locale Resource Bundle files
841 @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\$(ICULOC) -k -d"$(ICUBLD_PKG)" $<
843 # copy the locales/pool.res file from the source folder to the build output folder
844 # and swap it to native endianness
845 pool.res: $(ICUSRCDATA_RELATIVE_PATH)\$(ICULOC)\pool.res
846 "$(ICUPBIN)\icupkg" -tl "$(ICUSRCDATA_RELATIVE_PATH)\$(ICULOC)\pool.res" pool.res
849 @echo Generating <<res_index.txt
850 // Warning this file is automatically generated
851 res_index:table(nofallback) {
853 $(GENRB_SOURCE:.txt= {""}
858 @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)" .\res_index.txt
861 {$(ICUSRCDATA_RELATIVE_PATH)\curr}.txt{curr}.res::
862 @echo Making currency display name files
863 @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\curr -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\curr" $<
865 # copy the curr/pool.res file from the source folder to the build output folder
866 # and swap it to native endianness
867 curr\pool.res: $(ICUSRCDATA_RELATIVE_PATH)\curr\pool.res
868 "$(ICUPBIN)\icupkg" -tl "$(ICUSRCDATA_RELATIVE_PATH)\curr\pool.res" curr\pool.res
871 @echo Generating <<curr\res_index.txt
872 // Warning this file is automatically generated
873 res_index:table(nofallback) {
875 $(CURR_SOURCE:.txt= {""}
880 @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)\curr" .\curr\res_index.txt
883 {$(ICUSRCDATA_RELATIVE_PATH)\lang}.txt{lang}.res::
884 @echo Making language/script display name files
885 @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\lang -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\lang" $<
887 # copy the lang/pool.res file from the source folder to the build output folder
888 # and swap it to native endianness
889 lang\pool.res: $(ICUSRCDATA_RELATIVE_PATH)\lang\pool.res
890 "$(ICUPBIN)\icupkg" -tl "$(ICUSRCDATA_RELATIVE_PATH)\lang\pool.res" lang\pool.res
893 @echo Generating <<lang\res_index.txt
894 // Warning this file is automatically generated
895 res_index:table(nofallback) {
897 $(LANG_SOURCE:.txt= {""}
902 @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)\lang" .\lang\res_index.txt
905 {$(ICUSRCDATA_RELATIVE_PATH)\region}.txt{region}.res::
906 @echo Making region display name files
907 @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\region -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\region" $<
909 # copy the region/pool.res file from the source folder to the build output folder
910 # and swap it to native endianness
911 region\pool.res: $(ICUSRCDATA_RELATIVE_PATH)\region\pool.res
912 "$(ICUPBIN)\icupkg" -tl "$(ICUSRCDATA_RELATIVE_PATH)\region\pool.res" region\pool.res
914 region\res_index.res:
915 @echo Generating <<region\res_index.txt
916 // Warning this file is automatically generated
917 res_index:table(nofallback) {
919 $(REGION_SOURCE:.txt= {""}
924 @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)\region" .\region\res_index.txt
927 {$(ICUSRCDATA_RELATIVE_PATH)\zone}.txt{zone}.res::
928 @echo Making time zone display name files
929 @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\zone -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\zone" $<
931 # copy the zone/pool.res file from the source folder to the build output folder
932 # and swap it to native endianness
933 zone\pool.res: $(ICUSRCDATA_RELATIVE_PATH)\zone\pool.res
934 "$(ICUPBIN)\icupkg" -tl "$(ICUSRCDATA_RELATIVE_PATH)\zone\pool.res" zone\pool.res
937 @echo Generating <<zone\res_index.txt
938 // Warning this file is automatically generated
939 res_index:table(nofallback) {
941 $(ZONE_SOURCE:.txt= {""}
946 @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)\zone" .\zone\res_index.txt
949 {$(ICUSRCDATA_RELATIVE_PATH)\unit}.txt{unit}.res::
950 @echo Making unit display name files
951 @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\unit -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\unit" $<
953 # copy the unit/pool.res file from the source folder to the build output folder
954 # and swap it to native endianness
955 unit\pool.res: $(ICUSRCDATA_RELATIVE_PATH)\unit\pool.res
956 "$(ICUPBIN)\icupkg" -tl "$(ICUSRCDATA_RELATIVE_PATH)\unit\pool.res" unit\pool.res
959 @echo Generating <<unit\res_index.txt
960 // Warning this file is automatically generated
961 res_index:table(nofallback) {
963 $(UNIT_SOURCE:.txt= {""}
968 @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)\unit" .\unit\res_index.txt
971 {$(ICUSRCDATA_RELATIVE_PATH)\$(ICUCOL)}.txt{$(ICUCOL)}.res::
972 @echo Making Collation files
973 @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\$(ICUCOL)" $<
975 $(ICUCOL)\res_index.res:
976 @echo Generating <<$(ICUCOL)\res_index.txt
977 // Warning this file is automatically generated
978 res_index:table(nofallback) {
980 $(COLLATION_SOURCE:.txt= {""}
985 @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)\$(ICUCOL)" .\$(ICUCOL)\res_index.txt
987 {$(ICUSRCDATA_RELATIVE_PATH)\$(ICURBNF)}.txt{$(ICURBNF)}.res::
988 @echo Making RBNF files
989 @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\$(ICURBNF)" $<
991 $(ICURBNF)\res_index.res:
992 @echo Generating <<$(ICURBNF)\res_index.txt
993 // Warning this file is automatically generated
994 res_index:table(nofallback) {
996 $(RBNF_SOURCE:.txt= {""}
1001 @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)\$(ICURBNF)" .\$(ICURBNF)\res_index.txt
1003 $(ICUBRK)\res_index.res:
1004 @echo Generating <<$(ICUBRK)\res_index.txt
1005 // Warning this file is automatically generated
1006 res_index:table(nofallback) {
1008 $(BRK_RES_SOURCE:.txt= {""}
1013 @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)\$(ICUBRK)" .\$(ICUBRK)\res_index.txt
1015 {$(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)}.txt{$(ICUBRK)}.res::
1016 @echo Making Break Iterator Resource files
1017 @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\$(ICUBRK)" $<
1019 {$(ICUSRCDATA_RELATIVE_PATH)\$(ICUTRNS)}.txt{$(ICUTRNS)}.res::
1020 @echo Making Transliterator files
1021 @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\$(ICUTRNS)" $<
1024 # DLL version information
1025 # If you modify this, modify winmode.c in pkgdata.
1026 "$(ICUTMP)\icudata.res": "$(ICUMISC)\icudata.rc"
1027 @echo Creating data DLL version information from $**
1028 @rc.exe /i "..\..\..\..\common" /r /fo $@ $**
1030 # Targets for converters
1031 "$(ICUBLD_PKG)\cnvalias.icu" : {"$(ICUSRCDATA)\$(ICUUCM)"}\convrtrs.txt "$(ICUTOOLS)\gencnval\$(CFGTOOLS)\gencnval.exe"
1032 @echo Creating data file for Converter Aliases
1033 @"$(ICUTOOLS)\gencnval\$(CFGTOOLS)\gencnval" -d "$(ICUBLD_PKG)" "$(ICUSRCDATA)\$(ICUUCM)\convrtrs.txt"
1035 # Targets for prebuilt Unicode data
1036 "$(ICUBLD_PKG)\pnames.icu": $(ICUSRCDATA_RELATIVE_PATH)\in\pnames.icu
1037 "$(ICUPBIN)\icupkg" -tl $? $@
1039 "$(ICUBLD_PKG)\ubidi.icu": $(ICUSRCDATA_RELATIVE_PATH)\in\ubidi.icu
1040 "$(ICUPBIN)\icupkg" -tl $? $@
1042 "$(ICUBLD_PKG)\ucase.icu": $(ICUSRCDATA_RELATIVE_PATH)\in\ucase.icu
1043 "$(ICUPBIN)\icupkg" -tl $? $@
1045 "$(ICUBLD_PKG)\uprops.icu": $(ICUSRCDATA_RELATIVE_PATH)\in\uprops.icu
1046 "$(ICUPBIN)\icupkg" -tl $? $@
1048 "$(ICUBLD_PKG)\unames.icu": $(ICUSRCDATA_RELATIVE_PATH)\in\unames.icu
1049 "$(ICUPBIN)\icupkg" -tl $? $@
1051 "$(ICUBLD_PKG)\nfc.nrm": $(ICUSRCDATA_RELATIVE_PATH)\in\nfc.nrm
1052 "$(ICUPBIN)\icupkg" -tl $? $@
1054 "$(ICUBLD_PKG)\nfkc.nrm": $(ICUSRCDATA_RELATIVE_PATH)\in\nfkc.nrm
1055 "$(ICUPBIN)\icupkg" -tl $? $@
1057 "$(ICUBLD_PKG)\nfkc_cf.nrm": $(ICUSRCDATA_RELATIVE_PATH)\in\nfkc_cf.nrm
1058 "$(ICUPBIN)\icupkg" -tl $? $@
1060 "$(ICUBLD_PKG)\uts46.nrm": $(ICUSRCDATA_RELATIVE_PATH)\in\uts46.nrm
1061 "$(ICUPBIN)\icupkg" -tl $? $@
1063 "$(ICUBLD_PKG)\coll\ucadata.icu": $(ICUSRCDATA_RELATIVE_PATH)\in\coll\ucadata-unihan.icu
1064 "$(ICUPBIN)\icupkg" -tl $? $@
1066 # Stringprep .spp file generation.
1067 {$(ICUSRCDATA_RELATIVE_PATH)\$(ICUSPREP)}.txt.spp:
1069 @"$(ICUTOOLS)\gensprep\$(CFGTOOLS)\gensprep" -s $(<D) -d "$(ICUBLD_PKG)" -b $(@B) -m "$(ICUUNIDATA)" -u 3.2.0 $(<F)
1071 # Confusables .cfu file generation
1072 # Can't use an inference rule because two .txt source files combine to produce a single .cfu output file
1073 "$(ICUBLD_PKG)\confusables.cfu": "$(ICUUNIDATA)\confusables.txt" "$(ICUUNIDATA)\confusablesWholeScript.txt" "$(ICUTOOLS)\gencfu\$(CFGTOOLS)\gencfu.exe"
1075 @"$(ICUTOOLS)\gencfu\$(CFGTOOLS)\gencfu" -c -r "$(ICUUNIDATA)\confusables.txt" -w "$(ICUUNIDATA)\confusablesWholeScript.txt" -o $@ -i "$(ICUBLD_PKG)"
1077 !IFDEF ICUDATA_ARCHIVE
1078 "$(ICUDATA_SOURCE_ARCHIVE)": CREATE_DIRS $(ICUDATA_ARCHIVE) "$(ICUTOOLS)\icupkg\$(CFGTOOLS)\icupkg.exe"
1079 "$(ICUTOOLS)\icupkg\$(CFGTOOLS)\icupkg" -t$(U_ICUDATA_ENDIAN_SUFFIX) "$(ICUDATA_ARCHIVE)" "$(ICUDATA_SOURCE_ARCHIVE)"
1082 # Dependencies on the tools for the batch inference rules
1084 !IFNDEF ICUDATA_SOURCE_ARCHIVE
1085 $(UCM_SOURCE) : {"$(ICUTOOLS)\makeconv\$(CFGTOOLS)"}makeconv.exe
1087 !IFDEF BUILD_SPECIAL_CNV_FILES
1088 $(UCM_SOURCE_SPECIAL): {"$(ICUTOOLS)\makeconv\$(CFGTOOLS)"}makeconv.exe
1091 # This used to depend on "$(ICUBLD_PKG)\uprops.icu" "$(ICUBLD_PKG)\ucase.icu" "$(ICUBLD_PKG)\ubidi.icu"
1092 # This data is now hard coded as a part of the library.
1093 # See Jitterbug 4497 for details.
1094 $(MISC_SOURCE) $(RB_FILES) $(CURR_FILES) $(LANG_FILES) $(REGION_FILES) $(ZONE_FILES) $(UNIT_FILES) $(COL_COL_FILES) $(RBNF_RES_FILES) $(BRK_RES_FILES) $(TRANSLIT_RES_FILES): {"$(ICUTOOLS)\genrb\$(CFGTOOLS)"}genrb.exe "$(ICUBLD_PKG)\$(ICUCOL)\ucadata.icu"
1096 # This used to depend on "$(ICUBLD_PKG)\pnames.icu" "$(ICUBLD_PKG)\uprops.icu" "$(ICUBLD_PKG)\ucase.icu" "$(ICUBLD_PKG)\ubidi.icu"
1097 # These are now hardcoded in ICU4C and only loaded in ICU4J.
1098 $(BRK_SOURCE) : "$(ICUBLD_PKG)\unames.icu"