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)" == "" 15CFG=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 42RESNAME=uconvmsg 43RESDIR=resources 44RESFILES=resfiles.mk 45ICUDATA=$(ICUP)\data 46 47DLL_OUTPUT=.\$(CFG) 48# set the following to 'static' or 'dll' depending 49PKGMODE=static 50 51ICD=$(ICUDATA)^\ 52DATA_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" 57ICUTOOLS=$(ICUP)\bin64 58PATH = $(ICUP)\bin64;$(PATH) 59!ELSE 60ICUTOOLS=$(ICUP)\bin 61PATH = $(ICUP)\bin;$(PATH) 62!ENDIF 63 64# If building ARM/ARM, then we need to pass the arch as an argument. 65EXTRA_PKGDATA_ARGUMENTS= 66!IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug" 67EXTRA_PKGDATA_ARGUMENTS=-a ARM 68!ENDIF 69!IF "$(CFG)" == "ARM64\Release" || "$(CFG)" == "ARM64\Debug" 70EXTRA_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. 93FILESEPCHAR= 94 95!IF EXISTS("$(RESFILES)") 96!INCLUDE "$(RESFILES)" 97!ELSE 98!ERROR ERROR: cannot find "$(RESFILES)" 99!ENDIF 100RES_FILES = $(RESSRC:.txt=.res) 101RB_FILES = resources\$(RES_FILES:.res =.res resources\) 102RESOURCESDIR= 103 104# This target should build all the data files 105!IF "$(PKGMODE)" == "dll" 106OUTPUT = "$(DLL_OUTPUT)\$(RESNAME).dll" 107!ELSE 108OUTPUT = "$(DLL_OUTPUT)\$(RESNAME).lib" 109!ENDIF 110 111ALL : $(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 124CLEAN : 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 135