makedata.mak (21081B)
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 8 # invoke with 9 # nmake /f makedata.mak icumake=$(ProjectDir) 10 # 11 # 12/10/1999 weiv Created 12 13 ############################################################################## 14 # Keep the following in sync with the version - see common/unicode/uvernum.h 15 U_ICUDATA_NAME=icudt78 16 ############################################################################## 17 !IF "$(UWP)" == "UWP" 18 # Optionally change the name of the data file for the UWP version. 19 U_ICUDATA_NAME=icudt78 20 !ENDIF 21 U_ICUDATA_ENDIAN_SUFFIX=l 22 UNICODE_VERSION=17.0 23 ICU_LIB_TARGET=$(DLL_OUTPUT)\$(U_ICUDATA_NAME).dll 24 25 # ICUMAKE 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) 29 # Is icu\source\data\ 30 # 31 !IF "$(ICUMAKE)"=="" 32 !ERROR Can't find ICUMAKE (ICU Data Make dir, should point to icu\source\data\ )! 33 !ENDIF 34 !MESSAGE ICU data make path is $(ICUMAKE) 35 36 !IF [py -3 -c "exit(0)"]!=0 37 !MESSAGE Information: Unable to find Python 3. Data will fail to build from source. 38 !ENDIF 39 40 # Suffixes for data files 41 .SUFFIXES : .nrm .icu .ucm .cnv .dll .dat .res .txt .c 42 43 ICUOUT=$(ICUMAKE)\out 44 45 # the prefix "icudt62_" for use in filenames 46 ICUPKG=$(U_ICUDATA_NAME)$(U_ICUDATA_ENDIAN_SUFFIX) 47 48 # need to nuke \\ for .NET... 49 ICUOUT=$(ICUOUT:\\=\) 50 51 ICUBLD=$(ICUOUT)\build 52 ICUBLD_PKG=$(ICUBLD)\$(ICUPKG) 53 ICUTMP=$(ICUOUT)\tmp 54 55 # ICUP 56 # The root of the ICU source directory tree 57 # 58 ICUP=$(ICUMAKE)\..\.. 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) 63 64 65 # ICUSRCDATA 66 # The data directory in source 67 # 68 ICUSRCDATA=$(ICUP)\source\data 69 ICUSRCDATA_RELATIVE_PATH=..\..\.. 70 71 # Timestamp files to keep track of current build state 72 TOOLS_TS=$(ICUTMP)\tools.timestamp 73 COREDATA_TS=$(ICUTMP)\coredata.timestamp 74 ARM_CROSSBUILD_TS= 75 76 # ICUCOL 77 # The directory that contains *.txt collation data files 78 # 79 ICUCOL=coll 80 81 # ICURBNF 82 # The directory that contains *.txt RBNF data files 83 # 84 ICURBNF=rbnf 85 86 # ICUTRNS 87 # The directory that contains *.txt transliterator files 88 # 89 ICUTRNS=translit 90 91 # ICUBRK 92 # The directory that contains *.txt break iterator files 93 # 94 ICUBRK=brkitr 95 96 # 97 # ICUDATA 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 101 102 # 103 # DLL_OUTPUT 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/ 107 # 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) 116 !ELSE 117 DLL_OUTPUT=$(ICUP)\bin$(UWP) 118 !ENDIF 119 !MESSAGE ICU data DLL_OUTPUT path is $(DLL_OUTPUT) 120 121 # 122 # TESTDATA 123 # The source directory for data needed for test programs. 124 TESTDATA=$(ICUP)\source\test\testdata 125 126 # 127 # TESTDATAOUT 128 # The destination directory for the built test data .dat file 129 TESTDATAOUT=$(ICUP)\source\test\testdata\out 130 131 # 132 # TESTDATABLD 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 137 138 # 139 # ICUTOOLS 140 # Directory under which all of the ICU data building tools live. 141 # 142 ICUTOOLS=$(ICUP)\source\tools 143 !MESSAGE ICU tools path is $(ICUTOOLS) 144 145 NATIVE_ARM= 146 !IF "$(PROCESSOR_ARCHITECTURE)" == "ARM64" || "$(PROCESSOR_ARCHITEW6432)" == "ARM64" 147 NATIVE_ARM=ARM64 148 !ELSE IF "$(PROCESSOR_ARCHITECTURE)" == "ARM" || "$(PROCESSOR_ARCHITEW6432)" == "ARM" 149 NATIVE_ARM=ARM 150 !ENDIF 151 152 # ARM_CROSS_BUILD 153 # In order to support cross-compiling for ARM/ARM64 using the x64 tools 154 # we need to know if we're building the ARM/ARM64 data DLL, otherwise 155 # the existence of the x64 bits will cause us to think we are already done. 156 # Note: This is only for the "regular" builds, the UWP builds have a separate project file entirely. 157 ARM_CROSS_BUILD= 158 !IF "$(UWP)" == "" && "$(NATIVE_ARM)" == "" 159 !IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug" 160 ARM_CROSS_BUILD=ARM 161 ARM_CROSSBUILD_TS=$(ICUTMP)\$(ARM_CROSS_BUILD).timestamp 162 !ELSE IF "$(CFG)" == "ARM64\Release" || "$(CFG)" == "ARM64\Debug" 163 ARM_CROSS_BUILD=ARM64 164 ARM_CROSSBUILD_TS=$(ICUTMP)\$(ARM_CROSS_BUILD).timestamp 165 !ENDIF 166 !ENDIF 167 168 # 169 # TOOLS CFG PATH 170 # Generally the tools want to run on the same architecture as is being built. 171 # Thus ARM and ARM64 need to use another build of the other tools, so make sure to get an usable CFG path. 172 # Since tools, particularly pkggen, have architecture built-in, we made x64 on 173 # Windows be machine-independent and use those tools for both ARM and ARM64. 174 # Note: If we're building ARM/ARM64 Debug, then we'll use the x64 Debug tools. 175 # If we're building ARM/ARM64 Release, then we'll use the x64 Release tools. 176 # 177 !IF "$(ARM_CROSS_BUILD)" == "" 178 CFGTOOLS=$(CFG) 179 !ELSE 180 !IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM64\Release" 181 CFGTOOLS=x64\Release 182 !ENDIF 183 !IF "$(CFG)" == "ARM\Debug" || "$(CFG)" == "ARM64\Debug" 184 CFGTOOLS=x64\Debug 185 !ENDIF 186 !ENDIF 187 !MESSAGE ICU tools CFG subpath is $(CFGTOOLS) 188 189 190 # The current ICU tools need to be in the path first. 191 # x86 uses x86; x64, arm, and arm64 use x64 192 !IF "$(CFG)" == "x86\Release" || "$(CFG)" == "x86\Debug" 193 PATH = $(ICUP)\bin;$(PATH) 194 ICUPBIN=$(ICUP)\bin 195 # Use these path whether or not it's UWP build. 196 !ELSE IF "$(NATIVE_ARM)" != "" 197 !IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug" 198 PATH = $(ICUP)\binARM;$(PATH) 199 ICUPBIN=$(ICUP)\binARM 200 !ELSE IF "$(CFG)" == "ARM64\Release" || "$(CFG)" == "ARM64\Debug" 201 PATH = $(ICUP)\binARM64;$(PATH) 202 ICUPBIN=$(ICUP)\binARM64 203 !ELSE 204 !ERROR Cross-build from ARM to x86 is not supported! 205 !ENDIF 206 # Build x86_64 or cross-build ARM 207 !ELSE 208 PATH = $(ICUP)\bin64;$(PATH) 209 ICUPBIN=$(ICUP)\bin64 210 !ENDIF 211 212 213 # This variable can be overridden to "-m static" by the project settings, 214 # if you want a static data library. 215 !IF "$(ICU_PACKAGE_MODE)"=="" 216 ICU_PACKAGE_MODE=-m dll 217 !ENDIF 218 219 # If this archive exists, build from that 220 # instead of building everything from scratch. 221 ICUDATA_SOURCE_ARCHIVE=$(ICUSRCDATA)\in\$(ICUPKG).dat 222 !IF !EXISTS("$(ICUDATA_SOURCE_ARCHIVE)") 223 # Does a big endian version exist either? 224 ICUDATA_ARCHIVE=$(ICUSRCDATA)\in\$(U_ICUDATA_NAME)b.dat 225 !IF EXISTS("$(ICUDATA_ARCHIVE)") 226 ICUDATA_SOURCE_ARCHIVE=$(ICUTMP)\$(ICUPKG).dat 227 !ELSE 228 # Nothing was usable for input 229 !UNDEF ICUDATA_SOURCE_ARCHIVE 230 !ENDIF 231 !ENDIF 232 233 !IFDEF ICUDATA_SOURCE_ARCHIVE 234 !MESSAGE ICU data source archive is $(ICUDATA_SOURCE_ARCHIVE) 235 !ENDIF 236 237 # Common defines for both ways of building ICU's data library. 238 COMMON_ICUDATA_DEPENDENCIES="$(ICUPBIN)\pkgdata.exe" "$(ICUTMP)\icudata.res" "$(ICUP)\source\stubdata\stubdatabuilt.txt" 239 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 . 240 !IF "$(UWP)" == "UWP" 241 COMMON_ICUDATA_ARGUMENTS=$(COMMON_ICUDATA_ARGUMENTS) -u 242 !ENDIF 243 !IF "$(CFG)" == "x64\Release" || "$(CFG)" == "x64\Debug" 244 COMMON_ICUDATA_ARGUMENTS=$(COMMON_ICUDATA_ARGUMENTS) -a X64 245 !ENDIF 246 !IF "$(CFG)" == "Release" || "$(CFG)" == "release" || "$(CFG)" == "Debug" || "$(CFG)" == "debug" || "$(CFG)" == "x86\Release" || "$(CFG)" == "x86\Debug" 247 COMMON_ICUDATA_ARGUMENTS=$(COMMON_ICUDATA_ARGUMENTS) -a X86 248 !ENDIF 249 !IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug" 250 COMMON_ICUDATA_ARGUMENTS=$(COMMON_ICUDATA_ARGUMENTS) -a ARM 251 !ENDIF 252 !IF "$(CFG)" == "ARM64\Release" || "$(CFG)" == "ARM64\Debug" 253 COMMON_ICUDATA_ARGUMENTS=$(COMMON_ICUDATA_ARGUMENTS) -a ARM64 254 !ENDIF 255 256 ############################################################################# 257 # 258 # ALL 259 # This target builds all the data files. The world starts here. 260 # Note: we really want the common data dll to go to $(DLL_OUTPUT), not $(ICUBLD_PKG). But specifying 261 # that here seems to cause confusion with the building of the stub library of the same name. 262 # Building the common dll in $(ICUBLD_PKG) unconditionally copies it to $(DLL_OUTPUT) too. 263 # 264 ############################################################################# 265 !IF "$(ARM_CROSS_BUILD)" == "" 266 ALL : GODATA "$(ICU_LIB_TARGET)" "$(TESTDATAOUT)\testdata.dat" 267 @echo All targets are up to date 268 269 !IF "$(UWP)" == "UWP" 270 @if not exist "$(ICUMAKE)\..\..\commondata\" mkdir "$(ICUMAKE)\..\..\commondata\" 271 copy "$(ICUOUT)\$(U_ICUDATA_NAME)$(U_ICUDATA_ENDIAN_SUFFIX).dat" "$(ICUMAKE)\..\..\commondata\" 272 !ENDIF 273 274 !ELSE 275 ALL : GODATA "$(ICU_LIB_TARGET)" "$(TESTDATAOUT)\testdata.dat" $(ARM_CROSSBUILD_TS) 276 @echo All targets are up to date 277 278 !ENDIF 279 280 # Verbose output when building the data for Debug builds. 281 !IF "$(DEBUG)" == "true" 282 ICU_DATA_BUILD_VERBOSE=--verbose 283 !ELSE 284 ICU_DATA_BUILD_VERBOSE= 285 !ENDIF 286 287 # Three main targets: tools, core data, and test data. 288 # Keep track of whether they are built via timestamp files. 289 290 $(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" 291 @echo "timestamp" > $(TOOLS_TS) 292 293 # On Unix, Python generates at configure time a list of Makefile rules. 294 # On Windows, however, we run the Python data build script at build time instead. 295 # The alternative would be to use a preprocessor macro to generate rules for nmake. 296 # However, this approach was abandoned for reasons including: 297 # 298 # - nmake imposes more stringent restrictions on command line length. 299 # - The lack of gnumake features makes nmake file construction more complex. 300 # - Windows builds are single-threaded, giving less advantage to a Makefile approach. 301 # 302 # Currently, the entire script needs to run even for small changes to data. Maybe consider 303 # checking file-changed timestamps in Python to build only the required subset of data. 304 305 $(COREDATA_TS): 306 @cd "$(ICUSRCDATA)" 307 set PYTHONPATH=$(ICUP)\source\python;%PYTHONPATH% 308 py -3 -B -m icutools.databuilder \ 309 --mode windows-exec \ 310 --src_dir "$(ICUSRCDATA)" \ 311 --tool_dir "$(ICUTOOLS)" \ 312 --tool_cfg "$(CFGTOOLS)" \ 313 --out_dir "$(ICUBLD_PKG)" \ 314 --tmp_dir "$(ICUTMP)" \ 315 --filter_file "$(ICU_DATA_FILTER_FILE)" \ 316 $(ICU_DATA_BUILD_VERBOSE) \ 317 $(ICU_DATA_BUILDTOOL_OPTS) 318 @echo "timestamp" > $(COREDATA_TS) 319 320 321 # The core Unicode properties files (uprops.icu, ucase.icu, ubidi.icu) 322 # are hardcoded in the common DLL and therefore not included in the data package any more. 323 # They are not built by default but need to be built for ICU4J data and for getting the .c source files 324 # when updating the Unicode data. 325 # Changed in makedata.mak revision 1.117. See Jitterbug 4497. 326 # 2010-dec Removed pnames.icu. 327 # Command line: 328 # 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 329 uni-core-data: GODATA "$(ICUBLD_PKG)\pnames.icu" "$(ICUBLD_PKG)\uprops.icu" "$(ICUBLD_PKG)\ucase.icu" "$(ICUBLD_PKG)\ubidi.icu" "$(ICUBLD_PKG)\nfc.nrm" 330 @echo Unicode .icu files built to "$(ICUBLD_PKG)" 331 332 # Build the ICU4J icudata.jar and testdata.jar. 333 # see icu4j-readme.txt 334 335 ICU4J_TZDATA="$(ICUOUT)\icu4j\icutzdata.jar" 336 ICU4J_DATA_DIRNAME=com\ibm\icu\impl\data\icudata 337 ICU4J_TZDATA_PATHS=$(ICU4J_DATA_DIRNAME)\zoneinfo64.res $(ICU4J_DATA_DIRNAME)\metaZones.res $(ICU4J_DATA_DIRNAME)\timezoneTypes.res $(ICU4J_DATA_DIRNAME)\windowsZones.res 338 339 generate-data: GODATA "$(ICUOUT)\$(ICUPKG).dat" uni-core-data 340 if not exist "$(ICUOUT)\icu4j\$(ICU4J_DATA_DIRNAME)" mkdir "$(ICUOUT)\icu4j\$(ICU4J_DATA_DIRNAME)" 341 if not exist "$(ICUOUT)\icu4j\tzdata\$(ICU4J_DATA_DIRNAME)" mkdir "$(ICUOUT)\icu4j\tzdata\$(ICU4J_DATA_DIRNAME)" 342 echo pnames.icu ubidi.icu ucase.icu uprops.icu nfc.nrm > "$(ICUOUT)\icu4j\add.txt" 343 "$(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)" 344 @for %f in ($(ICU4J_TZDATA_PATHS)) do @move "$(ICUOUT)\icu4j\%f" "$(ICUOUT)\icu4j\tzdata\$(ICU4J_DATA_DIRNAME)" 345 346 "$(ICUOUT)\icu4j\icutzdata.jar": GODATA generate-data 347 "$(JAR)" cf "$(ICUOUT)\icu4j\icutzdata.jar" -C "$(ICUOUT)\icu4j\tzdata" "$(ICU4J_DATA_DIRNAME)" 348 349 # Build icudata.jar: 350 # - add the uni-core-data to the ICU package 351 # - swap the ICU data 352 # - extract all data items 353 # - package them into the .jar file 354 "$(ICUOUT)\icu4j\icudata.jar": GODATA generate-data 355 "$(JAR)" cf "$(ICUOUT)\icu4j\icudata.jar" -C "$(ICUOUT)\icu4j" "$(ICU4J_DATA_DIRNAME)" 356 357 # Build testdata.jar: 358 # - swap the test data 359 # - extract all data items 360 # - package them into the .jar file 361 "$(ICUOUT)\icu4j\testdata.jar": GODATA "$(TESTDATAOUT)\testdata.dat" 362 if not exist "$(ICUOUT)\icu4j\com\ibm\icu\dev\data\testdata" mkdir "$(ICUOUT)\icu4j\com\ibm\icu\dev\data\testdata" 363 "$(ICUPBIN)\icupkg" "$(TESTDATAOUT)\testdata.dat" -r test.icu -x * -tb -d "$(ICUOUT)\icu4j\com\ibm\icu\dev\data\testdata" 364 "$(JAR)" cf "$(ICUOUT)\icu4j\testdata.jar" -C "$(ICUOUT)\icu4j" com\ibm\icu\dev\data\testdata 365 366 ## Compare to: source\data\Makefile.in and source\test\testdata\Makefile.in 367 368 DEBUGUTILITIESDATA_DIR=main\core\src\test\java\com\ibm\icu\dev\test\util 369 DEBUGUTILITIESDATA_SRC=DebugUtilitiesData.java 370 371 # Build DebugUtilitiesData.java 372 "$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)\$(DEBUGUTILITIESDATA_SRC)" : {"$(ICUTOOLS)\gentest\$(CFGTOOLS)"}gentest.exe 373 if not exist "$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)" mkdir "$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)" 374 "$(ICUTOOLS)\gentest\$(CFGTOOLS)\gentest" -j -d"$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)" 375 376 ICU4J_DATA="$(ICUOUT)\icu4j\icudata.jar" "$(ICUOUT)\icu4j\testdata.jar" "$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)\$(DEBUGUTILITIESDATA_SRC)" 377 378 icu4j-data: GODATA $(ICU4J_DATA) $(ICU4J_TZDATA) 379 380 !IFDEF ICU4J_ROOT 381 382 "$(ICU4J_ROOT)\main\shared\data\icudata.jar": "$(ICUOUT)\icu4j\icudata.jar" 383 if not exist "$(ICU4J_ROOT)\main\shared\data" mkdir "$(ICU4J_ROOT)\main\shared\data" 384 copy "$(ICUOUT)\icu4j\icudata.jar" "$(ICU4J_ROOT)\main\shared\data" 385 386 "$(ICU4J_ROOT)\main\shared\data\icutzdata.jar": "$(ICUOUT)\icu4j\icutzdata.jar" 387 if not exist "$(ICU4J_ROOT)\main\shared\data" mkdir "$(ICU4J_ROOT)\main\shared\data" 388 copy "$(ICUOUT)\icu4j\icutzdata.jar" "$(ICU4J_ROOT)\main\shared\data" 389 390 "$(ICU4J_ROOT)\main\shared\data\testdata.jar": "$(ICUOUT)\icu4j\testdata.jar" 391 if not exist "$(ICU4J_ROOT)\main\shared\data" mkdir "$(ICU4J_ROOT)\main\shared\data" 392 copy "$(ICUOUT)\icu4j\testdata.jar" "$(ICU4J_ROOT)\main\shared\data" 393 394 # "$(DEBUGUTILTIESDATA_OUT)" 395 396 "$(ICU4J_ROOT)\$(DEBUGUTILITIESDATA_DIR)\$(DEBUGUTILITIESDATA_SRC)": "$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)\$(DEBUGUTILITIESDATA_SRC)" 397 if not exist "$(ICU4J_ROOT)\$(DEBUGUTILITIESDATA_DIR)" mkdir "$(ICU4J_ROOT)\$(DEBUGUTILITIESDATA_DIR)" 398 copy "$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)\$(DEBUGUTILITIESDATA_SRC)" "$(ICU4J_ROOT)\$(DEBUGUTILITIESDATA_DIR)\$(DEBUGUTILITIESDATA_SRC)" 399 400 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)" 401 402 icu4j-data-install : GODATA $(ICU4J_DATA) $(ICU4J_TZDATA) $(ICU4J_DATA_INSTALLED) 403 @echo ICU4J data output to "$(ICU4J_ROOT)" 404 405 !ELSE 406 407 icu4j-data-install : 408 @echo ERROR ICU4J_ROOT not set 409 @exit 1 410 411 !ENDIF 412 413 414 415 # 416 # testdata - nmake will invoke pkgdata, which will create testdata.dat 417 # 418 "$(TESTDATAOUT)\testdata.dat": "$(TESTDATA)\*" $(TOOLS_TS) 419 @cd "$(TESTDATA)" 420 @echo building testdata... 421 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)" 422 423 #invoke pkgdata for ICU common data 424 # pkgdata will drop all output files (.dat, .dll, .lib) into the target (ICUBLD_PKG) directory. 425 # move the .dll and .lib files to their final destination afterwards. 426 # The $(U_ICUDATA_NAME).lib and $(U_ICUDATA_NAME).exp should already be in the right place due to stubdata. 427 # 428 # 2005-may-05 Removed Unicode properties files (unorm.icu, uprops.icu, ucase.icu, ubidi.icu) 429 # from data build. See Jitterbug 4497. (makedata.mak revision 1.117) 430 # 431 !IFDEF ICUDATA_SOURCE_ARCHIVE 432 "$(ICU_LIB_TARGET)" : $(COMMON_ICUDATA_DEPENDENCIES) "$(ICUDATA_SOURCE_ARCHIVE)" 433 @echo Building icu data from $(ICUDATA_SOURCE_ARCHIVE) 434 cd "$(ICUBLD_PKG)" 435 "$(ICUPBIN)\icupkg" -x * --list "$(ICUDATA_SOURCE_ARCHIVE)" > "$(ICUTMP)\icudata.lst" 436 "$(ICUPBIN)\pkgdata" $(COMMON_ICUDATA_ARGUMENTS) "$(ICUTMP)\icudata.lst" 437 copy "$(U_ICUDATA_NAME).dll" "$(DLL_OUTPUT)" 438 -@erase "$(U_ICUDATA_NAME).dll" 439 copy "$(ICUTMP)\$(ICUPKG).dat" "$(ICUOUT)\$(U_ICUDATA_NAME)$(U_ICUDATA_ENDIAN_SUFFIX).dat" 440 -@erase "$(ICUTMP)\$(ICUPKG).dat" 441 !ELSE 442 "$(ICU_LIB_TARGET)" : $(COMMON_ICUDATA_DEPENDENCIES) $(COREDATA_TS) 443 @echo Building ICU data from scratch 444 cd "$(ICUBLD_PKG)" 445 "$(ICUPBIN)\pkgdata" $(COMMON_ICUDATA_ARGUMENTS) $(ICUTMP)\icudata.lst 446 -@erase "$(ICU_LIB_TARGET)" 447 @if not exist "$(DLL_OUTPUT)" mkdir "$(DLL_OUTPUT)" 448 copy "$(U_ICUDATA_NAME).dll" "$(ICU_LIB_TARGET)" 449 -@erase "$(U_ICUDATA_NAME).dll" 450 copy "$(ICUTMP)\$(ICUPKG).dat" "$(ICUOUT)\$(U_ICUDATA_NAME)$(U_ICUDATA_ENDIAN_SUFFIX).dat" 451 -@erase "$(ICUTMP)\$(ICUPKG).dat" 452 !ENDIF 453 454 "$(ARM_CROSSBUILD_TS)" : $(COMMON_ICUDATA_DEPENDENCIES) "$(ICU_LIB_TARGET)" 455 @echo Building ICU data for "$(ARM_CROSS_BUILD)" from x64 456 cd "$(ICUBLD_PKG)" 457 "$(ICUPBIN)\pkgdata" $(COMMON_ICUDATA_ARGUMENTS) $(ICUTMP)\icudata.lst 458 -@erase "$(ICU_LIB_TARGET)" 459 @if not exist "$(DLL_OUTPUT)" mkdir "$(DLL_OUTPUT)" 460 copy "$(U_ICUDATA_NAME).dll" "$(ICU_LIB_TARGET)" 461 -@erase "$(U_ICUDATA_NAME).dll" 462 copy "$(ICUTMP)\$(ICUPKG).dat" "$(ICUOUT)\$(U_ICUDATA_NAME)$(U_ICUDATA_ENDIAN_SUFFIX).dat" 463 -@erase "$(ICUTMP)\$(ICUPKG).dat" 464 @echo "timestamp" > $(ARM_CROSSBUILD_TS) 465 466 # utility target to create missing directories 467 # Most directories are made by Python, but still create ICUTMP 468 # so it works in the source archive 469 CREATE_DIRS : 470 @if not exist "$(ICUOUT)\$(NULL)" mkdir "$(ICUOUT)" 471 @if not exist "$(ICUTMP)\$(NULL)" mkdir "$(ICUTMP)" 472 @if not exist "$(ICUOUT)\build\$(NULL)" mkdir "$(ICUOUT)\build" 473 @if not exist "$(ICUBLD_PKG)\$(NULL)" mkdir "$(ICUBLD_PKG)" 474 @if not exist "$(TESTDATAOUT)" mkdir "$(TESTDATAOUT)" 475 476 # utility target to send us to the right dir 477 GODATA : CREATE_DIRS 478 @cd "$(ICUBLD_PKG)" 479 480 # This is to remove all the data files 481 CLEAN : GODATA 482 @echo Cleaning up the data files. 483 @cd "$(ICUOUT)" 484 -@erase "$(ICUOUT)\*.dat" 485 @rmdir $(ICUBLD) /s /q 486 @rmdir $(ICUTMP) /s /q 487 @rmdir $(TESTDATAOUT) /s /q 488 489 # DLL version information 490 # If you modify this, modify winmode.c in pkgdata. 491 "$(ICUTMP)\icudata.res": "$(ICUSRCDATA)\misc\icudata.rc" 492 @echo Creating data DLL version information from $** 493 @rc.exe /i "..\..\..\..\common" /r /fo $@ $** 494 495 # Targets for prebuilt Unicode data 496 # Needed for ICU4J! 497 "$(ICUBLD_PKG)\pnames.icu": $(ICUSRCDATA_RELATIVE_PATH)\in\pnames.icu 498 "$(ICUPBIN)\icupkg" -tl $? $@ 499 500 "$(ICUBLD_PKG)\ubidi.icu": $(ICUSRCDATA_RELATIVE_PATH)\in\ubidi.icu 501 "$(ICUPBIN)\icupkg" -tl $? $@ 502 503 "$(ICUBLD_PKG)\ucase.icu": $(ICUSRCDATA_RELATIVE_PATH)\in\ucase.icu 504 "$(ICUPBIN)\icupkg" -tl $? $@ 505 506 "$(ICUBLD_PKG)\uprops.icu": $(ICUSRCDATA_RELATIVE_PATH)\in\uprops.icu 507 "$(ICUPBIN)\icupkg" -tl $? $@ 508 509 "$(ICUBLD_PKG)\unames.icu": $(ICUSRCDATA_RELATIVE_PATH)\in\unames.icu 510 "$(ICUPBIN)\icupkg" -tl $? $@ 511 512 "$(ICUBLD_PKG)\nfc.nrm": $(ICUSRCDATA_RELATIVE_PATH)\in\nfc.nrm 513 "$(ICUPBIN)\icupkg" -tl $? $@ 514 515 "$(ICUBLD_PKG)\nfkc.nrm": $(ICUSRCDATA_RELATIVE_PATH)\in\nfkc.nrm 516 "$(ICUPBIN)\icupkg" -tl $? $@ 517 518 "$(ICUBLD_PKG)\nfkc_cf.nrm": $(ICUSRCDATA_RELATIVE_PATH)\in\nfkc_cf.nrm 519 "$(ICUPBIN)\icupkg" -tl $? $@ 520 521 "$(ICUBLD_PKG)\nfkc_scf.nrm": $(ICUSRCDATA_RELATIVE_PATH)\in\nfkc_scf.nrm 522 "$(ICUPBIN)\icupkg" -tl $? $@ 523 524 "$(ICUBLD_PKG)\uts46.nrm": $(ICUSRCDATA_RELATIVE_PATH)\in\uts46.nrm 525 "$(ICUPBIN)\icupkg" -tl $? $@ 526 527 "$(ICUBLD_PKG)\coll\ucadata.icu": $(ICUSRCDATA_RELATIVE_PATH)\in\coll\ucadata-unihan.icu 528 "$(ICUPBIN)\icupkg" -tl $? $@ 529 530 531 !IFDEF ICUDATA_ARCHIVE 532 "$(ICUDATA_SOURCE_ARCHIVE)": CREATE_DIRS $(ICUDATA_ARCHIVE) $(TOOLS_TS) 533 "$(ICUTOOLS)\icupkg\$(CFGTOOLS)\icupkg" -t$(U_ICUDATA_ENDIAN_SUFFIX) "$(ICUDATA_ARCHIVE)" "$(ICUDATA_SOURCE_ARCHIVE)" 534 !ENDIF