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

TOP=../..
srcdir = .
top_srcdir = $(TOP)

top_builddir = $(TOP)

-include $(TOP)/icudefs.mk
ICUDIR=ICUunrenamed
#SO=so

COM=$(ICUDIR)/lib/libicuuc.$(SO)
I18=$(ICUDIR)/lib/libicui18n.$(SO)
LAY=$(ICUDIR)/lib/libicule.$(SO)
LEX=$(ICUDIR)/lib/libiculx.$(SO)
DAT=$(ICUDIR)/stubdata/libicudata.$(SO)
UIO=$(ICUDIR)/lib/libicuio.$(SO)

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

# Extra flags to prevent internal API from being hidden.
# This is important because ELF (Linux) based platforms that don't hide internal
# API will allow a duplicate internal name to resolve to an external library.
# See the gcc manual on the "visibility" attribute for details.
FLAG_OVERRIDE= LIBCFLAGS= LIBCXXFLAGS= $(EXTRA_MAKE_OPTIONS)

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-tests=no --prefix=`pwd` $(GENREN_CONFIGURE_OPTS) )
    # cause lib and bin to be created, and any other general sanity
	$(MAKE) $(FLAG_OVERRIDE) -C $(ICUDIR) clean
	$(MAKE) $(FLAG_OVERRIDE) -C $(ICUDIR) all-local

# build the libraries
$(DAT): $(ICUDIR)/config.status Makefile
	$(MAKE) $(FLAG_OVERRIDE) -C $(ICUDIR)/stubdata  all-local

$(COM): $(DAT) $(ICUDIR)/config.status Makefile
	$(MAKE) $(FLAG_OVERRIDE) -C $(ICUDIR)/common all-local

$(I18): $(DAT) $(COM) $(ICUDIR)/config.status Makefile
	$(MAKE) $(FLAG_OVERRIDE) -C $(ICUDIR)/i18n all-local

$(LAY): $(DAT) $(I18) $(COM) $(ICUDIR)/config.status Makefile
	$(MAKE) $(FLAG_OVERRIDE) -C $(ICUDIR)/layout all-local

$(LEX): $(DAT) $(I18) $(COM) $(ICUDIR)/config.status Makefile
	$(MAKE) $(FLAG_OVERRIDE) -C $(ICUDIR)/layoutex all-local

$(UIO):	$(DAT) $(I18) $(COM) $(ICUDIR)/config.status Makefile
	$(MAKE) $(FLAG_OVERRIDE) -C $(ICUDIR)/io all-local

# the header itself
urename.h: $(LIBS) genren.pl
	-cp urename.h urename.h.old
	perl ./genren.pl $(GENREN_PL_OPTS) $(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/

-include Makefile.local

