#******************************************************************************
#
#   Copyright (C) 2002, International Business Machines
#   Corporation and others.  All Rights Reserved.
#
#******************************************************************************

ICUDIR=ICUunrenamed
TOP=../..
SO=so

COM=$(ICUDIR)/common/libicuuc.$(SO)
I18=$(ICUDIR)/i18n/libicui18n.$(SO)
LAY=$(ICUDIR)/layout/libicule.$(SO)
DAT=$(ICUDIR)/stubdata/libicudata.$(SO)
UIO=$(ICUDIR)/extra/ustdio/libustdio.$(SO)

LIBS=$(COM) $(I18) $(LAY) $(UIO)

all:
	@cat README

clean:
	-rm -rf $(ICUDIR) urename.* *~

# We use config.status to mean we have a valid out of source tree.

$(ICUDIR)/config.status:
	-mv $(ICUDIR) $(ICUDIR)old
	-(rm -rf $(ICUDIR)old &)
	mkdir $(ICUDIR)
	( cd $(ICUDIR) ; CPPFLAGS=-DURENAME_H $(TOP)/../configure --with-data-packaging=archive --enable-layout=yes --enable-tests=no --enable-extras=yes --prefix=`pwd` $(GENREN_CONFIGURE_OPTS) )

# build the libraries
$(DAT): $(ICUDIR)/config.status Makefile
	gmake -C $(ICUDIR)/stubdata libicudata.$(SO)

$(COM): $(DAT) $(ICUDIR)/config.status Makefile
	gmake -C $(ICUDIR)/common libicuuc.$(SO)

$(I18): $(DAT) $(COM) $(ICUDIR)/config.status Makefile
	gmake -C $(ICUDIR)/i18n libicui18n.$(SO)

$(LAY): $(DAT) $(I18) $(COM) $(ICUDIR)/config.status Makefile
	gmake -C $(ICUDIR)/layout libicule.$(SO)

$(UIO):	$(DAT) $(I18) $(COM) $(ICUDIR)/config.status Makefile
	gmake -C $(ICUDIR)/extra/ustdio libustdio.$(SO)

# the header itself
urename.h: $(LIBS) genren.pl
	-cp urename.h urename.h.old
	perl ./genren.pl $(LIBS)

sorts:	urename.sort urename.old.sort
	@echo "*** Please check urename.h manually before committing it."
	@echo "Try 'diff --side-by-side urename.old.sort urename.sort'"

urename.sort: urename.h
	sort urename.h > $@

urename.old.sort: $(TOP)/common/unicode/urename.h
	sort  $(TOP)/common/unicode/urename.h > $@

install-header: urename.h sorts
	cp $(TOP)/common/unicode/urename.h $(TOP)/common/unicode/urename.h.old
	cp urename.h $(TOP)/common/unicode/


