makedata.mak (5458B)
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 NATIVE_ARM= 55 !IF "$(PROCESSOR_ARCHITECTURE)" == "ARM64" || "$(PROCESSOR_ARCHITEW6432)" == "ARM64" 56 NATIVE_ARM=ARM64 57 !ELSE IF "$(PROCESSOR_ARCHITECTURE)" == "ARM" || "$(PROCESSOR_ARCHITEW6432)" == "ARM" 58 NATIVE_ARM=ARM 59 !ENDIF 60 61 # Use the x64 tools for building ARM and ARM64. 62 # Note: This is similar to the TOOLS CFG PATH in source\data\makedata.mak 63 !IF "$(NATIVE_ARM)" == "" 64 !IF "$(CFG)" == "x64\Release" || "$(CFG)" == "x64\Debug" || "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug" || "$(CFG)" == "ARM64\Release" || "$(CFG)" == "ARM64\Debug" 65 ICUTOOLS=$(ICUP)\bin64 66 PATH = $(ICUP)\bin64;$(PATH) 67 !ELSE 68 ICUTOOLS=$(ICUP)\bin 69 PATH = $(ICUP)\bin;$(PATH) 70 !ENDIF 71 !ELSE 72 !IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug" 73 ICUTOOLS=$(ICUP)\binARM 74 PATH = $(ICUP)\binARM;$(PATH) 75 !ELSE 76 ICUTOOLS=$(ICUP)\binARM64 77 PATH = $(ICUP)\binARM64;$(PATH) 78 !ENDIF 79 !ENDIF 80 81 # If building ARM/ARM, then we need to pass the arch as an argument. 82 EXTRA_PKGDATA_ARGUMENTS= 83 !IF "$(CFG)" == "x64\Release" || "$(CFG)" == "x64\Debug" 84 EXTRA_PKGDATA_ARGUMENTS=-a X64 85 !ENDIF 86 !IF "$(CFG)" == "Release" || "$(CFG)" == "release" || "$(CFG)" == "Debug" || "$(CFG)" == "debug" || "$(CFG)" == "x86\Release" || "$(CFG)" == "x86\Debug" 87 EXTRA_PKGDATA_ARGUMENTS=-a X86 88 !ENDIF 89 !IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug" 90 EXTRA_PKGDATA_ARGUMENTS=-a ARM 91 !ENDIF 92 !IF "$(CFG)" == "ARM64\Release" || "$(CFG)" == "ARM64\Debug" 93 EXTRA_PKGDATA_ARGUMENTS=-a ARM64 94 !ENDIF 95 96 # Make sure the necessary tools exist before continuing. (This is to prevent cryptic errors from NMAKE). 97 !IF !EXISTS($(ICUTOOLS)\pkgdata.exe) 98 !MESSAGE Unable to find "$(ICUTOOLS)\pkgdata.exe" 99 !ERROR The tool 'pkgdata.exe' does not exist! (Have you built all of ICU yet?). 100 !IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug" || "$(CFG)" == "ARM64\Release" || "$(CFG)" == "ARM64\Debug" 101 !ERROR Note that the ARM and ARM64 builds require building x64 first. 102 !ENDIF 103 !ENDIF 104 !IF !EXISTS($(ICUTOOLS)\genrb.exe) 105 !MESSAGE Unable to find "$(ICUTOOLS)\genrb.exe" 106 !ERROR The tool 'genrb.exe' does not exist! (Have you built all of ICU yet?). 107 !IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug" || "$(CFG)" == "ARM64\Release" || "$(CFG)" == "ARM64\Debug" 108 !ERROR Note that the ARM and ARM64 builds require building x64 first. 109 !ENDIF 110 !ENDIF 111 112 # Suffixes for data files 113 .SUFFIXES : .ucm .cnv .dll .dat .res .txt .c 114 115 # We're including a list of resource files. 116 FILESEPCHAR= 117 118 !IF EXISTS("$(RESFILES)") 119 !INCLUDE "$(RESFILES)" 120 !ELSE 121 !ERROR ERROR: cannot find "$(RESFILES)" 122 !ENDIF 123 RES_FILES = $(RESSRC:.txt=.res) 124 RB_FILES = resources\$(RES_FILES:.res =.res resources\) 125 RESOURCESDIR= 126 127 # This target should build all the data files 128 !IF "$(PKGMODE)" == "dll" 129 OUTPUT = "$(DLL_OUTPUT)\$(RESNAME).dll" 130 !ELSE 131 OUTPUT = "$(DLL_OUTPUT)\$(RESNAME).lib" 132 !ENDIF 133 134 ALL : $(OUTPUT) 135 @echo All targets are up to date (mode $(PKGMODE)) 136 137 138 # invoke pkgdata - static 139 "$(DLL_OUTPUT)\$(RESNAME).lib" : $(RB_FILES) $(RESFILES) 140 @echo Building $(RESNAME).lib 141 @"$(ICUTOOLS)\pkgdata" -f -v -m static -c -p $(RESNAME) -d "$(DLL_OUTPUT)" $(EXTRA_PKGDATA_ARGUMENTS) -s "$(RESDIR)" <<pkgdatain.txt 142 $(RES_FILES:.res =.res 143 ) 144 <<KEEP 145 146 # This is to remove all the data files 147 CLEAN : 148 -@erase "$(RB_FILES)" 149 -@erase "$(CFG)\*uconvmsg*.*" 150 -@"$(ICUTOOLS)\pkgdata" -f --clean -v -m static -c -p $(RESNAME) -d "$(DLL_OUTPUT)" $(EXTRA_PKGDATA_ARGUMENTS) -s "$(RESDIR)" pkgdatain.txt 151 152 # Inference rule for creating resource bundles 153 {$(RESDIR)}.txt{$(RESDIR)}.res: 154 @echo Making Resource Bundle files 155 "$(ICUTOOLS)\genrb" -s $(@D) -d $(@D) $(?F) 156 157 $(RESSRC) : {"$(ICUTOOLS)"}genrb.exe