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=icudt66
16 ##############################################################################
18 # Optionally change the name of the data file for the UWP version.
19 U_ICUDATA_NAME=icudt66
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
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
98 # The source directory. Contains the source files for the common data to be built.
99 # WARNING: NOT THE SAME AS ICU_DATA environment variable. Confusing.
100 ICUDATA=$(ICUP)\source\data
104 # Destination directory for the common data DLL file.
105 # This is the same place that all of the other ICU DLLs go (the code-containing DLLs)
106 # The lib file for the data DLL goes in $(DLL_OUTPUT)/../lib/
108 !IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug"
109 DLL_OUTPUT=$(ICUP)\binARM$(UWP)
110 !ELSE IF "$(CFG)" == "ARM64\Release" || "$(CFG)" == "ARM64\Debug"
111 DLL_OUTPUT=$(ICUP)\binARM64$(UWP)
112 !ELSE IF "$(CFG)" == "x64\Release" || "$(CFG)" == "x64\Debug"
113 DLL_OUTPUT=$(ICUP)\bin64$(UWP)
114 !ELSE IF "$(UWP)" == "UWP"
115 DLL_OUTPUT=$(ICUP)\bin32$(UWP)
117 DLL_OUTPUT=$(ICUP)\bin$(UWP)
119 !MESSAGE ICU data DLL_OUTPUT path is $(DLL_OUTPUT)
123 # The source directory for data needed for test programs.
124 TESTDATA=$(ICUP)\source\test\testdata
128 # The destination directory for the built test data .dat file
129 TESTDATAOUT=$(ICUP)\source\test\testdata\out
133 # The build directory for test data intermediate files
134 # (Tests are NOT run from this makefile,
135 # only the data is put in place.)
136 TESTDATABLD=$(ICUP)\source\test\testdata\out\build
140 # Directory under which all of the ICU data building tools live.
142 ICUTOOLS=$(ICUP)\source\tools
143 !MESSAGE ICU tools path is $(ICUTOOLS)
146 # In order to support cross-compiling for ARM/ARM64 using the x64 tools
147 # we need to know if we're building the ARM/ARM64 data DLL, otherwise
148 # the existence of the x64 bits will cause us to think we are already done.
149 # Note: This is only for the "regular" builds, the UWP builds have a separate project file entirely.
152 !IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug"
154 ARM_CROSSBUILD_TS=$(ICUTMP)\$(ARM_CROSS_BUILD).timestamp
155 !ELSE IF "$(CFG)" == "ARM64\Release" || "$(CFG)" == "ARM64\Debug"
156 ARM_CROSS_BUILD=ARM64
157 ARM_CROSSBUILD_TS=$(ICUTMP)\$(ARM_CROSS_BUILD).timestamp
163 # Generally the tools want to run on the same architecture as is being built.
164 # Thus ARM and ARM64 need to use another build of the other tools, so make sure to get an usable cfg path.
165 # Since tools, particularly pkggen, have architecture built-in, we made x64 on
166 # Windows be machine-independent and use those tools.
168 !IF "$(ARM_CROSS_BUILD)" == ""
173 !MESSAGE ICU tools CFG subpath is $(CFGTOOLS)
176 # The current ICU tools need to be in the path first.
177 # x86 uses x86; x64, arm, and arm64 use x64
178 !IF "$(CFG)" == "x86\Release" || "$(CFG)" == "x86\Debug"
179 PATH = $(ICUP)\bin;$(PATH)
182 PATH = $(ICUP)\bin64;$(PATH)
183 ICUPBIN=$(ICUP)\bin64
187 # This variable can be overridden to "-m static" by the project settings,
188 # if you want a static data library.
189 !IF "$(ICU_PACKAGE_MODE)"==""
190 ICU_PACKAGE_MODE=-m dll
193 # If this archive exists, build from that
194 # instead of building everything from scratch.
195 ICUDATA_SOURCE_ARCHIVE=$(ICUSRCDATA)\in\$(ICUPKG).dat
196 !IF !EXISTS("$(ICUDATA_SOURCE_ARCHIVE)")
197 # Does a big endian version exist either?
198 ICUDATA_ARCHIVE=$(ICUSRCDATA)\in\$(U_ICUDATA_NAME)b.dat
199 !IF EXISTS("$(ICUDATA_ARCHIVE)")
200 ICUDATA_SOURCE_ARCHIVE=$(ICUTMP)\$(ICUPKG).dat
202 # Nothing was usable for input
203 !UNDEF ICUDATA_SOURCE_ARCHIVE
207 !IFDEF ICUDATA_SOURCE_ARCHIVE
208 !MESSAGE ICU data source archive is $(ICUDATA_SOURCE_ARCHIVE)
211 # Common defines for both ways of building ICU's data library.
212 COMMON_ICUDATA_DEPENDENCIES="$(ICUPBIN)\pkgdata.exe" "$(ICUTMP)\icudata.res" "$(ICUP)\source\stubdata\stubdatabuilt.txt"
213 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 .
214 !IF "$(UWP)" == "UWP"
215 COMMON_ICUDATA_ARGUMENTS=$(COMMON_ICUDATA_ARGUMENTS) -u
217 !IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug"
218 COMMON_ICUDATA_ARGUMENTS=$(COMMON_ICUDATA_ARGUMENTS) -a ARM
220 !IF "$(CFG)" == "ARM64\Release" || "$(CFG)" == "ARM64\Debug"
221 COMMON_ICUDATA_ARGUMENTS=$(COMMON_ICUDATA_ARGUMENTS) -a ARM64
224 #############################################################################
227 # This target builds all the data files. The world starts here.
228 # Note: we really want the common data dll to go to $(DLL_OUTPUT), not $(ICUBLD_PKG). But specifying
229 # that here seems to cause confusion with the building of the stub library of the same name.
230 # Building the common dll in $(ICUBLD_PKG) unconditionally copies it to $(DLL_OUTPUT) too.
232 #############################################################################
233 !IF "$(ARM_CROSS_BUILD)" == ""
234 ALL : GODATA "$(ICU_LIB_TARGET)" "$(TESTDATAOUT)\testdata.dat"
235 @echo All targets are up to date
237 !IF "$(UWP)" == "UWP"
238 @if not exist "$(ICUMAKE)\..\..\commondata\" mkdir "$(ICUMAKE)\..\..\commondata\"
239 copy "$(ICUOUT)\$(U_ICUDATA_NAME)$(U_ICUDATA_ENDIAN_SUFFIX).dat" "$(ICUMAKE)\..\..\commondata\"
243 ALL : GODATA "$(ICU_LIB_TARGET)" "$(TESTDATAOUT)\testdata.dat" $(ARM_CROSSBUILD_TS)
244 @echo All targets are up to date
248 # Three main targets: tools, core data, and test data.
249 # Keep track of whether they are built via timestamp files.
251 $(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"
252 @echo "timestamp" > $(TOOLS_TS)
254 # On Unix, Python generates at configure time a list of Makefile rules.
255 # On Windows, however, we run the Python data build script at build time instead.
256 # The alternative would be to use a preprocessor macro to generate rules for nmake.
257 # However, this approach was abandoned for reasons including:
259 # - nmake imposes more stringent restrictions on command line length.
260 # - The lack of gnumake features makes nmake file construction more complex.
261 # - Windows builds are single-threaded, giving less advantage to a Makefile approach.
263 # Currently, the entire script needs to run even for small changes to data. Maybe consider
264 # checking file-changed timestamps in Python to build only the required subset of data.
268 set PYTHONPATH=$(ICUP)\source\python;%PYTHONPATH%
269 py -3 -B -m icutools.databuilder \
270 --mode windows-exec \
271 --src_dir "$(ICUSRCDATA)" \
272 --tool_dir "$(ICUTOOLS)" \
273 --tool_cfg "$(CFGTOOLS)" \
274 --out_dir "$(ICUBLD_PKG)" \
275 --tmp_dir "$(ICUTMP)" \
276 --filter_file "$(ICU_DATA_FILTER_FILE)" \
277 $(ICU_DATA_BUILDTOOL_OPTS)
278 @echo "timestamp" > $(COREDATA_TS)
281 # The core Unicode properties files (uprops.icu, ucase.icu, ubidi.icu)
282 # are hardcoded in the common DLL and therefore not included in the data package any more.
283 # They are not built by default but need to be built for ICU4J data and for getting the .c source files
284 # when updating the Unicode data.
285 # Changed in makedata.mak revision 1.117. See Jitterbug 4497.
286 # 2010-dec Removed pnames.icu.
288 # 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
289 uni-core-data: GODATA "$(ICUBLD_PKG)\pnames.icu" "$(ICUBLD_PKG)\uprops.icu" "$(ICUBLD_PKG)\ucase.icu" "$(ICUBLD_PKG)\ubidi.icu" "$(ICUBLD_PKG)\nfc.nrm"
290 @echo Unicode .icu files built to "$(ICUBLD_PKG)"
292 # Build the ICU4J icudata.jar and testdata.jar.
293 # see icu4j-readme.txt
295 ICU4J_TZDATA="$(ICUOUT)\icu4j\icutzdata.jar"
296 ICU4J_DATA_DIRNAME=com\ibm\icu\impl\data\$(U_ICUDATA_NAME)b
297 ICU4J_TZDATA_PATHS=$(ICU4J_DATA_DIRNAME)\zoneinfo64.res $(ICU4J_DATA_DIRNAME)\metaZones.res $(ICU4J_DATA_DIRNAME)\timezoneTypes.res $(ICU4J_DATA_DIRNAME)\windowsZones.res
299 generate-data: GODATA "$(ICUOUT)\$(ICUPKG).dat" uni-core-data
300 if not exist "$(ICUOUT)\icu4j\$(ICU4J_DATA_DIRNAME)" mkdir "$(ICUOUT)\icu4j\$(ICU4J_DATA_DIRNAME)"
301 if not exist "$(ICUOUT)\icu4j\tzdata\$(ICU4J_DATA_DIRNAME)" mkdir "$(ICUOUT)\icu4j\tzdata\$(ICU4J_DATA_DIRNAME)"
302 echo pnames.icu ubidi.icu ucase.icu uprops.icu nfc.nrm > "$(ICUOUT)\icu4j\add.txt"
303 "$(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)"
304 @for %f in ($(ICU4J_TZDATA_PATHS)) do @move "$(ICUOUT)\icu4j\%f" "$(ICUOUT)\icu4j\tzdata\$(ICU4J_DATA_DIRNAME)"
306 "$(ICUOUT)\icu4j\icutzdata.jar": GODATA generate-data
307 "$(JAR)" cf "$(ICUOUT)\icu4j\icutzdata.jar" -C "$(ICUOUT)\icu4j\tzdata" "$(ICU4J_DATA_DIRNAME)"
310 # - add the uni-core-data to the ICU package
311 # - swap the ICU data
312 # - extract all data items
313 # - package them into the .jar file
314 "$(ICUOUT)\icu4j\icudata.jar": GODATA generate-data
315 "$(JAR)" cf "$(ICUOUT)\icu4j\icudata.jar" -C "$(ICUOUT)\icu4j" "$(ICU4J_DATA_DIRNAME)"
317 # Build testdata.jar:
318 # - swap the test data
319 # - extract all data items
320 # - package them into the .jar file
321 "$(ICUOUT)\icu4j\testdata.jar": GODATA "$(TESTDATAOUT)\testdata.dat"
322 if not exist "$(ICUOUT)\icu4j\com\ibm\icu\dev\data\testdata" mkdir "$(ICUOUT)\icu4j\com\ibm\icu\dev\data\testdata"
323 "$(ICUPBIN)\icupkg" "$(TESTDATAOUT)\testdata.dat" -r test.icu -x * -tb -d "$(ICUOUT)\icu4j\com\ibm\icu\dev\data\testdata"
324 "$(JAR)" cf "$(ICUOUT)\icu4j\testdata.jar" -C "$(ICUOUT)\icu4j" com\ibm\icu\dev\data\testdata
326 ## Compare to: source\data\Makefile.in and source\test\testdata\Makefile.in
328 DEBUGUTILITIESDATA_DIR=main\tests\core\src\com\ibm\icu\dev\test\util
329 DEBUGUTILITIESDATA_SRC=DebugUtilitiesData.java
331 # Build DebugUtilitiesData.java
332 "$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)\$(DEBUGUTILITIESDATA_SRC)" : {"$(ICUTOOLS)\gentest\$(CFGTOOLS)"}gentest.exe
333 if not exist "$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)" mkdir "$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)"
334 "$(ICUTOOLS)\gentest\$(CFGTOOLS)\gentest" -j -d"$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)"
336 ICU4J_DATA="$(ICUOUT)\icu4j\icudata.jar" "$(ICUOUT)\icu4j\testdata.jar" "$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)\$(DEBUGUTILITIESDATA_SRC)"
338 icu4j-data: GODATA $(ICU4J_DATA) $(ICU4J_TZDATA)
342 "$(ICU4J_ROOT)\main\shared\data\icudata.jar": "$(ICUOUT)\icu4j\icudata.jar"
343 if not exist "$(ICU4J_ROOT)\main\shared\data" mkdir "$(ICU4J_ROOT)\main\shared\data"
344 copy "$(ICUOUT)\icu4j\icudata.jar" "$(ICU4J_ROOT)\main\shared\data"
346 "$(ICU4J_ROOT)\main\shared\data\icutzdata.jar": "$(ICUOUT)\icu4j\icutzdata.jar"
347 if not exist "$(ICU4J_ROOT)\main\shared\data" mkdir "$(ICU4J_ROOT)\main\shared\data"
348 copy "$(ICUOUT)\icu4j\icutzdata.jar" "$(ICU4J_ROOT)\main\shared\data"
350 "$(ICU4J_ROOT)\main\shared\data\testdata.jar": "$(ICUOUT)\icu4j\testdata.jar"
351 if not exist "$(ICU4J_ROOT)\main\shared\data" mkdir "$(ICU4J_ROOT)\main\shared\data"
352 copy "$(ICUOUT)\icu4j\testdata.jar" "$(ICU4J_ROOT)\main\shared\data"
354 # "$(DEBUGUTILTIESDATA_OUT)"
356 "$(ICU4J_ROOT)\$(DEBUGUTILITIESDATA_DIR)\$(DEBUGUTILITIESDATA_SRC)": "$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)\$(DEBUGUTILITIESDATA_SRC)"
357 if not exist "$(ICU4J_ROOT)\$(DEBUGUTILITIESDATA_DIR)" mkdir "$(ICU4J_ROOT)\$(DEBUGUTILITIESDATA_DIR)"
358 copy "$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)\$(DEBUGUTILITIESDATA_SRC)" "$(ICU4J_ROOT)\$(DEBUGUTILITIESDATA_DIR)\$(DEBUGUTILITIESDATA_SRC)"
360 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)"
362 icu4j-data-install : GODATA $(ICU4J_DATA) $(ICU4J_TZDATA) $(ICU4J_DATA_INSTALLED)
363 @echo ICU4J data output to "$(ICU4J_ROOT)"
368 @echo ERROR ICU4J_ROOT not set
376 # testdata - nmake will invoke pkgdata, which will create testdata.dat
378 "$(TESTDATAOUT)\testdata.dat": "$(TESTDATA)\*" $(TOOLS_TS) $(COREDATA_TS)
380 @echo building testdata...
381 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)"
383 #invoke pkgdata for ICU common data
384 # pkgdata will drop all output files (.dat, .dll, .lib) into the target (ICUBLD_PKG) directory.
385 # move the .dll and .lib files to their final destination afterwards.
386 # The $(U_ICUDATA_NAME).lib and $(U_ICUDATA_NAME).exp should already be in the right place due to stubdata.
388 # 2005-may-05 Removed Unicode properties files (unorm.icu, uprops.icu, ucase.icu, ubidi.icu)
389 # from data build. See Jitterbug 4497. (makedata.mak revision 1.117)
391 !IFDEF ICUDATA_SOURCE_ARCHIVE
392 "$(ICU_LIB_TARGET)" : $(COMMON_ICUDATA_DEPENDENCIES) "$(ICUDATA_SOURCE_ARCHIVE)"
393 @echo Building icu data from $(ICUDATA_SOURCE_ARCHIVE)
395 "$(ICUPBIN)\icupkg" -x * --list "$(ICUDATA_SOURCE_ARCHIVE)" > "$(ICUTMP)\icudata.lst"
396 "$(ICUPBIN)\pkgdata" $(COMMON_ICUDATA_ARGUMENTS) "$(ICUTMP)\icudata.lst"
397 copy "$(U_ICUDATA_NAME).dll" "$(DLL_OUTPUT)"
398 -@erase "$(U_ICUDATA_NAME).dll"
399 copy "$(ICUTMP)\$(ICUPKG).dat" "$(ICUOUT)\$(U_ICUDATA_NAME)$(U_ICUDATA_ENDIAN_SUFFIX).dat"
400 -@erase "$(ICUTMP)\$(ICUPKG).dat"
402 "$(ICU_LIB_TARGET)" : $(COMMON_ICUDATA_DEPENDENCIES) $(COREDATA_TS)
403 @echo Building ICU data from scratch
405 "$(ICUPBIN)\pkgdata" $(COMMON_ICUDATA_ARGUMENTS) $(ICUTMP)\icudata.lst
406 -@erase "$(ICU_LIB_TARGET)"
407 @if not exist "$(DLL_OUTPUT)" mkdir "$(DLL_OUTPUT)"
408 copy "$(U_ICUDATA_NAME).dll" "$(ICU_LIB_TARGET)"
409 -@erase "$(U_ICUDATA_NAME).dll"
410 copy "$(ICUTMP)\$(ICUPKG).dat" "$(ICUOUT)\$(U_ICUDATA_NAME)$(U_ICUDATA_ENDIAN_SUFFIX).dat"
411 -@erase "$(ICUTMP)\$(ICUPKG).dat"
414 "$(ARM_CROSSBUILD_TS)" : $(COMMON_ICUDATA_DEPENDENCIES) "$(ICU_LIB_TARGET)"
415 @echo Building ICU data for "$(ARM_CROSS_BUILD)" from x64
417 "$(ICUPBIN)\pkgdata" $(COMMON_ICUDATA_ARGUMENTS) $(ICUTMP)\icudata.lst
418 -@erase "$(ICU_LIB_TARGET)"
419 @if not exist "$(DLL_OUTPUT)" mkdir "$(DLL_OUTPUT)"
420 copy "$(U_ICUDATA_NAME).dll" "$(ICU_LIB_TARGET)"
421 -@erase "$(U_ICUDATA_NAME).dll"
422 copy "$(ICUTMP)\$(ICUPKG).dat" "$(ICUOUT)\$(U_ICUDATA_NAME)$(U_ICUDATA_ENDIAN_SUFFIX).dat"
423 -@erase "$(ICUTMP)\$(ICUPKG).dat"
424 @echo "timestamp" > $(ARM_CROSSBUILD_TS)
426 # utility target to create missing directories
427 # Most directories are made by Python, but still create ICUTMP
428 # so it works in the source archive
430 @if not exist "$(ICUOUT)\$(NULL)" mkdir "$(ICUOUT)"
431 @if not exist "$(ICUTMP)\$(NULL)" mkdir "$(ICUTMP)"
432 @if not exist "$(ICUOUT)\build\$(NULL)" mkdir "$(ICUOUT)\build"
433 @if not exist "$(ICUBLD_PKG)\$(NULL)" mkdir "$(ICUBLD_PKG)"
434 @if not exist "$(TESTDATAOUT)" mkdir "$(TESTDATAOUT)"
436 # utility target to send us to the right dir
440 # This is to remove all the data files
442 @echo Cleaning up the data files.
444 -@erase "$(ICUOUT)\*.dat"
445 @rmdir $(ICUBLD) /s /q
446 @rmdir $(ICUTMP) /s /q
447 @rmdir $(TESTDATAOUT) /s /q
449 # DLL version information
450 # If you modify this, modify winmode.c in pkgdata.
451 "$(ICUTMP)\icudata.res": "$(ICUSRCDATA)\misc\icudata.rc"
452 @echo Creating data DLL version information from $**
453 @rc.exe /i "..\..\..\..\common" /r /fo $@ $**
455 # Targets for prebuilt Unicode data
457 "$(ICUBLD_PKG)\pnames.icu": $(ICUSRCDATA_RELATIVE_PATH)\in\pnames.icu
458 "$(ICUPBIN)\icupkg" -tl $? $@
460 "$(ICUBLD_PKG)\ubidi.icu": $(ICUSRCDATA_RELATIVE_PATH)\in\ubidi.icu
461 "$(ICUPBIN)\icupkg" -tl $? $@
463 "$(ICUBLD_PKG)\ucase.icu": $(ICUSRCDATA_RELATIVE_PATH)\in\ucase.icu
464 "$(ICUPBIN)\icupkg" -tl $? $@
466 "$(ICUBLD_PKG)\uprops.icu": $(ICUSRCDATA_RELATIVE_PATH)\in\uprops.icu
467 "$(ICUPBIN)\icupkg" -tl $? $@
469 "$(ICUBLD_PKG)\unames.icu": $(ICUSRCDATA_RELATIVE_PATH)\in\unames.icu
470 "$(ICUPBIN)\icupkg" -tl $? $@
472 "$(ICUBLD_PKG)\nfc.nrm": $(ICUSRCDATA_RELATIVE_PATH)\in\nfc.nrm
473 "$(ICUPBIN)\icupkg" -tl $? $@
475 "$(ICUBLD_PKG)\nfkc.nrm": $(ICUSRCDATA_RELATIVE_PATH)\in\nfkc.nrm
476 "$(ICUPBIN)\icupkg" -tl $? $@
478 "$(ICUBLD_PKG)\nfkc_cf.nrm": $(ICUSRCDATA_RELATIVE_PATH)\in\nfkc_cf.nrm
479 "$(ICUPBIN)\icupkg" -tl $? $@
481 "$(ICUBLD_PKG)\uts46.nrm": $(ICUSRCDATA_RELATIVE_PATH)\in\uts46.nrm
482 "$(ICUPBIN)\icupkg" -tl $? $@
484 "$(ICUBLD_PKG)\coll\ucadata.icu": $(ICUSRCDATA_RELATIVE_PATH)\in\coll\ucadata-unihan.icu
485 "$(ICUPBIN)\icupkg" -tl $? $@
488 !IFDEF ICUDATA_ARCHIVE
489 "$(ICUDATA_SOURCE_ARCHIVE)": CREATE_DIRS $(ICUDATA_ARCHIVE) $(TOOLS_TS)
490 "$(ICUTOOLS)\icupkg\$(CFGTOOLS)\icupkg" -t$(U_ICUDATA_ENDIAN_SUFFIX) "$(ICUDATA_ARCHIVE)" "$(ICUDATA_SOURCE_ARCHIVE)"