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-2008, 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 icup=<path_to_icu_instalation> [Debug|Release]
11 # 12/10/1999 weiv Created
13 #If no config, we default to debug
16 !MESSAGE No configuration specified. Defaulting to common - Win32 Debug.
19 #Here we test if a valid configuration is given
20 !IF "$(CFG)" != "Release" && "$(CFG)" != "release" && "$(CFG)" != "Debug" && "$(CFG)" != "debug" && "$(CFG)" != "x86\Release" && "$(CFG)" != "x86\Debug" && "$(CFG)" != "x64\Release" && "$(CFG)" != "x64\Debug" && "$(CFG)" != "ARM\Release" && "$(CFG)" != "ARM\Debug" && "$(CFG)" != "ARM64\Release" && "$(CFG)" != "ARM64\Debug"
21 !MESSAGE Invalid configuration "$(CFG)" specified.
22 !MESSAGE You can specify a configuration when running NMAKE
23 !MESSAGE by defining the macro CFG on the command line. For example:
25 !MESSAGE NMAKE /f "makedata.mak" CFG="Debug"
27 !MESSAGE Possible choices for configuration are:
32 !ERROR An invalid configuration is specified.
35 #Let's see if user has given us a path to ICU
36 #This could be found according to the path to makefile, but for now it is this way
38 !ERROR Can't find path!
40 !MESSAGE ICU path is $(ICUP)
48 # set the following to 'static' or 'dll' depending
52 DATA_PATH=$(ICUP)\data^\
54 # Use the x64 tools for building ARM and ARM64.
55 # Note: This is similar to the TOOLS CFG PATH in source\data\makedata.mak
56 !IF "$(CFG)" == "x64\Release" || "$(CFG)" == "x64\Debug" || "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug" || "$(CFG)" == "ARM64\Release" || "$(CFG)" == "ARM64\Debug"
57 ICUTOOLS=$(ICUP)\bin64
58 PATH = $(ICUP)\bin64;$(PATH)
61 PATH = $(ICUP)\bin;$(PATH)
64 # If building ARM/ARM, then we need to pass the arch as an argument.
65 EXTRA_PKGDATA_ARGUMENTS=
66 !IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug"
67 EXTRA_PKGDATA_ARGUMENTS=-a ARM
69 !IF "$(CFG)" == "ARM64\Release" || "$(CFG)" == "ARM64\Debug"
70 EXTRA_PKGDATA_ARGUMENTS=-a ARM64
73 # Make sure the necessary tools exist before continuing. (This is to prevent cryptic errors from NMAKE).
74 !IF !EXISTS($(ICUTOOLS)\pkgdata.exe)
75 !MESSAGE Unable to find "$(ICUTOOLS)\pkgdata.exe"
76 !ERROR The tool 'pkgdata.exe' does not exist! (Have you built all of ICU yet?).
77 !IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug" || "$(CFG)" == "ARM64\Release" || "$(CFG)" == "ARM64\Debug"
78 !ERROR Note that the ARM and ARM64 builds require building x64 first.
81 !IF !EXISTS($(ICUTOOLS)\genrb.exe)
82 !MESSAGE Unable to find "$(ICUTOOLS)\genrb.exe"
83 !ERROR The tool 'genrb.exe' does not exist! (Have you built all of ICU yet?).
84 !IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug" || "$(CFG)" == "ARM64\Release" || "$(CFG)" == "ARM64\Debug"
85 !ERROR Note that the ARM and ARM64 builds require building x64 first.
89 # Suffixes for data files
90 .SUFFIXES : .ucm .cnv .dll .dat .res .txt .c
92 # We're including a list of resource files.
95 !IF EXISTS("$(RESFILES)")
96 !INCLUDE "$(RESFILES)"
98 !ERROR ERROR: cannot find "$(RESFILES)"
100 RES_FILES = $(RESSRC:.txt=.res)
101 RB_FILES = resources\$(RES_FILES:.res =.res resources\)
104 # This target should build all the data files
105 !IF "$(PKGMODE)" == "dll"
106 OUTPUT = "$(DLL_OUTPUT)\$(RESNAME).dll"
108 OUTPUT = "$(DLL_OUTPUT)\$(RESNAME).lib"
112 @echo All targets are up to date (mode $(PKGMODE))
115 # invoke pkgdata - static
116 "$(DLL_OUTPUT)\$(RESNAME).lib" : $(RB_FILES) $(RESFILES)
117 @echo Building $(RESNAME).lib
118 @"$(ICUTOOLS)\pkgdata" -f -v -m static -c -p $(RESNAME) -d "$(DLL_OUTPUT)" $(EXTRA_PKGDATA_ARGUMENTS) -s "$(RESDIR)" <<pkgdatain.txt
119 $(RES_FILES:.res =.res
123 # This is to remove all the data files
125 -@erase "$(RB_FILES)"
126 -@erase "$(CFG)\*uconvmsg*.*"
127 -@"$(ICUTOOLS)\pkgdata" -f --clean -v -m static -c -p $(RESNAME) -d "$(DLL_OUTPUT)" $(EXTRA_PKGDATA_ARGUMENTS) -s "$(RESDIR)" pkgdatain.txt
129 # Inference rule for creating resource bundles
130 {$(RESDIR)}.txt{$(RESDIR)}.res:
131 @echo Making Resource Bundle files
132 "$(ICUTOOLS)\genrb" -s $(@D) -d $(@D) $(?F)
134 $(RESSRC) : {"$(ICUTOOLS)"}genrb.exe