]>
Commit | Line | Data |
---|---|---|
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 | |
8 | # invoke with | |
9 | # nmake /f makedata.mak icup=<path_to_icu_instalation> [Debug|Release] | |
10 | # | |
11 | # 12/10/1999 weiv Created | |
12 | ||
13 | #If no config, we default to debug | |
14 | !IF "$(CFG)" == "" | |
15 | CFG=Debug | |
16 | !MESSAGE No configuration specified. Defaulting to common - Win32 Debug. | |
17 | !ENDIF | |
18 | ||
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: | |
24 | !MESSAGE | |
25 | !MESSAGE NMAKE /f "makedata.mak" CFG="Debug" | |
26 | !MESSAGE | |
27 | !MESSAGE Possible choices for configuration are: | |
28 | !MESSAGE | |
29 | !MESSAGE "Release" | |
30 | !MESSAGE "Debug" | |
31 | !MESSAGE | |
32 | !ERROR An invalid configuration is specified. | |
33 | !ENDIF | |
34 | ||
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 | |
37 | !IF "$(ICUP)"=="" | |
38 | !ERROR Can't find path! | |
39 | !ENDIF | |
40 | !MESSAGE ICU path is $(ICUP) | |
41 | ||
42 | RESNAME=uconvmsg | |
43 | RESDIR=resources | |
44 | RESFILES=resfiles.mk | |
45 | ICUDATA=$(ICUP)\data | |
46 | ||
47 | DLL_OUTPUT=.\$(CFG) | |
48 | # set the following to 'static' or 'dll' depending | |
49 | PKGMODE=static | |
50 | ||
51 | ICD=$(ICUDATA)^\ | |
52 | DATA_PATH=$(ICUP)\data^\ | |
53 | ||
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) | |
59 | !ELSE | |
60 | ICUTOOLS=$(ICUP)\bin | |
61 | PATH = $(ICUP)\bin;$(PATH) | |
62 | !ENDIF | |
63 | ||
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 | |
68 | !ENDIF | |
69 | !IF "$(CFG)" == "ARM64\Release" || "$(CFG)" == "ARM64\Debug" | |
70 | EXTRA_PKGDATA_ARGUMENTS=-a ARM64 | |
71 | !ENDIF | |
72 | ||
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. | |
79 | !ENDIF | |
80 | !ENDIF | |
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. | |
86 | !ENDIF | |
87 | !ENDIF | |
88 | ||
89 | # Suffixes for data files | |
90 | .SUFFIXES : .ucm .cnv .dll .dat .res .txt .c | |
91 | ||
92 | # We're including a list of resource files. | |
93 | FILESEPCHAR= | |
94 | ||
95 | !IF EXISTS("$(RESFILES)") | |
96 | !INCLUDE "$(RESFILES)" | |
97 | !ELSE | |
98 | !ERROR ERROR: cannot find "$(RESFILES)" | |
99 | !ENDIF | |
100 | RES_FILES = $(RESSRC:.txt=.res) | |
101 | RB_FILES = resources\$(RES_FILES:.res =.res resources\) | |
102 | RESOURCESDIR= | |
103 | ||
104 | # This target should build all the data files | |
105 | !IF "$(PKGMODE)" == "dll" | |
106 | OUTPUT = "$(DLL_OUTPUT)\$(RESNAME).dll" | |
107 | !ELSE | |
108 | OUTPUT = "$(DLL_OUTPUT)\$(RESNAME).lib" | |
109 | !ENDIF | |
110 | ||
111 | ALL : $(OUTPUT) | |
112 | @echo All targets are up to date (mode $(PKGMODE)) | |
113 | ||
114 | ||
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 | |
120 | ) | |
121 | <<KEEP | |
122 | ||
123 | # This is to remove all the data files | |
124 | CLEAN : | |
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 | |
128 | ||
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) | |
133 | ||
134 | $(RESSRC) : {"$(ICUTOOLS)"}genrb.exe |