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=icudt64
16 ##############################################################################
18 # Optionally change the name of the data file for the UWP version.
19 U_ICUDATA_NAME=icudt64
21 U_ICUDATA_ENDIAN_SUFFIX=l
23 ICU_LIB_TARGET=$(DLL_OUTPUT)\$(U_ICUDATA_NAME).dll
26 # Must be provided by whoever runs this makefile.
27 # Is the directory containing this file (makedata.mak)
28 # Is the directory into which most data is built (prior to packaging)
32 !ERROR Can't find ICUMAKE (ICU Data Make dir, should point to icu\source\data\ )!
34 !MESSAGE ICU data make path is $(ICUMAKE)
36 !IF [py -3 -c "exit(0)"]!=0
37 !MESSAGE Information: Unable to find Python 3. Data will fail to build from source.
40 # Suffixes for data files
41 .SUFFIXES : .nrm .icu .ucm .cnv .dll .dat .res .txt .c
45 # the prefix "icudt62_" for use in filenames
46 ICUPKG=$(U_ICUDATA_NAME)$(U_ICUDATA_ENDIAN_SUFFIX)
48 # need to nuke \\ for .NET...
51 ICUBLD=$(ICUOUT)\build
52 ICUBLD_PKG=$(ICUBLD)\$(ICUPKG)
56 # The root of the ICU source directory tree
59 ICUP=$(ICUP:\source\data\..\..=)
60 # In case the first one didn't do it, try this one. .NET would do the second one.
61 ICUP=$(ICUP:\source\data\\..\..=)
62 !MESSAGE ICU root path is $(ICUP)
66 # The data directory in source
68 ICUSRCDATA=$(ICUP)\source\data
69 ICUSRCDATA_RELATIVE_PATH=..\..\..
71 # Timestamp files to keep track of current build state
72 TOOLS_TS=$(ICUTMP)\tools.timestamp
73 COREDATA_TS=$(ICUTMP)\coredata.timestamp
76 # The directory that contains colfiles.mk files along with *.txt collation data files
81 # The directory that contains rbnffiles.mk files along with *.txt RBNF data files
86 # The directory that contains trfiles.mk files along with *.txt transliterator files
91 # The directory that contains resfiles.mk files along with *.txt break iterator files
97 # The source directory. Contains the source files for the common data to be built.
98 # WARNING: NOT THE SAME AS ICU_DATA environment variable. Confusing.
99 ICUDATA=$(ICUP)\source\data
103 # Destination directory for the common data DLL file.
104 # This is the same place that all of the other ICU DLLs go (the code-containing DLLs)
105 # The lib file for the data DLL goes in $(DLL_OUTPUT)/../lib/
107 !IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug"
108 DLL_OUTPUT=$(ICUP)\binARM$(UWP)
109 !ELSE IF "$(CFG)" == "x64\Release" || "$(CFG)" == "x64\Debug"
110 DLL_OUTPUT=$(ICUP)\bin64$(UWP)
111 !ELSE IF "$(UWP)" == "UWP"
112 DLL_OUTPUT=$(ICUP)\bin32$(UWP)
114 DLL_OUTPUT=$(ICUP)\bin$(UWP)
119 # The source directory for data needed for test programs.
120 TESTDATA=$(ICUP)\source\test\testdata
124 # The destination directory for the built test data .dat file
125 TESTDATAOUT=$(ICUP)\source\test\testdata\out
129 # The build directory for test data intermidiate files
130 # (Tests are NOT run from this makefile,
131 # only the data is put in place.)
132 TESTDATABLD=$(ICUP)\source\test\testdata\out\build
136 # Directory under which all of the ICU data building tools live.
138 ICUTOOLS=$(ICUP)\source\tools
139 !MESSAGE ICU tools path is $(ICUTOOLS)
143 # ARM needs to use one of the other tools, so make sure to get an usable cfg path
144 # Since tools, particularly pkggen, have architecture built-in, we made x64 on
145 # Windows be machine-independent and use those tools.
148 !IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug"
151 !MESSAGE ICU tools CFG subpath is $(CFGTOOLS)
153 # The current ICU tools need to be in the path first.
154 # x86 uses x86, x64 and arm use x64
155 !IF "$(CFG)" == "x86\Release" || "$(CFG)" == "x86\Debug"
156 PATH = $(ICUP)\bin;$(PATH)
159 PATH = $(ICUP)\bin64;$(PATH)
160 ICUPBIN=$(ICUP)\bin64
164 # This variable can be overridden to "-m static" by the project settings,
165 # if you want a static data library.
166 !IF "$(ICU_PACKAGE_MODE)"==""
167 ICU_PACKAGE_MODE=-m dll
170 # If this archive exists, build from that
171 # instead of building everything from scratch.
172 ICUDATA_SOURCE_ARCHIVE=$(ICUSRCDATA)\in\$(ICUPKG).dat
173 !IF !EXISTS("$(ICUDATA_SOURCE_ARCHIVE)")
174 # Does a big endian version exist either?
175 ICUDATA_ARCHIVE=$(ICUSRCDATA)\in\$(U_ICUDATA_NAME)b.dat
176 !IF EXISTS("$(ICUDATA_ARCHIVE)")
177 ICUDATA_SOURCE_ARCHIVE=$(ICUTMP)\$(ICUPKG).dat
179 # Nothing was usable for input
180 !UNDEF ICUDATA_SOURCE_ARCHIVE
184 !IFDEF ICUDATA_SOURCE_ARCHIVE
185 !MESSAGE ICU data source archive is $(ICUDATA_SOURCE_ARCHIVE)
188 # Common defines for both ways of building ICU's data library.
189 COMMON_ICUDATA_DEPENDENCIES="$(ICUPBIN)\pkgdata.exe" "$(ICUTMP)\icudata.res" "$(ICUP)\source\stubdata\stubdatabuilt.txt"
190 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 .
191 !IF "$(UWP)" == "UWP"
192 COMMON_ICUDATA_ARGUMENTS=$(COMMON_ICUDATA_ARGUMENTS) -u
193 !IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug"
194 COMMON_ICUDATA_ARGUMENTS=$(COMMON_ICUDATA_ARGUMENTS) -a
198 #############################################################################
201 # This target builds all the data files. The world starts here.
202 # Note: we really want the common data dll to go to $(DLL_OUTPUT), not $(ICUBLD_PKG). But specifying
203 # that here seems to cause confusion with the building of the stub library of the same name.
204 # Building the common dll in $(ICUBLD_PKG) unconditionally copies it to $(DLL_OUTPUT) too.
206 #############################################################################
207 ALL : GODATA "$(ICU_LIB_TARGET)" "$(TESTDATAOUT)\testdata.dat"
208 @echo All targets are up to date
210 !IF "$(UWP)" == "UWP"
211 @if not exist "$(ICUMAKE)\..\..\commondata\" mkdir "$(ICUMAKE)\..\..\commondata\"
212 copy "$(ICUOUT)\$(U_ICUDATA_NAME)$(U_ICUDATA_ENDIAN_SUFFIX).dat" "$(ICUMAKE)\..\..\commondata\"
216 # Three main targets: tools, core data, and test data.
217 # Keep track of whether they are built via timestamp files.
219 $(TOOLS_TS): "$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb.exe" "$(ICUTOOLS)\gencnval\$(CFGTOOLS)\gencnval.exe" "$(ICUTOOLS)\gencfu\$(CFGTOOLS)\gencfu.exe" "$(ICUTOOLS)\icupkg\$(CFGTOOLS)\icupkg.exe" "$(ICUTOOLS)\makeconv\$(CFGTOOLS)\makeconv.exe" "$(ICUPBIN)\pkgdata.exe"
220 @echo "timestamp" > $(TOOLS_TS)
222 # On Unix, Python generates at configure time a list of Makefile rules.
223 # On Windows, however, we run the Python data build script at build time instead.
224 # The alternative would be to use a preprocessor macro to generate rules for nmake.
225 # However, this approach was abandoned for reasons including:
227 # - nmake imposes more stringent restrictions on command line length.
228 # - The lack of gnumake features makes nmake file construction more complex.
229 # - Windows builds are single-threaded, giving less advantage to a Makefile approach.
231 # Currently, the entire script needs to run even for small changes to data. Maybe consider
232 # checking file-changed timestamps in Python to build only the required subset of data.
236 py -3 -B -m buildtool \
237 --mode windows-exec \
238 --src_dir "$(ICUSRCDATA)" \
239 --tool_dir "$(ICUTOOLS)" \
240 --tool_cfg "$(CFG)" \
241 --out_dir "$(ICUBLD_PKG)" \
242 --tmp_dir "$(ICUTMP)"
243 --filter_file "$(ICU_DATA_FILTER_FILE)" \
244 $(ICU_DATA_BUILDTOOL_OPTS) \
245 @echo "timestamp" > $(COREDATA_TS)
248 # The core Unicode properties files (uprops.icu, ucase.icu, ubidi.icu)
249 # are hardcoded in the common DLL and therefore not included in the data package any more.
250 # They are not built by default but need to be built for ICU4J data and for getting the .c source files
251 # when updating the Unicode data.
252 # Changed in makedata.mak revision 1.117. See Jitterbug 4497.
253 # 2010-dec Removed pnames.icu.
255 # 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
256 uni-core-data: GODATA "$(ICUBLD_PKG)\pnames.icu" "$(ICUBLD_PKG)\uprops.icu" "$(ICUBLD_PKG)\ucase.icu" "$(ICUBLD_PKG)\ubidi.icu" "$(ICUBLD_PKG)\nfc.nrm"
257 @echo Unicode .icu files built to "$(ICUBLD_PKG)"
259 # Build the ICU4J icudata.jar and testdata.jar.
260 # see icu4j-readme.txt
262 ICU4J_TZDATA="$(ICUOUT)\icu4j\icutzdata.jar"
263 ICU4J_DATA_DIRNAME=com\ibm\icu\impl\data\$(U_ICUDATA_NAME)b
264 ICU4J_TZDATA_PATHS=$(ICU4J_DATA_DIRNAME)\zoneinfo64.res $(ICU4J_DATA_DIRNAME)\metaZones.res $(ICU4J_DATA_DIRNAME)\timezoneTypes.res $(ICU4J_DATA_DIRNAME)\windowsZones.res
266 generate-data: GODATA "$(ICUOUT)\$(ICUPKG).dat" uni-core-data
267 if not exist "$(ICUOUT)\icu4j\$(ICU4J_DATA_DIRNAME)" mkdir "$(ICUOUT)\icu4j\$(ICU4J_DATA_DIRNAME)"
268 if not exist "$(ICUOUT)\icu4j\tzdata\$(ICU4J_DATA_DIRNAME)" mkdir "$(ICUOUT)\icu4j\tzdata\$(ICU4J_DATA_DIRNAME)"
269 echo pnames.icu ubidi.icu ucase.icu uprops.icu nfc.nrm > "$(ICUOUT)\icu4j\add.txt"
270 "$(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)"
271 @for %f in ($(ICU4J_TZDATA_PATHS)) do @move "$(ICUOUT)\icu4j\%f" "$(ICUOUT)\icu4j\tzdata\$(ICU4J_DATA_DIRNAME)"
273 "$(ICUOUT)\icu4j\icutzdata.jar": GODATA generate-data
274 "$(JAR)" cf "$(ICUOUT)\icu4j\icutzdata.jar" -C "$(ICUOUT)\icu4j\tzdata" "$(ICU4J_DATA_DIRNAME)"
277 # - add the uni-core-data to the ICU package
278 # - swap the ICU data
279 # - extract all data items
280 # - package them into the .jar file
281 "$(ICUOUT)\icu4j\icudata.jar": GODATA generate-data
282 "$(JAR)" cf "$(ICUOUT)\icu4j\icudata.jar" -C "$(ICUOUT)\icu4j" "$(ICU4J_DATA_DIRNAME)"
284 # Build testdata.jar:
285 # - swap the test data
286 # - extract all data items
287 # - package them into the .jar file
288 "$(ICUOUT)\icu4j\testdata.jar": GODATA "$(TESTDATAOUT)\testdata.dat"
289 if not exist "$(ICUOUT)\icu4j\com\ibm\icu\dev\data\testdata" mkdir "$(ICUOUT)\icu4j\com\ibm\icu\dev\data\testdata"
290 "$(ICUPBIN)\icupkg" "$(TESTDATAOUT)\testdata.dat" -r test.icu -x * -tb -d "$(ICUOUT)\icu4j\com\ibm\icu\dev\data\testdata"
291 "$(JAR)" cf "$(ICUOUT)\icu4j\testdata.jar" -C "$(ICUOUT)\icu4j" com\ibm\icu\dev\data\testdata
293 ## Compare to: source\data\Makefile.in and source\test\testdata\Makefile.in
295 DEBUGUTILITIESDATA_DIR=main\tests\core\src\com\ibm\icu\dev\test\util
296 DEBUGUTILITIESDATA_SRC=DebugUtilitiesData.java
298 # Build DebugUtilitiesData.java
299 "$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)\$(DEBUGUTILITIESDATA_SRC)" : {"$(ICUTOOLS)\gentest\$(CFGTOOLS)"}gentest.exe
300 if not exist "$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)" mkdir "$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)"
301 "$(ICUTOOLS)\gentest\$(CFGTOOLS)\gentest" -j -d"$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)"
303 ICU4J_DATA="$(ICUOUT)\icu4j\icudata.jar" "$(ICUOUT)\icu4j\testdata.jar" "$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)\$(DEBUGUTILITIESDATA_SRC)"
305 icu4j-data: GODATA $(ICU4J_DATA) $(ICU4J_TZDATA)
309 "$(ICU4J_ROOT)\main\shared\data\icudata.jar": "$(ICUOUT)\icu4j\icudata.jar"
310 if not exist "$(ICU4J_ROOT)\main\shared\data" mkdir "$(ICU4J_ROOT)\main\shared\data"
311 copy "$(ICUOUT)\icu4j\icudata.jar" "$(ICU4J_ROOT)\main\shared\data"
313 "$(ICU4J_ROOT)\main\shared\data\icutzdata.jar": "$(ICUOUT)\icu4j\icutzdata.jar"
314 if not exist "$(ICU4J_ROOT)\main\shared\data" mkdir "$(ICU4J_ROOT)\main\shared\data"
315 copy "$(ICUOUT)\icu4j\icutzdata.jar" "$(ICU4J_ROOT)\main\shared\data"
317 "$(ICU4J_ROOT)\main\shared\data\testdata.jar": "$(ICUOUT)\icu4j\testdata.jar"
318 if not exist "$(ICU4J_ROOT)\main\shared\data" mkdir "$(ICU4J_ROOT)\main\shared\data"
319 copy "$(ICUOUT)\icu4j\testdata.jar" "$(ICU4J_ROOT)\main\shared\data"
321 # "$(DEBUGUTILTIESDATA_OUT)"
323 "$(ICU4J_ROOT)\$(DEBUGUTILITIESDATA_DIR)\$(DEBUGUTILITIESDATA_SRC)": "$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)\$(DEBUGUTILITIESDATA_SRC)"
324 if not exist "$(ICU4J_ROOT)\$(DEBUGUTILITIESDATA_DIR)" mkdir "$(ICU4J_ROOT)\$(DEBUGUTILITIESDATA_DIR)"
325 copy "$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)\$(DEBUGUTILITIESDATA_SRC)" "$(ICU4J_ROOT)\$(DEBUGUTILITIESDATA_DIR)\$(DEBUGUTILITIESDATA_SRC)"
327 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)"
329 icu4j-data-install : GODATA $(ICU4J_DATA) $(ICU4J_TZDATA) $(ICU4J_DATA_INSTALLED)
330 @echo ICU4J data output to "$(ICU4J_ROOT)"
335 @echo ERROR ICU4J_ROOT not set
343 # testdata - nmake will invoke pkgdata, which will create testdata.dat
345 "$(TESTDATAOUT)\testdata.dat": "$(TESTDATA)\*" $(TOOLS_TS) $(COREDATA_TS)
347 @echo building testdata...
348 nmake /nologo /f "$(TESTDATA)\testdata.mak" TESTDATA=. ICUTOOLS="$(ICUTOOLS)" ICUPBIN="$(ICUPBIN)" ICUP="$(ICUP)" CFG=$(CFGTOOLS) TESTDATAOUT="$(TESTDATAOUT)" TESTDATABLD="$(TESTDATABLD)" ICUSRCDATA="$(ICUSRCDATA)" DLL_OUTPUT="$(DLL_OUTPUT)"
350 #invoke pkgdata for ICU common data
351 # pkgdata will drop all output files (.dat, .dll, .lib) into the target (ICUBLD_PKG) directory.
352 # move the .dll and .lib files to their final destination afterwards.
353 # The $(U_ICUDATA_NAME).lib and $(U_ICUDATA_NAME).exp should already be in the right place due to stubdata.
355 # 2005-may-05 Removed Unicode properties files (unorm.icu, uprops.icu, ucase.icu, ubidi.icu)
356 # from data build. See Jitterbug 4497. (makedata.mak revision 1.117)
358 !IFDEF ICUDATA_SOURCE_ARCHIVE
359 "$(ICU_LIB_TARGET)" : $(COMMON_ICUDATA_DEPENDENCIES) "$(ICUDATA_SOURCE_ARCHIVE)"
360 @echo Building icu data from $(ICUDATA_SOURCE_ARCHIVE)
362 "$(ICUPBIN)\icupkg" -x * --list "$(ICUDATA_SOURCE_ARCHIVE)" > "$(ICUTMP)\icudata.lst"
363 "$(ICUPBIN)\pkgdata" $(COMMON_ICUDATA_ARGUMENTS) "$(ICUTMP)\icudata.lst"
364 copy "$(U_ICUDATA_NAME).dll" "$(DLL_OUTPUT)"
365 -@erase "$(U_ICUDATA_NAME).dll"
366 copy "$(ICUTMP)\$(ICUPKG).dat" "$(ICUOUT)\$(U_ICUDATA_NAME)$(U_ICUDATA_ENDIAN_SUFFIX).dat"
367 -@erase "$(ICUTMP)\$(ICUPKG).dat"
369 "$(ICU_LIB_TARGET)" : $(COMMON_ICUDATA_DEPENDENCIES) $(COREDATA_TS)
370 @echo Building ICU data from scratch
372 "$(ICUPBIN)\pkgdata" $(COMMON_ICUDATA_ARGUMENTS) $(ICUTMP)\icudata.lst
373 -@erase "$(ICU_LIB_TARGET)"
374 @if not exist "$(DLL_OUTPUT)" mkdir "$(DLL_OUTPUT)"
375 copy "$(U_ICUDATA_NAME).dll" "$(ICU_LIB_TARGET)"
376 -@erase "$(U_ICUDATA_NAME).dll"
377 copy "$(ICUTMP)\$(ICUPKG).dat" "$(ICUOUT)\$(U_ICUDATA_NAME)$(U_ICUDATA_ENDIAN_SUFFIX).dat"
378 -@erase "$(ICUTMP)\$(ICUPKG).dat"
381 # utility target to create missing directories
382 # Most directories are made by Python, but still create ICUTMP
383 # so it works in the source archive
385 @if not exist "$(ICUOUT)\$(NULL)" mkdir "$(ICUOUT)"
386 @if not exist "$(ICUTMP)\$(NULL)" mkdir "$(ICUTMP)"
387 @if not exist "$(ICUOUT)\build\$(NULL)" mkdir "$(ICUOUT)\build"
388 @if not exist "$(ICUBLD_PKG)\$(NULL)" mkdir "$(ICUBLD_PKG)"
390 # utility target to send us to the right dir
394 # This is to remove all the data files
396 @echo Cleaning up the data files.
411 -@erase "region\*.res"
412 -@erase "region\*.txt"
415 @cd "$(ICUBLD_PKG)\$(ICUBRK)"
420 @cd "$(ICUBLD_PKG)\$(ICUCOL)"
423 @cd "$(ICUBLD_PKG)\$(ICURBNF)"
426 @cd "$(ICUBLD_PKG)\$(ICUTRNS)"
436 -@erase "*.timestamp"
447 @cd "$(TESTDATAOUT)\testdata"
452 # DLL version information
453 # If you modify this, modify winmode.c in pkgdata.
454 "$(ICUTMP)\icudata.res": "$(ICUSRCDATA)\misc\icudata.rc"
455 @echo Creating data DLL version information from $**
456 @rc.exe /i "..\..\..\..\common" /r /fo $@ $**
458 # Targets for prebuilt Unicode data
460 "$(ICUBLD_PKG)\pnames.icu": $(ICUSRCDATA_RELATIVE_PATH)\in\pnames.icu
461 "$(ICUPBIN)\icupkg" -tl $? $@
463 "$(ICUBLD_PKG)\ubidi.icu": $(ICUSRCDATA_RELATIVE_PATH)\in\ubidi.icu
464 "$(ICUPBIN)\icupkg" -tl $? $@
466 "$(ICUBLD_PKG)\ucase.icu": $(ICUSRCDATA_RELATIVE_PATH)\in\ucase.icu
467 "$(ICUPBIN)\icupkg" -tl $? $@
469 "$(ICUBLD_PKG)\uprops.icu": $(ICUSRCDATA_RELATIVE_PATH)\in\uprops.icu
470 "$(ICUPBIN)\icupkg" -tl $? $@
472 "$(ICUBLD_PKG)\unames.icu": $(ICUSRCDATA_RELATIVE_PATH)\in\unames.icu
473 "$(ICUPBIN)\icupkg" -tl $? $@
475 "$(ICUBLD_PKG)\nfc.nrm": $(ICUSRCDATA_RELATIVE_PATH)\in\nfc.nrm
476 "$(ICUPBIN)\icupkg" -tl $? $@
478 "$(ICUBLD_PKG)\nfkc.nrm": $(ICUSRCDATA_RELATIVE_PATH)\in\nfkc.nrm
479 "$(ICUPBIN)\icupkg" -tl $? $@
481 "$(ICUBLD_PKG)\nfkc_cf.nrm": $(ICUSRCDATA_RELATIVE_PATH)\in\nfkc_cf.nrm
482 "$(ICUPBIN)\icupkg" -tl $? $@
484 "$(ICUBLD_PKG)\uts46.nrm": $(ICUSRCDATA_RELATIVE_PATH)\in\uts46.nrm
485 "$(ICUPBIN)\icupkg" -tl $? $@
487 "$(ICUBLD_PKG)\coll\ucadata.icu": $(ICUSRCDATA_RELATIVE_PATH)\in\coll\ucadata-unihan.icu
488 "$(ICUPBIN)\icupkg" -tl $? $@
491 !IFDEF ICUDATA_ARCHIVE
492 "$(ICUDATA_SOURCE_ARCHIVE)": CREATE_DIRS $(ICUDATA_ARCHIVE) $(TOOLS_TS)
493 "$(ICUTOOLS)\icupkg\$(CFGTOOLS)\icupkg" -t$(U_ICUDATA_ENDIAN_SUFFIX) "$(ICUDATA_ARCHIVE)" "$(ICUDATA_SOURCE_ARCHIVE)"