1## Makefile.in for ICU data 2## Copyright (C) 2016 and later: Unicode, Inc. and others. 3## License & terms of use: http://www.unicode.org/copyright.html 4## Copyright (c) 1999-2015, International Business Machines Corporation and 5## others. All Rights Reserved. 6 7## Source directory information 8srcdir = @srcdir@ 9top_srcdir = @top_srcdir@ 10 11# So that you have $(top_builddir)/config.status 12top_builddir = .. 13 14## All the flags and other definitions are included here. 15include $(top_builddir)/icudefs.mk 16 17## Build directory information 18# So that $(top_builddir)/$(subdir) ~= "here" 19subdir = data 20 21#lib icu data for link 22LIB_ICUDATA_NAME=$(LIBICU)$(DATA_STUBNAME)$(ICULIBSUFFIX) 23LIB_STATIC_ICUDATA_NAME=$(LIBSICU)$(DATA_STUBNAME)$(ICULIBSUFFIX) 24 25# Allow Windows to override these options 26ifeq ($(PKGDATA_OPTS),) 27PKGDATA_OPTS = -O $(top_builddir)/data/icupkg.inc 28endif 29ifeq ($(PKGDATA_VERSIONING),) 30PKGDATA_VERSIONING = -r $(SO_TARGET_VERSION) 31endif 32 33# This allows all the data to be in one directory 34ifeq ($(PKGDATA_MODE),dll) 35ICUPKGDATA_OUTDIR = $(LIBDIR) 36else 37ifeq ($(PKGDATA_MODE),static) 38ICUPKGDATA_OUTDIR = $(LIBDIR) 39else 40ICUPKGDATA_OUTDIR = $(OUTDIR) 41endif 42endif 43 44CURDIR:=$(CURR_FULL_DIR) 45# current directory should not be blank 46ifeq ($(CURDIR),) 47CURDIR=. 48endif 49ifeq ($(OS390BATCH),1) 50PKGDATA = $(TOOLBINDIR)/pkgdata $(PKGDATA_OPTS) -z -q -c -s $(CURDIR)/out/build/$(ICUDATA_PLATFORM_NAME) -d $(ICUPKGDATA_OUTDIR) 51else 52PKGDATA = $(TOOLBINDIR)/pkgdata $(PKGDATA_OPTS) -q -c -s $(CURDIR)/out/build/$(ICUDATA_PLATFORM_NAME) -d $(ICUPKGDATA_OUTDIR) 53endif 54OS390_PDS_NAME = -z -L $(BATCH_STUB_TARGET) 55 56ifeq ($(OS390_STUBDATA),1) 57OS390PKG=package390 58OS390INSTALL=install390 59 60# Additional data for 390 61OS390LIST=$(OUTTMPDIR)/icudata390.lst 62OUTTMPDIR_390STUB=$(top_builddir)/data/out/tmp_390stub 63endif 64 65ifeq ($(OS390BATCH),1) 66CPPFLAGS += -Wc,'ros,roc' 67endif 68 69# OBJDATADIR must be a short path (with ..'s) to the data. 70 71ifeq ($(top_srcdir),..) 72SRCDATADIR=. 73else 74SRCDATADIR=$(top_srcdir)/data 75endif 76ifeq ($(top_builddir),..) 77OUTDIR=./out 78else 79OUTDIR=$(top_builddir)/data/out 80endif 81 82OUTTMPDIR=$(OUTDIR)/tmp 83MAINBUILDDIR=$(OUTDIR)/build 84BUILDDIR=$(MAINBUILDDIR)/$(ICUDATA_PLATFORM_NAME) 85UNICODEDATADIR=$(SRCDATADIR)/unidata 86LOCSRCDIR=$(SRCDATADIR)/locales 87CURRSRCDIR=$(SRCDATADIR)/curr 88CURRBLDDIR=$(BUILDDIR)/curr 89LANGSRCDIR=$(SRCDATADIR)/lang 90LANGBLDDIR=$(BUILDDIR)/lang 91REGIONSRCDIR=$(SRCDATADIR)/region 92REGIONBLDDIR=$(BUILDDIR)/region 93ZONESRCDIR=$(SRCDATADIR)/zone 94ZONEBLDDIR=$(BUILDDIR)/zone 95UNITSRCDIR=$(SRCDATADIR)/unit 96UNITBLDDIR=$(BUILDDIR)/unit 97COLSRCDIR=$(SRCDATADIR)/coll 98COLBLDDIR=$(BUILDDIR)/coll 99RBNFSRCDIR=$(SRCDATADIR)/rbnf 100RBNFBLDDIR=$(BUILDDIR)/rbnf 101TRANSLITSRCDIR=$(SRCDATADIR)/translit 102TRANSLITBLDDIR=$(BUILDDIR)/translit 103MISCSRCDIR=$(SRCDATADIR)/misc 104BRKSRCDIR=$(SRCDATADIR)/brkitr 105BRKBLDDIR=$(BUILDDIR)/brkitr 106DICTSRCDIR=$(BRKSRCDIR)/dictionaries 107BRKRULESRCDIR=$(BRKSRCDIR)/rules 108MISCSRCDIR=$(SRCDATADIR)/misc 109UCMSRCDIR=$(SRCDATADIR)/mappings 110SPREPSRCDIR=$(SRCDATADIR)/sprep 111COMINCDIR=$(top_srcdir)/common/unicode 112SRCLISTDEPS=Makefile $(srcdir)/Makefile.in 113BUILD_DIRS=$(OUTDIR) $(MAINBUILDDIR) $(BUILDDIR) $(CURRBLDDIR) $(LANGBLDDIR) $(REGIONBLDDIR) $(ZONEBLDDIR) $(UNITBLDDIR) $(BRKBLDDIR) $(COLBLDDIR) $(RBNFBLDDIR) $(TRANSLITBLDDIR) $(OUTTMPDIR) $(OUTTMPDIR_390STUB) $(OUTTMPDIR)/$(CURR_TREE) $(OUTTMPDIR)/$(LANG_TREE) $(OUTTMPDIR)/$(REGION_TREE) $(OUTTMPDIR)/$(ZONE_TREE) $(OUTTMPDIR)/$(UNIT_TREE) $(OUTTMPDIR)/$(COLLATION_TREE) $(OUTTMPDIR)/$(RBNF_TREE) $(OUTTMPDIR)/$(TRANSLIT_TREE) $(OUTTMPDIR)/$(BREAK_TREE) 114 115# relative lib links from pkgdata are the same as for tmp 116TOOLDIR=$(top_builddir)/tools 117 118## List of phony targets 119.PHONY : all all-local all-recursive install install-local install-files \ 120install-recursive clean clean-local clean-recursive distclean \ 121distclean-local distclean-recursive dist dist-local dist-recursive \ 122check check-local check-recursive clean-resindex icudata.jar \ 123check-exhaustive 124 125## Clear suffix list 126.SUFFIXES : 127 128## List of standard targets 129all: all-local 130install: all-local install-local 131clean: clean-local 132distclean : distclean-local 133dist: 134check: all 135 136check-exhaustive: check 137 138-include Makefile.local 139 140 141distclean-local: clean 142 $(RMV) Makefile 143 144all-local: build-dir icupkg.inc build-local packagedata $(POST_DATA_BUILD) $(OS390PKG) 145 146dist-local: 147 148clean-map: 149 -test -z *.map || $(RMV) *.map 150 151clean-local: cleanpackage cleanfiles clean-map 152 $(RMV) build-dir* build-local packagedata uni-core-data 153 154cleanfiles: 155 test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES) 156 157cleanpackage: 158 $(RMV) $(OUTDIR) 159 $(RMV) $(LIBDIR)/*$(LIB_ICUDATA_NAME)*.$(SO)* $(LIBDIR)/$(LIB_STATIC_ICUDATA_NAME).$(A) 160 161check-local: 162 163# Find out if we have a source archive. 164# If we have that, then use that instead of building everything from scratch. 165ICUDATA_SOURCE_ARCHIVE = $(wildcard $(srcdir)/in/$(ICUDATA_PLATFORM_NAME).dat) 166ifeq ($(ICUDATA_SOURCE_ARCHIVE),) 167ICUDATA_ARCHIVE = $(firstword $(wildcard $(srcdir)/in/$(ICUDATA_BASENAME_VERSION)*.dat)) 168# We don't have the data in the current endianess or charset. 169# See if we can find data of any archive type, 170# and convert it to the current type. 171ifneq ($(ICUDATA_ARCHIVE),) 172ICUDATA_SOURCE_ARCHIVE = $(OUTDIR)/$(ICUDATA_PLATFORM_NAME).dat 173$(ICUDATA_SOURCE_ARCHIVE): $(ICUDATA_ARCHIVE) $(OUTDIR) 174 $(INVOKE) $(TOOLBINDIR)/icupkg -t$(ICUDATA_CHAR) $(ICUDATA_ARCHIVE) $(ICUDATA_SOURCE_ARCHIVE) 175endif 176else 177ifneq ($(ENABLE_STATIC),YES) 178ifeq ($(PKGDATA_MODE),common) 179# We have a source data common archive in the native endianess, 180# and it's what we want to build. Try to not run any of ICU's tools. 181ICUDATA_SOURCE_IS_NATIVE_TARGET=YES 182endif 183endif 184endif 185 186packagedata: icupkg.inc $(PKGDATA_LIST) build-local 187ifneq ($(ENABLE_STATIC),) 188ifeq ($(PKGDATA_MODE),dll) 189 $(PKGDATA_INVOKE) $(PKGDATA) -e $(ICUDATA_ENTRY_POINT) -T $(OUTTMPDIR) -p $(ICUDATA_NAME) $(PKGDATA_LIBSTATICNAME) -m static $(PKGDATA_VERSIONING) $(PKGDATA_LIST) 190endif 191endif 192ifneq ($(ICUDATA_SOURCE_IS_NATIVE_TARGET),YES) 193 $(PKGDATA_INVOKE) $(PKGDATA) -e $(ICUDATA_ENTRY_POINT) -T $(OUTTMPDIR) -p $(ICUDATA_NAME) -m $(PKGDATA_MODE) $(PKGDATA_VERSIONING) $(PKGDATA_LIBNAME) $(PKGDATA_LIST) 194else 195 $(INSTALL_DATA) $(ICUDATA_SOURCE_ARCHIVE) $(OUTDIR) 196endif 197 echo timestamp > $@ 198 199## Install ICU data. 200install-local: $(PKGDATA_LIST) ./icupkg.inc packagedata $(OS390INSTALL) 201 $(MKINSTALLDIRS) $(TMPDATADIR) $(DESTDIR)$(ICUPKGDATA_DIR) 202ifeq ($(PKGDATA_MODE),files) 203 $(MKINSTALLDIRS) $(ICUPKGDATA_DIR)/$(ICUDATA_NAME) 204 $(MKINSTALLDIRS) $(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(CURR_TREE) 205 $(MKINSTALLDIRS) $(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(LANG_TREE) 206 $(MKINSTALLDIRS) $(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(REGION_TREE) 207 $(MKINSTALLDIRS) $(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(ZONE_TREE) 208 $(MKINSTALLDIRS) $(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(UNIT_TREE) 209 $(MKINSTALLDIRS) $(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(BREAK_TREE) 210 $(MKINSTALLDIRS) $(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(COLLATION_TREE) 211 $(MKINSTALLDIRS) $(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(RBNF_TREE) 212 $(MKINSTALLDIRS) $(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(TRANSLIT_TREE) 213endif 214ifneq ($(ENABLE_STATIC),) 215ifeq ($(PKGDATA_MODE),dll) 216 $(PKGDATA_INVOKE) $(PKGDATA) -m static -e $(ICUDATA_ENTRY_POINT) -T $(OUTTMPDIR) -s $(BUILDDIR) -p $(ICUDATA_NAME) $(PKGDATA_LIBSTATICNAME) $(PKGDATA_LIST) -I $(ICUPKGDATA_INSTALL_LIBDIR) 217endif 218endif 219ifneq ($(ICUDATA_SOURCE_IS_NATIVE_TARGET),YES) 220 $(PKGDATA_INVOKE) $(PKGDATA) -m $(PKGDATA_MODE) $(PKGDATA_VERSIONING) -e $(ICUDATA_ENTRY_POINT) -T $(OUTTMPDIR) -s $(BUILDDIR) -p $(ICUDATA_NAME) $(PKGDATA_LIBNAME) $(PKGDATA_LIST) -I $(ICUPKGDATA_INSTALL_DIR) 221else 222 $(INSTALL_DATA) $(ICUDATA_SOURCE_ARCHIVE) $(DESTDIR)$(ICUPKGDATA_DIR) 223endif 224 225 226#### 227#### 228#### 390 support 229install390: package390 230 $(MKINSTALLDIRS) $(TMPDATADIR) $(DESTDIR)$(libdir) 231 $(INVOKE) $(PKGDATA) -s $(BUILDDIR)$(STUB_SUFFIX) -T $(OUTTMPDIR_390STUB) -p $(ICUDATA_NAME)$(STUB_SUFFIX) $(PKGDATA_LIBNAME)$(STUB_SUFFIX) -e $(ICUDATA_ENTRY_POINT) $(OS390LIST) -m dll $(PKGDATA_VERSIONING) -I $(DESTDIR)$(ICUPKGDATA_DIR) 232ifeq ($(PKGDATA_MODE),dll) 233 $(INSTALL-L) $(ICUPKGDATA_OUTDIR)/$(FINAL_IMPORT_LIB) $(DESTDIR)$(ICUPKGDATA_DIR)/$(FINAL_IMPORT_LIB) 234endif 235 236#### $(LIB_ICUDATA_NAME)$(STUB_SUFFIX) is the subset data for batch mode 237package390: $(OUTTMPDIR)/icudata390.lst $(PKGDATA_LIST) ./icupkg.inc packagedata 238 ln -s $(ICUDATA_NAME) $(OUTDIR)/build/$(ICUDATA_NAME)$(STUB_SUFFIX) 239 $(INVOKE) $(PKGDATA) -s $(BUILDDIR)$(STUB_SUFFIX) -T $(OUTTMPDIR_390STUB) -p $(ICUDATA_NAME)$(STUB_SUFFIX) $(PKGDATA_LIBNAME)$(STUB_SUFFIX) -e $(ICUDATA_ENTRY_POINT) $(OS390LIST) -m dll $(PKGDATA_VERSIONING) 240 cp $(ICUPKGDATA_OUTDIR)/$(LIB_ICUDATA_NAME)$(STUB_SUFFIX).$(SO) $(top_builddir)/stubdata/$(LIB_ICUDATA_NAME)$(STUB_SUFFIX).$(SO) 241 242 243##### Define all the data files. the build rule that depends on them is below. 244# X_FILES_SHORT = just the base names (for lists) 245# X_FILES = full paths (for dependency) 246 247## DAT files - Misc. data files. 248# 2005-may-05 Removed Unicode properties files (unorm.icu, uprops.icu, ucase.icu, ubidi.icu) 249# from data build. See Jitterbug 4497. (makedata.mak revision 1.117) 250# 2010-dec Removed pnames.icu. 251# These are now hardcoded in ICU4C and only loaded in ICU4J. 252# 253# Chromium: Drop unames.icu because we don't need Unicode character names. 254DAT_FILES_SHORT=cnvalias.icu coll/ucadata.icu nfkc.nrm nfkc_cf.nrm uts46.nrm 255DAT_FILES=$(DAT_FILES_SHORT:%=$(BUILDDIR)/%) 256 257## BRK files 258BREAK_TREE=brkitr 259-include $(BRKSRCDIR)/brkfiles.mk 260-include $(BRKSRCDIR)/brklocal.mk 261ALL_BRK_SOURCE= $(BRK_SOURCE) $(BRK_SOURCE_LOCAL) 262BRK_FILES_SHORT=$(ALL_BRK_SOURCE:%.txt=$(BREAK_TREE)/%.brk) 263BRK_FILES=$(ALL_BRK_SOURCE:%.txt=$(BRKBLDDIR)/%.brk) 264ifdef BRK_DICT_SOURCE 265ALL_DICT_SOURCE=$(BRK_DICT_SOURCE) $(BRK_DICT_SOURCE_LOCAL) 266DICT_FILES_SHORT=$(ALL_DICT_SOURCE:%.txt=$(BREAK_TREE)/%.dict) 267DICT_FILES=$(ALL_DICT_SOURCE:%.txt=$(BRKBLDDIR)/%.dict) 268endif 269ifdef BRK_RES_SOURCE 270BRS_SRC= root.txt $(BRK_RES_SOURCE) $(BRK_RES_SOURCE_LOCAL) 271BRS_SRC_FILES = $(BRS_SRC:%=$(BRKSRCDIR)/%) 272INSTALLED_BRS_FILES = $(BRK_RES_SOURCE:%.txt=%) $(BRK_RES_SOURCE_LOCAL:%.txt=%) 273endif 274 275## Confusables (Spoofing) files 276ALL_CFU_SOURCE=$(UNICODEDATADIR)/confusables.txt $(UNICODEDATADIR)/confusablesWholeScript.txt 277CFU_FILES_SHORT=confusables.cfu 278CFU_FILES=$(BUILDDIR)/$(CFU_FILES_SHORT) 279 280## UCM files 281-include $(UCMSRCDIR)/ucmcore.mk 282-include $(UCMSRCDIR)/ucmfiles.mk 283-include $(UCMSRCDIR)/ucmebcdic.mk 284-include $(UCMSRCDIR)/ucmlocal.mk 285# Chromium: Drop 2 ibm encodings not necessary. 286ALL_UCM_SOURCE=$(UCM_SOURCE_CORE) $(UCM_SOURCE_FILES) $(UCM_SOURCE_EBCDIC) $(UCM_SOURCE_LOCAL) 287UCM_FILES = $(ALL_UCM_SOURCE:%=$(SRCDATADIR)/%) 288CNV_FILES = $(ALL_UCM_SOURCE:%.ucm=$(BUILDDIR)/%.cnv) 289CNV_FILES_SHORT = $(ALL_UCM_SOURCE:%.ucm=%.cnv) 290UCM_SOURCE_SPECIAL=$(UCM_SOURCE_EBCDIC_IGNORE_SISO) $(UCM_SOURCE_EBCDIC_IGNORE_SISO_LOCAL) 291UCM_FILES_SPECIAL=$(UCM_SOURCE_SPECIAL:%=$(UCMSRCDIR)/%) 292CNV_FILES_SPECIAL=$(UCM_SOURCE_SPECIAL:%.ucm=$(BUILDDIR)/%.cnv) 293CNV_FILES_SHORT_SPECIAL=$(UCM_SOURCE_SPECIAL:%.ucm=%.cnv) 294 295## RES files 296-include $(LOCSRCDIR)/resfiles.mk 297-include $(CURRSRCDIR)/resfiles.mk 298-include $(LANGSRCDIR)/resfiles.mk 299-include $(REGIONSRCDIR)/resfiles.mk 300-include $(ZONESRCDIR)/resfiles.mk 301-include $(UNITSRCDIR)/resfiles.mk 302-include $(COLSRCDIR)/colfiles.mk 303-include $(RBNFSRCDIR)/rbnffiles.mk 304-include $(TRANSLITSRCDIR)/trnsfiles.mk 305-include $(LOCSRCDIR)/reslocal.mk 306-include $(CURRSRCDIR)/reslocal.mk 307-include $(LANGSRCDIR)/reslocal.mk 308-include $(REGIONSRCDIR)/reslocal.mk 309-include $(ZONESRCDIR)/reslocal.mk 310-include $(UNITSRCDIR)/reslocal.mk 311-include $(COLSRCDIR)/collocal.mk 312-include $(BRKSRCDIR)/brslocal.mk 313-include $(RBNFSRCDIR)/rbnflocal.mk 314-include $(TRANSLITSRCDIR)/trnslocal.mk 315ifdef GENRB_SOURCE 316RES_SRC= root.txt $(GENRB_SOURCE) $(GENRB_ALIAS_SOURCE) $(GENRB_SOURCE_LOCAL) $(GENRB_ALIAS_SOURCE_LOCAL) 317RES_SRC_FILES = $(RES_SRC:%=$(LOCSRCDIR)/%) 318INSTALLED_RB_FILES = $(GENRB_SOURCE:%.txt=%) $(GENRB_SOURCE_LOCAL:%.txt=%) 319endif 320ifdef CURR_SOURCE 321CURR_SRC= root.txt supplementalData.txt $(CURR_SOURCE) $(CURR_ALIAS_SOURCE) $(CURR_SOURCE_LOCAL) 322CURR_SRC_FILES = $(CURR_SRC:%=$(CURRSRCDIR)/%) 323INSTALLED_CURR_FILES = $(CURR_SOURCE:%.txt=%) $(CURR_SOURCE_LOCAL:%.txt=%) 324endif 325ifdef LANG_SOURCE 326LANG_SRC= root.txt $(LANG_SOURCE) $(LANG_ALIAS_SOURCE) $(LANG_SOURCE_LOCAL) 327LANG_SRC_FILES = $(LANG_SRC:%=$(LANGSRCDIR)/%) 328INSTALLED_LANG_FILES = $(LANG_SOURCE:%.txt=%) $(LANG_SOURCE_LOCAL:%.txt=%) 329endif 330ifdef REGION_SOURCE 331REGION_SRC= root.txt $(REGION_SOURCE) $(REGION_ALIAS_SOURCE) $(REGION_SOURCE_LOCAL) 332REGION_SRC_FILES = $(REGION_SRC:%=$(REGIONSRCDIR)/%) 333INSTALLED_REGION_FILES = $(REGION_SOURCE:%.txt=%) $(REGION_SOURCE_LOCAL:%.txt=%) 334endif 335ifdef ZONE_SOURCE 336ZONE_SRC= root.txt $(ZONE_SOURCE) $(ZONE_ALIAS_SOURCE) $(ZONE_SOURCE_LOCAL) tzdbNames.txt 337ZONE_SRC_FILES = $(ZONE_SRC:%=$(ZONESRCDIR)/%) 338INSTALLED_ZONE_FILES = $(ZONE_SOURCE:%.txt=%) $(ZONE_SOURCE_LOCAL:%.txt=%) 339endif 340ifdef UNIT_SOURCE 341UNIT_SRC= root.txt $(UNIT_SOURCE) $(UNIT_ALIAS_SOURCE) $(UNIT_SOURCE_LOCAL) 342UNIT_SRC_FILES = $(UNIT_SRC:%=$(UNITSRCDIR)/%) 343INSTALLED_UNIT_FILES = $(UNIT_SOURCE:%.txt=%) $(UNIT_SOURCE_LOCAL:%.txt=%) 344endif 345ifdef COLLATION_SOURCE 346COL_SRC= root.txt $(COLLATION_SOURCE) $(COLLATION_ALIAS_SOURCE) $(COLLATION_SOURCE_LOCAL) 347COL_SRC_FILES = $(COL_SRC:%=$(COLSRCDIR)/%) 348INSTALLED_COL_FILES = $(COLLATION_SOURCE:%.txt=%) $(COLLATION_SOURCE_LOCAL:%.txt=%) 349endif 350ifdef RBNF_SOURCE 351RBNF_SRC= root.txt $(RBNF_SOURCE) $(RBNF_ALIAS_SOURCE) $(RBNF_SOURCE_LOCAL) 352RBNF_SRC_FILES = $(RBNF_SRC:%=$(RBNFSRCDIR)/%) 353INSTALLED_RBNF_FILES = $(RBNF_SOURCE:%.txt=%) $(RBNF_SOURCE_LOCAL:%.txt=%) 354endif 355ifdef TRANSLIT_SOURCE 356TRANSLIT_SRC= $(TRANSLIT_SOURCE) $(TRANSLIT_ALIAS_SOURCE) $(TRANSLIT_SOURCE_LOCAL) 357TRANSLIT_SRC_FILES = $(TRANSLIT_SRC:%=$(TRANSLITSRCDIR)/%) 358INSTALLED_TRANSLIT_FILES = $(TRANSLIT_SOURCE:%.txt=%) $(TRANSLIT_SOURCE_LOCAL:%.txt=%) 359endif 360# Chromium : To save space, use '-R' option (exclude collation rules. just 361# include the compiled binary data.) 362GENRBOPTS=-k -R 363 364## MISC files 365-include $(MISCSRCDIR)/miscfiles.mk 366-include $(MISCSRCDIR)/misclocal.mk 367MSC_SOURCE= $(MISC_SOURCE) $(MISC_SOURCE_LOCAL) 368MSC_SRC_FILES=$(MSC_SOURCE:%=$(MISCSRCDIR)/%) 369 370ifeq ($(ENABLE_SO_VERSION_DATA),1) 371ifeq ($(PKGDATA_MODE),dll) 372SO_VERSION_DATA = $(OUTTMPDIR)/icudata.res 373$(SO_VERSION_DATA) : $(MISCSRCDIR)/icudata.rc | build-dir 374ifeq ($(MSYS_RC_MODE),1) 375 rc.exe -i$(srcdir)/../common -i$(top_builddir)/common -fo$@ $(CPPFLAGS) $< 376else 377 rc.exe /i$(srcdir)/../common /i$(top_builddir)/common /fo$@ $(CPPFLAGS) $(SOURCE_FILE) 378endif 379endif 380endif 381 382INDEX_NAME=res_index 383INDEX_FILE=$(OUTTMPDIR)/$(INDEX_NAME).txt 384 385ALL_RES_SRC= $(RES_SRC) $(TRNS_SOURCE) $(MSC_SOURCE) 386RES_FILES = $(ALL_RES_SRC:%.txt=$(BUILDDIR)/%.res) $(BUILDDIR)/$(INDEX_NAME).res $(BUILDDIR)/pool.res 387RES_FILES_SHORT = $(ALL_RES_SRC:%.txt=%.res) $(INDEX_NAME).res pool.res 388PKGDATA_LIST = $(OUTTMPDIR)/icudata.lst 389 390CURR_TREE=curr 391CURR_INDEX_FILE=$(OUTTMPDIR)/$(CURR_TREE)/$(INDEX_NAME).txt 392CURR_FILES = $(CURR_SRC:%.txt=$(CURRBLDDIR)/%.res) $(CURRBLDDIR)/$(INDEX_NAME).res $(CURRBLDDIR)/pool.res 393CURR_FILES_SHORT = $(CURR_SRC:%.txt=$(CURR_TREE)/%.res) $(CURR_TREE)/$(INDEX_NAME).res $(CURR_TREE)/pool.res 394 395LANG_TREE=lang 396LANG_INDEX_FILE=$(OUTTMPDIR)/$(LANG_TREE)/$(INDEX_NAME).txt 397LANG_FILES = $(LANG_SRC:%.txt=$(LANGBLDDIR)/%.res) $(LANGBLDDIR)/$(INDEX_NAME).res $(LANGBLDDIR)/pool.res 398LANG_FILES_SHORT = $(LANG_SRC:%.txt=$(LANG_TREE)/%.res) $(LANG_TREE)/$(INDEX_NAME).res $(LANG_TREE)/pool.res 399 400REGION_TREE=region 401REGION_INDEX_FILE=$(OUTTMPDIR)/$(REGION_TREE)/$(INDEX_NAME).txt 402REGION_FILES = $(REGION_SRC:%.txt=$(REGIONBLDDIR)/%.res) $(REGIONBLDDIR)/$(INDEX_NAME).res $(REGIONBLDDIR)/pool.res 403REGION_FILES_SHORT = $(REGION_SRC:%.txt=$(REGION_TREE)/%.res) $(REGION_TREE)/$(INDEX_NAME).res $(REGION_TREE)/pool.res 404 405ZONE_TREE=zone 406ZONE_INDEX_FILE=$(OUTTMPDIR)/$(ZONE_TREE)/$(INDEX_NAME).txt 407ZONE_FILES = $(ZONE_SRC:%.txt=$(ZONEBLDDIR)/%.res) $(ZONEBLDDIR)/$(INDEX_NAME).res $(ZONEBLDDIR)/pool.res 408ZONE_FILES_SHORT = $(ZONE_SRC:%.txt=$(ZONE_TREE)/%.res) $(ZONE_TREE)/$(INDEX_NAME).res $(ZONE_TREE)/pool.res 409 410UNIT_TREE=unit 411UNIT_INDEX_FILE=$(OUTTMPDIR)/$(UNIT_TREE)/$(INDEX_NAME).txt 412UNIT_FILES = $(UNIT_SRC:%.txt=$(UNITBLDDIR)/%.res) $(UNITBLDDIR)/$(INDEX_NAME).res $(UNITBLDDIR)/pool.res 413UNIT_FILES_SHORT = $(UNIT_SRC:%.txt=$(UNIT_TREE)/%.res) $(UNIT_TREE)/$(INDEX_NAME).res $(UNIT_TREE)/pool.res 414 415COLLATION_TREE=coll 416COLLATION_INDEX_FILE=$(OUTTMPDIR)/$(COLLATION_TREE)/$(INDEX_NAME).txt 417COLLATION_INDEX_RES=$(COLBLDDIR)/$(INDEX_NAME).res 418COLLATION_INDEX_RES_SHORT=$(COLLATION_TREE)/$(INDEX_NAME).res 419COLLATION_FILES = $(COL_SRC:%.txt=$(COLBLDDIR)/%.res) $(COLLATION_INDEX_RES) 420COLLATION_FILES_SHORT = $(COL_SRC:%.txt=$(COLLATION_TREE)/%.res) 421 422BRK_RES_INDEX_FILE=$(OUTTMPDIR)/$(BREAK_TREE)/$(INDEX_NAME).txt 423BRK_RES_INDEX_RES=$(BRKBLDDIR)/$(INDEX_NAME).res 424BRK_RES_INDEX_RES_SHORT=$(BREAK_TREE)/$(INDEX_NAME).res 425BRK_RES_FILES = $(BRS_SRC:%.txt=$(BRKBLDDIR)/%.res) $(BRK_RES_INDEX_RES) 426BRK_RES_FILES_SHORT = $(BRS_SRC:%.txt=$(BREAK_TREE)/%.res) 427 428RBNF_TREE=rbnf 429RBNF_INDEX_FILE=$(OUTTMPDIR)/$(RBNF_TREE)/$(INDEX_NAME).txt 430RBNF_INDEX_RES=$(RBNFBLDDIR)/$(INDEX_NAME).res 431RBNF_INDEX_RES_SHORT=$(RBNF_TREE)/$(INDEX_NAME).res 432RBNF_FILES = $(RBNF_SRC:%.txt=$(RBNFBLDDIR)/%.res) $(RBNF_INDEX_RES) 433RBNF_FILES_SHORT = $(RBNF_SRC:%.txt=$(RBNF_TREE)/%.res) 434 435TRANSLIT_TREE=translit 436#TRANSLIT_INDEX_FILE=$(OUTTMPDIR)/$(TRANSLIT_TREE)/$(INDEX_NAME).txt 437#TRANSLIT_INDEX_RES=$(TRANSLITBLDDIR)/$(INDEX_NAME).res 438#TRANSLIT_INDEX_RES_SHORT=$(TRANSLIT_TREE)/$(INDEX_NAME).res 439TRANSLIT_FILES = $(TRANSLIT_SRC:%.txt=$(TRANSLITBLDDIR)/%.res) 440TRANSLIT_FILES_SHORT = $(TRANSLIT_SRC:%.txt=$(TRANSLIT_TREE)/%.res) 441 442## SPP files 443-include $(SPREPSRCDIR)/sprepfiles.mk 444-include $(SPREPSRCDIR)/spreplocal.mk 445ALL_SPREP_SOURCE=$(SPREP_SOURCE) $(SPREP_SOURCE_LOCAL) 446SPREP_FILES = $(ALL_SPREP_SOURCE:%.txt=$(BUILDDIR)/%.spp) 447SPREP_FILES_SHORT = $(ALL_SPREP_SOURCE:%.txt=%.spp) 448 449## All generated files 450ALL_FILES = $(DAT_FILES) $(CNV_FILES) $(CNV_FILES_SPECIAL) $(BRK_FILES) $(DICT_FILES) $(RES_FILES) $(INDEX_RES_FILE) $(CURR_FILES) $(LANG_FILES) $(REGION_FILES) $(ZONE_FILES) $(UNIT_FILES) $(COLLATION_FILES) $(BRK_RES_FILES) $(RBNF_FILES) $(TRANSLIT_FILES) $(SPREP_FILES) $(CFU_FILES) 451ALL_INDEX_SRC_FILES = $(PKGDATA_LIST) $(INDEX_FILE) $(CURR_INDEX_FILE) $(LANG_INDEX_FILE) $(REGION_INDEX_FILE) $(ZONE_INDEX_FILE) $(UNIT_INDEX_FILE) $(COLLATION_INDEX_FILE) $(BRK_RES_INDEX_FILE) $(RBNF_INDEX_FILE) 452# a list to use in the .lst files (package-relative) 453COLL_FILES_LIST=$(COLLATION_FILES_SHORT) $(COLLATION_INDEX_RES_SHORT) 454BRK_FILES_LIST=$(BRK_FILES_SHORT) $(BRK_RES_FILES_SHORT) $(BRK_RES_INDEX_RES_SHORT) $(DICT_FILES_SHORT) 455LOCALE_FILES_LIST= $(RES_FILES_SHORT) $(LANG_FILES_SHORT) $(REGION_FILES_SHORT) $(ZONE_FILES_SHORT) $(UNIT_FILES_SHORT) 456MISC_FILES_LIST=$(DAT_FILES_SHORT) $(CNV_FILES_SHORT) $(CNV_FILES_SHORT_SPECIAL) $(CURR_FILES_SHORT) $(RBNF_FILES_SHORT) $(RBNF_INDEX_RES_SHORT) $(TRANSLIT_FILES_SHORT) $(SPREP_FILES_SHORT) $(CFU_FILES_SHORT) 457UNI_CORE_DATA=pnames.icu uprops.icu ucase.icu ubidi.icu nfc.nrm 458UNI_CORE_TARGET_DATA=$(UNI_CORE_DATA:%=$(BUILDDIR)/%) 459 460ifneq ($(INCLUDE_UNI_CORE_DATA),) 461MISC_FILES_LIST+=$(UNI_CORE_DATA) 462build-local: uni-core-data 463 echo timestamp > $@ 464endif 465 466##################################################### 467# General data build rules 468 469## Files to remove for 'make clean' 470CLEANFILES = *~ icupkg.inc *.x 471 472ifeq ($(ICUDATA_SOURCE_ARCHIVE),) 473build-local: build-dir $(SO_VERSION_DATA) $(ALL_FILES) $(PKGDATA_LIST) $(OS390LIST) 474 echo timestamp > $@ 475$(PKGDATA_LIST): $(SRCLISTDEPS) 476 @echo "generating $@ (list of data files)" 477 @-$(RMV) $@ 478 @for file in $(COLL_FILES_LIST); do \ 479 echo $$file >> $@; \ 480 done; 481 @for file in $(BRK_FILES_LIST); do \ 482 echo $$file >> $@; \ 483 done; 484 @for file in $(LOCALE_FILES_LIST); do \ 485 echo $$file >> $@; \ 486 done; 487 @for file in $(MISC_FILES_LIST); do \ 488 echo $$file >> $@; \ 489 done; 490else 491build-local: build-dir $(SO_VERSION_DATA) $(PKGDATA_LIST) $(OS390LIST) 492 echo timestamp > $@ 493$(PKGDATA_LIST): $(SRCLISTDEPS) $(ICUDATA_SOURCE_ARCHIVE) 494ifneq ($(ICUDATA_SOURCE_IS_NATIVE_TARGET),YES) 495 @echo "Unpacking $(ICUDATA_SOURCE_ARCHIVE) and generating $@ (list of data files)" 496 @-$(RMV) $@ 497 $(INVOKE) $(TOOLBINDIR)/icupkg -d $(BUILDDIR) --list -x \* $(ICUDATA_SOURCE_ARCHIVE) -o $@ 498else 499 @echo "$@" > $@ 500endif 501endif 502 503 504$(BUILD_DIRS): build-dir 505 506build-dir: 507 @-$(RMV) $@ 508 echo timestamp > $@.tmp 509 @list='$(BUILD_DIRS)'; \ 510 for dir in $$list; do \ 511 if ! test -d $$dir; then \ 512 echo $(MKINSTALLDIRS) $(BUILD_DIRS); \ 513 $(MKINSTALLDIRS) $(BUILD_DIRS); \ 514 fi; \ 515 done 516 mv $@.tmp $@ 517 518# The | is an order-only prerequisite. This helps when the -j option is used, 519# and we don't want the files to be built before the directories are built. 520ifneq ($(filter order-only,$(.FEATURES)),) 521$(ALL_FILES) $(ALL_INDEX_SRC_FILES): | build-dir 522endif 523 524# Now, sections for building each kind of data. 525 526#################################################### DAT 527# DAT FILES 528 529# cnvalias.icu 530$(BUILDDIR)/cnvalias.icu: $(UCMSRCDIR)/convrtrs.txt $(TOOLBINDIR)/gencnval$(TOOLEXEEXT) 531 $(INVOKE) $(TOOLBINDIR)/gencnval -d $(BUILDDIR) $(UCMSRCDIR)/convrtrs.txt 532 533# Targets for prebuilt Unicode data 534$(BUILDDIR)/%.icu: $(SRCDATADIR)/in/%.icu 535 $(INVOKE) $(TOOLBINDIR)/icupkg -t$(ICUDATA_CHAR) $< $@ 536 537$(BUILDDIR)/%.nrm: $(SRCDATADIR)/in/%.nrm 538 $(INVOKE) $(TOOLBINDIR)/icupkg -t$(ICUDATA_CHAR) $< $@ 539 540# Chromium: To cut down the data size by 280kB, 541# use the code point order for CJK Ideographs in non-CJK locales instead 542# of the UniHan radical-stroke order. The latter is better, but non-CJK 543# locales do not have a great need for sorting CJK Ideographs. 544# Moreover, the most common subset (the original CJK Ideograph block) will 545# still be sorted correctly because the code point order is radical-stroke 546# order. 547$(BUILDDIR)/coll/ucadata.icu: $(SRCDATADIR)/in/coll/ucadata-implicithan.icu 548 $(INVOKE) $(TOOLBINDIR)/icupkg -t$(ICUDATA_CHAR) $< $@ 549 550#################################################### SPP 551# SPP FILES 552 553$(BUILDDIR)/%.spp: $(SPREPSRCDIR)/%.txt $(TOOLBINDIR)/gensprep$(TOOLEXEEXT) $(BUILDDIR)/unames.icu 554 $(INVOKE) $(TOOLBINDIR)/gensprep -d $(BUILDDIR) -i $(BUILDDIR) -s $(SPREPSRCDIR) -b $(@F:%.spp=%) -m $(UNICODEDATADIR) -u 3.2.0 $(<F) 555 556#################################################### BRK 557# BRK FILES 558 559$(BRKBLDDIR)/%.brk: $(BRKRULESRCDIR)/%.txt $(TOOLBINDIR)/genbrk$(TOOLEXEEXT) $(DAT_FILES) 560 $(INVOKE) $(TOOLBINDIR)/genbrk -c -i $(BUILDDIR) -r $< -o $@ 561 562#################################################### DICT 563# DICT FILES 564 565# .dict file generated regardless of whether dictionary file exists 566 567$(BRKBLDDIR)/%.dict: $(TOOLBINDIR)/gendict$(TOOLEXEEXT) $(DAT_FILES) 568 $(INVOKE) $(TOOLBINDIR)/gendict --uchars -c -i $(BUILDDIR) $(DICTSRCDIR)/$(*F).txt $@ 569 570$(BRKBLDDIR)/thaidict.dict: $(TOOLBINDIR)/gendict$(TOOLEXEEXT) $(DAT_FILES) 571 $(INVOKE) $(TOOLBINDIR)/gendict --bytes --transform offset-0x0e00 -c -i $(BUILDDIR) $(DICTSRCDIR)/thaidict.txt $(BRKBLDDIR)/thaidict.dict 572 573$(BRKBLDDIR)/laodict.dict: $(TOOLBINDIR)/gendict$(TOOLEXEEXT) $(DAT_FILES) 574 $(INVOKE) $(TOOLBINDIR)/gendict --bytes --transform offset-0x0e80 -c -i $(BUILDDIR) $(DICTSRCDIR)/laodict.txt $(BRKBLDDIR)/laodict.dict 575 576$(BRKBLDDIR)/burmesedict.dict: $(TOOLBINDIR)/gendict$(TOOLEXEEXT) $(DAT_FILES) 577 $(INVOKE) $(TOOLBINDIR)/gendict --bytes --transform offset-0x1000 -c -i $(BUILDDIR) $(DICTSRCDIR)/burmesedict.txt $(BRKBLDDIR)/burmesedict.dict 578 579# TODO: figure out why combining characters are here? 580$(BRKBLDDIR)/khmerdict.dict: $(TOOLBINDIR)/gendict$(TOOLEXEEXT) $(DAT_FILES) 581 $(INVOKE) $(TOOLBINDIR)/gendict --bytes --transform offset-0x1780 -c -i $(BUILDDIR) $(DICTSRCDIR)/khmerdict.txt $(BRKBLDDIR)/khmerdict.dict 582 583#################################################### CFU 584# CFU FILES 585# Note: gencfu requires two input files to produce a single output file. 586# There will be exactly one target file and two source files. 587# The $(word n, ...) selects the nth word from the following stuff. 588# There must be a nicer way to do this. 589 590$(CFU_FILES): $(ALL_CFU_SOURCE) $(TOOLBINDIR)/gencfu$(TOOLEXEEXT) $(DAT_FILES) 591 $(INVOKE) echo ALL_CFU_SOURCE: $(ALL_CFU_SOURCE) 592 $(INVOKE) echo CFU_FILES: $(CFU_FILES) 593 $(INVOKE) echo CFU_FILES_SHORT: $(CFU_FILES_SHORT) 594 $(INVOKE) $(TOOLBINDIR)/gencfu -c -i $(BUILDDIR) -r $(word 1,$(ALL_CFU_SOURCE)) -w $(word 2,$(ALL_CFU_SOURCE)) -o $@ 595 596 597#################################################### CNV 598# CNV FILES 599$(CNV_FILES_SPECIAL) : $(UCM_FILES_SPECIAL) $(TOOLBINDIR)/makeconv$(TOOLEXEEXT) 600 $(INVOKE) $(TOOLBINDIR)/makeconv --ignore-siso-check -c -d $(BUILDDIR) $(UCMSRCDIR)/$(@F:%.cnv=%.ucm) 601$(BUILDDIR)/%.cnv: $(UCMSRCDIR)/%.ucm $(TOOLBINDIR)/makeconv$(TOOLEXEEXT) 602 $(INVOKE) $(TOOLBINDIR)/makeconv -c -d $(BUILDDIR) $(UCMSRCDIR)/$(<F) 603 604#################################################### RES 605# RES FILES 606 607### curr res 608$(CURRBLDDIR)/%.res: $(CURRSRCDIR)/%.txt $(TOOLBINDIR)/genrb$(TOOLEXEEXT) $(DAT_FILES) | $(BUILDDIR)/cnvalias.icu 609 $(INVOKE) $(TOOLBINDIR)/genrb --usePoolBundle $(GENRBOPTS) -i $(BUILDDIR) -s $(CURRSRCDIR) -d $(CURRBLDDIR) $(<F) 610 611# copy the curr/pool.res file from the source folder to the build output folder 612# and swap it to native endianness 613$(CURRBLDDIR)/pool.res: $(CURRSRCDIR)/pool.res 614 $(INVOKE) $(TOOLBINDIR)/icupkg -t$(ICUDATA_CHAR) $(CURRSRCDIR)/pool.res $(CURRBLDDIR)/pool.res 615 616$(CURRBLDDIR)/$(INDEX_NAME).res: $(OUTTMPDIR)/$(CURR_TREE)/$(INDEX_NAME).txt $(TOOLBINDIR)/genrb$(TOOLEXEEXT) | $(BUILDDIR)/cnvalias.icu 617 $(INVOKE) $(TOOLBINDIR)/genrb $(GENRBOPTS) -i $(BUILDDIR) -s $(OUTTMPDIR)/$(CURR_TREE) -d $(CURRBLDDIR) $(INDEX_NAME).txt 618 619$(CURR_INDEX_FILE): $(SRCLISTDEPS) 620 @echo "generating $@ (list of installed currency name locales)"; \ 621 $(RMV) $@; \ 622 echo "// Warning this file is automatically generated" > $@; \ 623 echo "$(INDEX_NAME):table(nofallback) {" >> $@; \ 624 echo " InstalledLocales {" >> $@; \ 625 for file in $(INSTALLED_CURR_FILES); do \ 626 echo " $$file {\"\"}" >> $@; \ 627 done; \ 628 echo " }" >> $@; \ 629 echo "}" >> $@; 630 631### lang res 632$(LANGBLDDIR)/%.res: $(LANGSRCDIR)/%.txt $(TOOLBINDIR)/genrb$(TOOLEXEEXT) $(DAT_FILES) | $(BUILDDIR)/cnvalias.icu 633 $(INVOKE) $(TOOLBINDIR)/genrb --usePoolBundle $(GENRBOPTS) -i $(BUILDDIR) -s $(LANGSRCDIR) -d $(LANGBLDDIR) $(<F) 634 635# copy the lang/pool.res file from the source folder to the build output folder 636# and swap it to native endianness 637$(LANGBLDDIR)/pool.res: $(LANGSRCDIR)/pool.res 638 $(INVOKE) $(TOOLBINDIR)/icupkg -t$(ICUDATA_CHAR) $(LANGSRCDIR)/pool.res $(LANGBLDDIR)/pool.res 639 640$(LANGBLDDIR)/$(INDEX_NAME).res: $(OUTTMPDIR)/$(LANG_TREE)/$(INDEX_NAME).txt $(TOOLBINDIR)/genrb$(TOOLEXEEXT) | $(BUILDDIR)/cnvalias.icu 641 $(INVOKE) $(TOOLBINDIR)/genrb $(GENRBOPTS) -i $(BUILDDIR) -s $(OUTTMPDIR)/$(LANG_TREE) -d $(LANGBLDDIR) $(INDEX_NAME).txt 642 643$(LANG_INDEX_FILE): $(SRCLISTDEPS) 644 @echo "generating $@ (list of installed language name locales)"; \ 645 $(RMV) $@; \ 646 echo "// Warning this file is automatically generated" > $@; \ 647 echo "$(INDEX_NAME):table(nofallback) {" >> $@; \ 648 echo " InstalledLocales {" >> $@; \ 649 for file in $(INSTALLED_LANG_FILES); do \ 650 echo " $$file {\"\"}" >> $@; \ 651 done; \ 652 echo " }" >> $@; \ 653 echo "}" >> $@; 654 655### region res 656$(REGIONBLDDIR)/%.res: $(REGIONSRCDIR)/%.txt $(TOOLBINDIR)/genrb$(TOOLEXEEXT) $(DAT_FILES) | $(BUILDDIR)/cnvalias.icu 657 $(INVOKE) $(TOOLBINDIR)/genrb --usePoolBundle $(GENRBOPTS) -i $(BUILDDIR) -s $(REGIONSRCDIR) -d $(REGIONBLDDIR) $(<F) 658 659# copy the region/pool.res file from the source folder to the build output folder 660# and swap it to native endianness 661$(REGIONBLDDIR)/pool.res: $(REGIONSRCDIR)/pool.res 662 $(INVOKE) $(TOOLBINDIR)/icupkg -t$(ICUDATA_CHAR) $(REGIONSRCDIR)/pool.res $(REGIONBLDDIR)/pool.res 663 664$(REGIONBLDDIR)/$(INDEX_NAME).res: $(OUTTMPDIR)/$(REGION_TREE)/$(INDEX_NAME).txt $(TOOLBINDIR)/genrb$(TOOLEXEEXT) | $(BUILDDIR)/cnvalias.icu 665 $(INVOKE) $(TOOLBINDIR)/genrb $(GENRBOPTS) -i $(BUILDDIR) -s $(OUTTMPDIR)/$(REGION_TREE) -d $(REGIONBLDDIR) $(INDEX_NAME).txt 666 667$(REGION_INDEX_FILE): $(SRCLISTDEPS) 668 @echo "generating $@ (list of installed region name locales)"; \ 669 $(RMV) $@; \ 670 echo "// Warning this file is automatically generated" > $@; \ 671 echo "$(INDEX_NAME):table(nofallback) {" >> $@; \ 672 echo " InstalledLocales {" >> $@; \ 673 for file in $(INSTALLED_REGION_FILES); do \ 674 echo " $$file {\"\"}" >> $@; \ 675 done; \ 676 echo " }" >> $@; \ 677 echo "}" >> $@; 678 679### zone res 680$(ZONEBLDDIR)/%.res: $(ZONESRCDIR)/%.txt $(TOOLBINDIR)/genrb$(TOOLEXEEXT) $(DAT_FILES) | $(BUILDDIR)/cnvalias.icu 681 $(INVOKE) $(TOOLBINDIR)/genrb --usePoolBundle $(GENRBOPTS) -i $(BUILDDIR) -s $(ZONESRCDIR) -d $(ZONEBLDDIR) $(<F) 682 683# copy the zone/pool.res file from the source folder to the build output folder 684# and swap it to native endianness 685$(ZONEBLDDIR)/pool.res: $(ZONESRCDIR)/pool.res 686 $(INVOKE) $(TOOLBINDIR)/icupkg -t$(ICUDATA_CHAR) $(ZONESRCDIR)/pool.res $(ZONEBLDDIR)/pool.res 687 688$(ZONEBLDDIR)/$(INDEX_NAME).res: $(OUTTMPDIR)/$(ZONE_TREE)/$(INDEX_NAME).txt $(TOOLBINDIR)/genrb$(TOOLEXEEXT) | $(BUILDDIR)/cnvalias.icu 689 $(INVOKE) $(TOOLBINDIR)/genrb $(GENRBOPTS) -i $(BUILDDIR) -s $(OUTTMPDIR)/$(ZONE_TREE) -d $(ZONEBLDDIR) $(INDEX_NAME).txt 690 691$(ZONE_INDEX_FILE): $(SRCLISTDEPS) 692 @echo "generating $@ (list of installed time zone name locales)"; \ 693 $(RMV) $@; \ 694 echo "// Warning this file is automatically generated" > $@; \ 695 echo "$(INDEX_NAME):table(nofallback) {" >> $@; \ 696 echo " InstalledLocales {" >> $@; \ 697 for file in $(INSTALLED_ZONE_FILES); do \ 698 echo " $$file {\"\"}" >> $@; \ 699 done; \ 700 echo " }" >> $@; \ 701 echo "}" >> $@; 702 703### unit res 704$(UNITBLDDIR)/%.res: $(UNITSRCDIR)/%.txt $(TOOLBINDIR)/genrb$(TOOLEXEEXT) $(DAT_FILES) 705 $(INVOKE) $(TOOLBINDIR)/genrb --usePoolBundle $(GENRBOPTS) -i $(BUILDDIR) -s $(UNITSRCDIR) -d $(UNITBLDDIR) $(<F) 706 707# copy the unit/pool.res file from the source folder to the build output folder 708# and swap it to native endianness 709$(UNITBLDDIR)/pool.res: $(UNITSRCDIR)/pool.res 710 $(INVOKE) $(TOOLBINDIR)/icupkg -t$(ICUDATA_CHAR) $(UNITSRCDIR)/pool.res $(UNITBLDDIR)/pool.res 711 712$(UNITBLDDIR)/$(INDEX_NAME).res: $(OUTTMPDIR)/$(UNIT_TREE)/$(INDEX_NAME).txt $(TOOLBINDIR)/genrb$(TOOLEXEEXT) 713 $(INVOKE) $(TOOLBINDIR)/genrb $(GENRBOPTS) -i $(BUILDDIR) -s $(OUTTMPDIR)/$(UNIT_TREE) -d $(UNITBLDDIR) $(INDEX_NAME).txt 714 715$(UNIT_INDEX_FILE): $(SRCLISTDEPS) 716 @echo "generating $@ (list of installed time zone name locales)"; \ 717 $(RMV) $@; \ 718 echo "// Warning this file is automatically generated" > $@; \ 719 echo "$(INDEX_NAME):table(nofallback) {" >> $@; \ 720 echo " InstalledLocales {" >> $@; \ 721 for file in $(INSTALLED_UNIT_FILES); do \ 722 echo " $$file {\"\"}" >> $@; \ 723 done; \ 724 echo " }" >> $@; \ 725 echo "}" >> $@; 726 727### collation res 728$(COLBLDDIR)/%.res: $(COLSRCDIR)/%.txt $(TOOLBINDIR)/genrb$(TOOLEXEEXT) $(DAT_FILES) | $(BUILDDIR)/cnvalias.icu 729 $(INVOKE) $(TOOLBINDIR)/genrb $(GENRBOPTS) -i $(BUILDDIR) -s $(COLSRCDIR) -d $(COLBLDDIR) $(<F) 730 731$(COLBLDDIR)/$(INDEX_NAME).res: $(OUTTMPDIR)/$(COLLATION_TREE)/$(INDEX_NAME).txt $(TOOLBINDIR)/genrb$(TOOLEXEEXT) | $(BUILDDIR)/cnvalias.icu 732 $(INVOKE) $(TOOLBINDIR)/genrb $(GENRBOPTS) -i $(BUILDDIR) -s $(OUTTMPDIR)/$(COLLATION_TREE) -d $(COLBLDDIR) $(INDEX_NAME).txt 733 734$(COLLATION_INDEX_FILE): $(SRCLISTDEPS) 735 @echo "generating $@ (list of installed collation locales)"; \ 736 $(RMV) $@; \ 737 echo "// Warning this file is automatically generated" > $@; \ 738 echo "$(INDEX_NAME):table(nofallback) {" >> $@; \ 739 echo " InstalledLocales {" >> $@; \ 740 for file in $(INSTALLED_COL_FILES); do \ 741 echo " $$file {\"\"}" >> $@; \ 742 done; \ 743 echo " }" >> $@; \ 744 echo "}" >> $@; 745 746### brk res 747$(BRKBLDDIR)/%.res: $(BRKSRCDIR)/%.txt $(TOOLBINDIR)/genrb$(TOOLEXEEXT) $(BRK_FILES) $(DICT_FILES) $(DAT_FILES) | $(BUILDDIR)/cnvalias.icu 748 $(INVOKE) $(TOOLBINDIR)/genrb $(GENRBOPTS) -i $(BUILDDIR) -s $(BRKSRCDIR) -d $(BRKBLDDIR) $(<F) 749 750$(BRKBLDDIR)/$(INDEX_NAME).res: $(OUTTMPDIR)/$(BREAK_TREE)/$(INDEX_NAME).txt $(TOOLBINDIR)/genrb$(TOOLEXEEXT) | $(BUILDDIR)/cnvalias.icu 751 $(INVOKE) $(TOOLBINDIR)/genrb $(GENRBOPTS) -i $(BUILDDIR) -s $(OUTTMPDIR)/$(BREAK_TREE) -d $(BRKBLDDIR) $(INDEX_NAME).txt 752 753$(BRK_RES_INDEX_FILE): $(SRCLISTDEPS) 754 @echo "generating $@ (list of installed break locales)"; \ 755 $(RMV) $@; \ 756 echo "// Warning this file is automatically generated" > $@; \ 757 echo "$(INDEX_NAME):table(nofallback) {" >> $@; \ 758 echo " InstalledLocales {" >> $@; \ 759 for file in $(INSTALLED_BRS_FILES); do \ 760 echo " $$file {\"\"}" >> $@; \ 761 done; \ 762 echo " }" >> $@; \ 763 echo "}" >> $@; 764 765### RBNF res 766$(RBNFBLDDIR)/%.res: $(RBNFSRCDIR)/%.txt $(TOOLBINDIR)/genrb$(TOOLEXEEXT) $(DAT_FILES) | $(BUILDDIR)/cnvalias.icu 767 $(INVOKE) $(TOOLBINDIR)/genrb $(GENRBOPTS) -i $(BUILDDIR) -s $(RBNFSRCDIR) -d $(RBNFBLDDIR) $(<F) 768 769$(RBNFBLDDIR)/$(INDEX_NAME).res: $(OUTTMPDIR)/$(RBNF_TREE)/$(INDEX_NAME).txt $(TOOLBINDIR)/genrb$(TOOLEXEEXT) | $(BUILDDIR)/cnvalias.icu 770 $(INVOKE) $(TOOLBINDIR)/genrb $(GENRBOPTS) -i $(BUILDDIR) -s $(OUTTMPDIR)/$(RBNF_TREE) -d $(RBNFBLDDIR) $(INDEX_NAME).txt 771 772$(RBNF_INDEX_FILE): $(SRCLISTDEPS) 773 @echo "generating $@ (list of installed RBNF locales)"; \ 774 $(RMV) $@; \ 775 echo "// Warning this file is automatically generated" > $@; \ 776 echo "$(INDEX_NAME):table(nofallback) {" >> $@; \ 777 echo " InstalledLocales {" >> $@; \ 778 for file in $(INSTALLED_RBNF_FILES); do \ 779 echo " $$file {\"\"}" >> $@; \ 780 done; \ 781 echo " }" >> $@; \ 782 echo "}" >> $@; 783 784### TRANSLIT res 785$(TRANSLITBLDDIR)/%.res: $(TRANSLITSRCDIR)/%.txt $(TOOLBINDIR)/genrb$(TOOLEXEEXT) $(DAT_FILES) | $(BUILDDIR)/cnvalias.icu 786 $(INVOKE) $(TOOLBINDIR)/genrb $(GENRBOPTS) -i $(BUILDDIR) -s $(TRANSLITSRCDIR) -d $(TRANSLITBLDDIR) $(<F) 787 788### normal (locale) res 789all-RES: $(RES_FILES) 790 791$(BUILDDIR)/%.res: $(LOCSRCDIR)/%.txt $(TOOLBINDIR)/genrb$(TOOLEXEEXT) $(DAT_FILES) | $(BUILDDIR)/cnvalias.icu 792 $(INVOKE) $(TOOLBINDIR)/genrb --usePoolBundle $(GENRBOPTS) -i $(BUILDDIR) -s $(LOCSRCDIR) -d $(BUILDDIR) $(<F) 793 794# copy the locales/pool.res file from the source folder to the build output folder 795# and swap it to native endianness 796$(BUILDDIR)/pool.res: $(LOCSRCDIR)/pool.res 797 $(INVOKE) $(TOOLBINDIR)/icupkg -t$(ICUDATA_CHAR) $(LOCSRCDIR)/pool.res $(BUILDDIR)/pool.res 798 799# if the tzcode directory contains a new tzdata*.tar.gz file, use it for zoneinfo 800ifeq ($(TZDATA),) 801TZDATA = $(firstword $(wildcard $(top_builddir)/tools/tzcode/tzdata*.tar.gz) $(wildcard $(top_srcdir)/tools/tzcode/tzdata*.tar.gz)) 802endif 803 804ifneq ($(TZDATA),) 805 806TZCODE_DIR=$(top_builddir)/tools/tzcode 807ZONEINFO=$(TZCODE_DIR)/zoneinfo64.txt 808 809# Override the normal genrb for zoneinfo to always pull from 810# icu/source/tools/tzcode/zoneinfo64.txt 811$(BUILDDIR)/zoneinfo64.res: $(ZONEINFO) $(TOOLBINDIR)/genrb$(TOOLEXEEXT) | $(BUILDDIR)/cnvalias.icu 812 @echo Note: $(MISCSRCDIR)/zoneinfo.txt is IGNORED because $(TZDATA) is present. 813 $(INVOKE) $(TOOLBINDIR)/genrb $(GENRBOPTS) -q -i $(BUILDDIR) -d $(BUILDDIR) $(ZONEINFO) 814 815# Create the tzcode tool and zoneinfo as needed. 816$(ZONEINFO): $(TZDATA) 817 @echo "$(MAKE)[$(MAKELEVEL)]: Making \`$(ZONEINFO)' in \`$(TZCODE_DIR)'"; \ 818 (cd $(TZCODE_DIR) && $(MAKE)) || exit; \ 819 820# end of zoneinfo-generation 821endif 822 823# zoneinfo has some issues. Ignore some warnings with -q 824$(BUILDDIR)/%.res: $(MISCSRCDIR)/%.txt $(TOOLBINDIR)/genrb$(TOOLEXEEXT) | $(BUILDDIR)/cnvalias.icu 825 $(INVOKE) $(TOOLBINDIR)/genrb $(GENRBOPTS) -q -i $(BUILDDIR) -s $(MISCSRCDIR) -d $(BUILDDIR) $(<F) 826 827 828 829$(INDEX_FILE): $(SRCLISTDEPS) 830 @echo "generating $@ (list of installed locales)"; \ 831 $(RMV) $@; \ 832 echo "// Warning this file is automatically generated" > $@; \ 833 echo "$(INDEX_NAME):table(nofallback) {" >> $@; \ 834 echo " CLDRVersion { \"$(GENRB_CLDR_VERSION)\" }" >> $@; \ 835 echo " InstalledLocales {" >> $@; \ 836 for file in $(INSTALLED_RB_FILES); do \ 837 echo " $$file {\"\"}" >> $@; \ 838 done; \ 839 echo " }" >> $@; \ 840 echo "}" >> $@; 841 842clean-resindex: 843 -$(RMV) $(BUILDDIR)/$(INDEX_NAME).txt $(PKGDATA_LIST) 844 845$(BUILDDIR)/$(INDEX_NAME).res: $(INDEX_FILE) $(TOOLBINDIR)/genrb$(TOOLEXEEXT) | $(BUILDDIR)/cnvalias.icu 846 $(INVOKE) $(TOOLBINDIR)/genrb $(GENRBOPTS) -i $(BUILDDIR) -d $(BUILDDIR) $(INDEX_FILE) 847 848# The core Unicode properties files (pnames.icu, uprops.icu, ucase.icu, ubidi.icu) 849# are hardcoded in the common DLL and therefore not included in the data package any more. 850# They are not built by default but need to be built for ICU4J data and for getting the .c source files 851# when updating the Unicode data. 852uni-core-data: build-dir $(UNI_CORE_TARGET_DATA) 853 @echo Unicode .icu files built to $(BUILDDIR) 854 echo timestamp > $@ 855 856# Build the ICU4J icudata.jar. 857# Command line: 858# (Run this from the output data folder which may not be .../source/data in an out-of-source build.) 859# ~/svn.icu/trunk/source/data> make JAR=jar ICU4J_ROOT=~/svn.icu4j/trunk icudata.jar 860# You can omit the ICU4J_ROOT for just building the .jar files without copying them. 861# You can omit the JAR if it's just jar. 862JAR=jar 863 864# For building the testdata.jar see ../test/testdata/Makefile. 865 866ICU4J_TZDATA=$(OUTDIR)/icu4j/icutzdata.jar 867ICU4J_TZDATA_FILES=zoneinfo64 metaZones timezoneTypes windowsZones 868ICU4J_DATA_DIRNAME=com/ibm/icu/impl/data/$(ICUDATA_BASENAME_VERSION)b 869ICU4J_TZDATA_PATHS=$(ICU4J_TZDATA_FILES:%="$(ICU4J_DATA_DIRNAME)/%.res") 870 871# generate icu4j-related data to $(OUTDIR)/icu4j/com/ibm/icu/impl/data/... 872generate-data: build-dir packagedata $(OUTTMPDIR)/$(ICUDATA_PLATFORM_NAME).dat uni-core-data 873 mkdir -p $(OUTDIR)/icu4j/$(ICU4J_DATA_DIRNAME) 874 mkdir -p $(OUTDIR)/icu4j/tzdata/$(ICU4J_DATA_DIRNAME) 875 echo $(UNI_CORE_DATA) > $(OUTDIR)/icu4j/add.txt 876 $(INVOKE) $(TOOLBINDIR)/icupkg $(OUTTMPDIR)/$(ICUDATA_PLATFORM_NAME).dat $(OUTDIR)/icu4j/$(ICUDATA_BASENAME_VERSION)b.dat -a $(OUTDIR)/icu4j/add.txt -s $(BUILDDIR) -x '*' -tb -d $(OUTDIR)/icu4j/$(ICU4J_DATA_DIRNAME) 877 mv $(ICU4J_TZDATA_PATHS:%=$(OUTDIR)/icu4j/%) "$(OUTDIR)/icu4j/tzdata/$(ICU4J_DATA_DIRNAME)" 878 879$(OUTDIR)/icu4j/icutzdata.jar: generate-data 880 $(JAR) cf $(OUTDIR)/icu4j/icutzdata.jar -C $(OUTDIR)/icu4j/tzdata $(ICU4J_DATA_DIRNAME)/ 881 882# Build icudata.jar: 883# - add the uni-core-data to the ICU package 884# - swap the ICU data 885# - extract all data items 886# - package them into the .jar file 887$(OUTDIR)/icu4j/icudata.jar: generate-data 888 $(JAR) cf $(OUTDIR)/icu4j/icudata.jar -C $(OUTDIR)/icu4j $(ICU4J_DATA_DIRNAME)/ 889 890ICU4J_DATA=$(OUTDIR)/icu4j/icudata.jar 891 892ifdef ICU4J_ROOT 893 894ICU4J_DATA_INSTALLED=$(ICU4J_ROOT)/main/shared/data/icudata.jar $(ICU4J_ROOT)/main/shared/data/icutzdata.jar 895 896$(ICU4J_ROOT)/main/shared/data/icudata.jar: $(OUTDIR)/icu4j/icudata.jar 897 mkdir -p $(ICU4J_ROOT)/main/shared/data 898 cp $(OUTDIR)/icu4j/icudata.jar $(ICU4J_ROOT)/main/shared/data 899 900$(ICU4J_ROOT)/main/shared/data/icutzdata.jar: $(OUTDIR)/icu4j/icutzdata.jar 901 mkdir -p $(ICU4J_ROOT)/main/shared/data 902 cp $(OUTDIR)/icu4j/icutzdata.jar $(ICU4J_ROOT)/main/shared/data 903 904icu4j-data-install: $(ICU4J_DATA_INSTALLED) 905 906else 907 908icu4j-data-install: icu4j-data 909 @echo data is built into $(OUTDIR)/icu4j 910 @echo '** Error:' ICU4J_ROOT was not set, could not install 911 exit 1 912 913endif 914 915icu4j-data: $(ICU4J_DATA) $(ICU4J_TZDATA) 916 917 918################################################################### 919Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status 920 cd $(top_builddir) \ 921 && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status 922 923icupkg.inc: pkgdataMakefile 924 $(MAKE) -f pkgdataMakefile 925 926pkgdataMakefile: 927 cd $(top_builddir) \ 928 && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status 929 930########### 931########### 390 (z/OS) support 932UCMFILES390=ebcdic-xml-us.ucm ibm-37_P100-1995.ucm ibm-1047_P100-1995.ucm ibm-4909_P100-1999.ucm 933# used to depend on pnames.icu uprops.icu ucase.icu ubidi.icu 934# These are now hardcoded in ICU4C and only loaded in ICU4J. 935ALLFILES390=cnvalias.icu $(UCMFILES390:.ucm=.cnv) 936 937$(OUTTMPDIR)/icudata390.lst: $(SRCLISTDEPS) 938 @echo "generating $@ (list of 390 data files)" 939 @-$(RMV) $@ 940 @for file in $(ALLFILES390); do \ 941 echo $$file >> $@; \ 942 done; 943 944ifeq ($(POST_DATA_BUILD), os400-data-rebind) 945os400-data-rebind: $(LIBICUUC) 946 947$(LIBICUUC): $(LIBICUDT) 948 $(RMV) $(LIBICUUC) 949 (cd ../common && $(MAKE) RECURSIVE=YES) || exit; 950endif 951 952