#
# Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#

#
# Rules to create $(JDK_OUTPUTDIR)/gensrc/sun/lang/CharacterData*.java
#

GENSRC_CHARACTERDATA :=

CHARACTERDATA = $(JDK_TOPDIR)/make/data/characterdata
UNICODEDATA = $(JDK_TOPDIR)/make/data/unicodedata

define SetupCharacterData
  $(JDK_OUTPUTDIR)/gensrc/java/lang/$1.java: $(CHARACTERDATA)/$1.java.template $(BUILD_TOOLS)
	$(MKDIR) -p $$(@D)
	$(ECHO) $(LOG_INFO) Generating $1.java
	$(TOOL_GENERATECHARACTER) $2 \
	    -template $(CHARACTERDATA)/$1.java.template \
	    -spec $(UNICODEDATA)/UnicodeData.txt \
	    -specialcasing $(UNICODEDATA)/SpecialCasing.txt \
	    -proplist $(UNICODEDATA)/PropList.txt \
	    -o $(JDK_OUTPUTDIR)/gensrc/java/lang/$1.java -string \
	    -usecharforbyte $3

  GENSRC_CHARACTERDATA += $(JDK_OUTPUTDIR)/gensrc/java/lang/$1.java
endef

$(eval $(call SetupCharacterData,CharacterDataLatin1, , -latin1 8))
$(eval $(call SetupCharacterData,CharacterData00, -plane 0, 11 4 1))
$(eval $(call SetupCharacterData,CharacterData01, -plane 1, 11 4 1))
$(eval $(call SetupCharacterData,CharacterData02, -plane 2, 11 4 1))
$(eval $(call SetupCharacterData,CharacterData0E, -plane 14, 11 4 1))

# Copy two Java files that need no preprocessing.
$(JDK_OUTPUTDIR)/gensrc/java/lang/%.java: $(CHARACTERDATA)/%.java.template
	$(ECHO) $(LOG_INFO) Generating $(@F)
	$(call install-file)

GENSRC_CHARACTERDATA += $(JDK_OUTPUTDIR)/gensrc/java/lang/CharacterDataUndefined.java \
    $(JDK_OUTPUTDIR)/gensrc/java/lang/CharacterDataPrivateUse.java

$(GENSRC_CHARACTERDATA): $(BUILD_TOOLS)
