# Copyright (C) 2008-2012 IBM Corporation and Others. All Rights Reserved.
MULTICU_ROOT=../../
include $(MULTICU_ROOT)/common/Makefile-multi.inc

XML=./xml
JXML=./jxml
JVMXML=./jvmxml

COOKED=cooked
INPUT=input
INTROXMLS=$(wildcard $(INPUT)/*-introduction.xml)
FEATXMLS=$(INTROXMLS:$(INPUT)/%-introduction.xml=$(COOKED)/%-cooked.xml) $(COOKED)/characters.xml
ALLCOOKED=cooked/features.xml

# java stuff
MergerName=Merger
PropagateName=PropagateFeatures
PropagateCharsName=PropagateCharacters
MergerPackage=com.ibm.icu.dev.meta
MergerPackageSlash=$(subst .,/,$(MergerPackage))
## ICUMETA=/xsrl/E/data/meta  (in Makefile.local)
MergerLib=$(ICUMETA)/lib
MergerJar=$(ICUMETA)/icumeta.jar
#was: $(ICUMETA)/classes
MergerClassPath=$(shell ls $(MergerLib)/*.jar | tr '\n' ':')$(MergerJar):$(OTHERJARS)
include Makefile.local
MergerBuild=$(ICUMETA)/build.xml
#MergerClass=$(ICUMETA)/classes/$(MergerPackageSlash)/$(MergerName).class
#MergerJava=$(ICUMETA)/src/$(MergerPackageSlash)/$(MergerName).java
#BASEXMLS=$(ICUMETA)/xml/icumeta.xml
BASEXMLS=$(ICUMETA)/input/versions.xml


APRECIOUS=$(ICUVERS:%=$(BLD)/%/$(S_SRC)) $(ICUVERS:%=$(BLD)/%/$(S_BLD)) $(ICUVERS:%=$(INS)/%/$(S_INS))

all: icucaps.xml

.PRECIOUS: $(APRECIOUS)

tehprecious:
	echo $(APRECIOUS)

$(MergerJar):
	( cd $(ICUMETA)  ; ant jar )

$(BLD):
	-mkdir $(BLD)

$(XML):
	-mkdir $(XML)

$(JXML):
	-mkdir $(JXML)

$(JVMXML):
	-mkdir $(JXML)

ifeq ($(JVMSH),)
JVMSH_WARN=warn-jvmsh
warn-jvmsh:
	@echo "Note: No $(JVM)/*$(JVM_CFG) files found, see $(JVM)/readme.txt"
endif


DTDCACHE=$(shell pwd)/dtdcache
DTDTMP=$(shell pwd)/dtdtmp
DTDOVR=$(ICUMETA)/dtd
JAVADEBUG=-DCLDR_DTD_CACHE_DEBUG=n -DCLDR_DTD_CACHE_ADEBUG=n 
JAVAPROPS= -DCLDR_DTD_CACHE=$(DTDCACHE) -DCLDR_DTD_OVERRIDE=$(DTDOVR) -DICU_DTD_CACHE=$(DTDCACHE) -DICU_DTD_OVERRIDE=$DTDOVR 

#//$(DTD)/Makefile: $(ICUMETA)/dtd/Makfile
#//	ln -s $^ $@
#//
#//dtd/icucaps.dtd: $(DTD)/Makefile dtd/icucaps.rnc
#//	make -C $(DTD)

ICUMETA_XML=$(ICUMETA)/xml/icumeta.xml
BASE_VERSION=$(COOKED)/allversions.xml
BASE_SOURCE=$(BASEXMLS) $(INPUT)/java.xml


#$(ICUMETA)/xml/icumeta.xml: $(MergerBuild)
#	( cd $(ICUMETA) ; ant xml )	

ALLXMLS=$(wildcard $(XML)/*.xml $(JXML)/*.xml $(JVMXML)/*.xml)

allxmls: $(XML) $(JXML) $(JVMXML)
	$(MAKE) -f Makefile_c outfiles
	$(MAKE) -f Makefile_j outfiles


featxmls: $(FEATXMLS)

allcooked: $(ALLCOOKED)

$(COOKED):
	-mkdir $(COOKED)

$(BASE_VERSION): $(BASE_SOURCE) $(MergerJar) | $(COOKED)
	-rm -rf ./dtdcache
	mkdir dtdcache
	java $(JAVAPROPS) -classpath $(MergerClassPath) $(MergerPackage).$(MergerName) -v  -o:$@ $(BASE_SOURCE)

$(ALLCOOKED): $(FEATXMLS) $(MergerJar)
	-rm -rf ./dtdcache
	mkdir dtdcache
	java $(JAVAPROPS) -classpath $(MergerClassPath) $(MergerPackage).$(MergerName) -v  -o:$@ $(FEATXMLS)

$(COOKED)/%-cooked.xml: $(BASE_VERSION) $(INPUT)/%-introduction.xml $(MergerJar) | $(COOKED)
	-rm -rf ./dtdcache
	mkdir dtdcache
	java $(JAVAPROPS) -classpath $(MergerClassPath) $(MergerPackage).$(PropagateName) $(BASE_VERSION) $(INPUT)/$*-introduction.xml > $(COOKED)/$*-cooked.xml

$(COOKED)/characters.xml: $(ALLXMLS) $(COOKED)/junicode-cooked.xml $(MergerJar)
	java $(JAVAPROPS) -classpath $(MergerClassPath) $(MergerPackage).$(PropagateCharsName) > $@ $(ALLXMLS)  $(COOKED)/junicode-cooked.xml  || (rm ./$@ ; false)

 
icucaps.xml: allxmls $(BASE_VERSION)  $(ALLXMLS) $(MergerJar) $(ALLCOOKED)
	-rm -rf ./dtdcache
	mkdir dtdcache
#	-rm -rf ./dtdtmp
#	mkdir dtdtmp
#	ln -s $(ICUMETA)/dtd/*.dtd ./dtdtmp/
#	ln -s ./dtd/*.dtd ./dtdtmp/
	java $(JAVAPROPS) -classpath $(MergerClassPath) $(MergerPackage).$(MergerName) -v  -o:$@ $(BASE_VERSION)  $(ALLXMLS) $(ALLJXMLS) $(ALLCOOKED)

