tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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