## Makefile.in for ICU tools
## Copyright (c) 1999-2000, International Business Machines Corporation and
## others. All Rights Reserved.

## Source directory information
srcdir = @srcdir@
top_srcdir = @top_srcdir@

top_builddir = ..

include $(top_builddir)/icudefs.mk

include @platform_make_fragment@

##

CPPFLAGS = @CPPFLAGS@ -I$(top_srcdir)/common -I$(top_builddir)/common
CFLAGS = @CFLAGS@
CXXFLAGS = @CXXFLAGS@

## Build directory information
subdir = tools

# OBJDATADIR must be a short path (with ..'s) to the data.

SRCDATADIR=$(top_srcdir)/../data

OBJDATADIR=$(top_builddir)/data
# tmpdir is INSIDE pkgdata dir. if you change TMPDATADIR then the invokation
# of pkgdata will break...
TMPDATADIR=tmp

# DATABUILDDIR must be an absolute path because of the way pkgdata is invoked
# from the temporary directory.

DATABUILDDIR=$(OBJDATADIR)

# relative lib links from pkgdata are the same as for tmp
top_builddir_from_tmp = $(patsubst ..%,../..%,$(top_builddir))
INVOKE = $(LDLIBRARYPATH_ENVVAR)=$(top_builddir_from_tmp)/common:$(top_builddir_from_tmp)/tools/toolutil:$$$(LDLIBRARYPATH_ENVVAR)
PKGDATA = ../pkgdata/pkgdata -T . -s $(DATABUILDDIR) -O ./icupkg.inc -d $(DATABUILDDIR) 
PKGDATA_VERSIONING = -r $(SO_TARGET_VERSION)

## Install program information
MKINSTALLDIRS = $(SHELL) $(top_srcdir)/mkinstalldirs

INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@

## for cleaning up libraries
STRIP = @STRIP@

## Package information
PACKAGE = @PACKAGE@
VERSION = @VERSION@


SUBDIRS = ctestfw toolutil makeconv genrb genuca genbrk \
genccode genprops gennames gennorm gencmn gencnval gentz gentest pkgdata

## List of phony targets
.PHONY : all all-local all-recursive install install-local install-files install-dlls build-cmnfile build-dll		\
install-recursive clean clean-local clean-recursive distclean		\
distclean-local distclean-recursive dist dist-local dist-recursive	\
check check-local check-recursive build-testdlls build-basetestdata build-local

## Clear suffix list
.SUFFIXES :

## List of standard targets
all: all-recursive
install: install-recursive
clean: clean-local clean-recursive
distclean : distclean-recursive
dist: dist-recursive 
check: all check-recursive

## Recursive targets
all-recursive install-recursive clean-recursive distclean-recursive dist-recursive check-recursive:
	@dot_seen=no; \
	target=`echo $@ | sed s/-recursive//`; \
	list='$(SUBDIRS)'; for subdir in $$list; do \
	  echo "$(MAKE)[$(MAKELEVEL)]: Making \`$$target' in \`$$subdir'"; \
	  if test "$$subdir" = "."; then \
		dot_seen=yes; \
		local_target="$$target-local"; \
	  else \
		local_target="$$target"; \
	  fi; \
	  (cd $$subdir && $(MAKE) $$local_target) || exit; \
	done; \
	if test "$$dot_seen" = "no"; then \
	  $(MAKE) "$$target-local" || exit; \
	fi

all-local: build-local

DAT_FILES=uprops.dat unames.dat cnvalias.dat tz.dat
# ALL of these files can be deleted (the following BRK files) - they are copied
BRK_FILES=char.brk line.brk line_th.brk sent.brk word.brk title.brk word_th.brk
# don't include thaidict.brk - it goes into a resource bundle - plus it isn't deleted

DATAFILESD=$(DAT_FILES:%=$(OBJDATADIR)/%)
DATAFILESB=$(BRK_FILES:%=$(OBJDATADIR)/%)

# copy the right endianness

ifeq (@U_IS_BIG_ENDIAN@,1)
$(OBJDATADIR)/%.brk: $(SRCDATADIR)/%BE.brk
	cp $< $@
else
$(OBJDATADIR)/%.brk: $(SRCDATADIR)/%LE.brk
	cp $< $@
endif

#include $(srcdir)/makeconv/ucmfiles.mk
#-include $(srcdir)/makeconv/ucmebcdic.mk
#-include $(srcdir)/makeconv/ucmlocal.mk
ALL_UCM_SOURCE= $(UCM_SOURCE) $(UCM_EBCDIC_SOURCE) $(UCM_SOURCE_LOCAL)

#include $(srcdir)/genrb/genrbfiles.mk
#-include $(srcdir)/genrb/reslocal.mk
ALL_RES_SOURCE= $(GENRB_SOURCE) $(TRANSLIT_SOURCE) $(RESOURCE_SRC) $(GENRB_SOURCE_LOCAL)

UCM_FILES = $(ALL_UCM_SOURCE:%=$(SRCDATADIR)/%)
CNV_FILES = $(ALL_UCM_SOURCE:%.ucm=$(OBJDATADIR)/%.cnv)
CNV_FILESL = $(ALL_UCM_SOURCE:%.ucm=%.cnv)

RES_SRC_FILES = $(ALL_RES_SOURCE:%=$(SRCDATADIR)/%)
RES_FILES = $(ALL_RES_SOURCE:%.txt=$(OBJDATADIR)/%.res)
RES_FILESL = $(ALL_RES_SOURCE:%.txt=%.res)

DATAFILESC=$(CNV_FILES)
DATAFILESR=$(RES_FILES)

DATAFILES=$(DATAFILESD) $(CNV_FILES) $(DATAFILESB) $(RES_FILES)
DATAFILESL=$(DAT_FILES) $(CNV_FILESL) $(BRK_FILES) $(RES_FILESL)


## Files to remove for 'make clean'
CLEANFILES = *~ $(BRK_FILES)

install-local:

dist-local:

clean-local: clean-pkgdata
	test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES)
	test -z "$(SRCDATAFILES)" || $(RMV) $(SRCDATAFILES)
	$(RMV) $(DATAFILES)
	$(RMV) icupkg.inc
	-@if [ -f $(TMPDATADIR)/$(ICUDATA_NAME)_dll.mak ]; then \
		(cd pkgdata ; $(INVOKE) ./pkgdata -T $(TMPDATADIR) -m dll $(PKGDATA_VERSIONING) -p $(ICUDATA_NAME) -O $(DATABUILDDIR)/icupkg.inc $(TMPDATADIR)/$(ICUDATA_NAME).lst -d $(DATABUILDDIR) --clean ) \
	fi
	-@if [ -f $(TMPDATADIR)/$(ICUDATA_NAME)_common.mak ]; then \
		(cd pkgdata; $(INVOKE) ./pkgdata -T $(TMPDATADIR) -m common -p $(ICUDATA_NAME) -O $(DATABUILDDIR)/icupkg.inc $(TMPDATADIR)/$(ICUDATA_NAME).lst -d $(DATABUILDDIR) --clean ) \
	fi
	-@$(RMV) $(TMPDATADIR) $(TMPDATADIR)2

# Clean up any old variations.. 
distclean-local: clean-local
	$(RMV) Makefile

$(TMPDATADIR)/$(ICUDATA_NAME).lst: Makefile $(srcdir)/Makefile.in $(srcdir)/genrb/genrbfiles.mk $(srcdir)/makeconv/ucmfiles.mk
	@echo "generating $@ (list of data files)"
	@$(MKINSTALLDIRS) $(TMPDATADIR)
	@-$(RMV) $(TMPDATADIR)/$(ICUDATA_NAME).lst
	@for file in $(DATAFILESL); do \
	  echo $(OBJDATADIR)/$$file >> $(TMPDATADIR)/$(ICUDATA_NAME).lst; \
	done;

$(TMPDATADIR)/testdata.lst: Makefile
	$(MKINSTALLDIRS) $(TMPDATADIR)
	echo $(DATABUILDDIR)/test.dat > $@

$(TMPDATADIR)2/testdata.lst: Makefile $(top_builddir)/test/testdata/root.res
	$(MKINSTALLDIRS) $(TMPDATADIR)2
	echo $(DATABUILDDIR)/test.dat > $@
	echo $(DATABUILDDIR)/../test/testdata/root.res >> $@

$(TMPDATADIR)/icupkg.inc: pkgdata/icupkg.inc
	$(MKINSTALLDIRS) $(TMPDATADIR)
	cp pkgdata/icupkg.inc $(TMPDATADIR)/icupkg.inc

$(TMPDATADIR)2/icupkg.inc: pkgdata/icupkg.inc
	$(MKINSTALLDIRS) $(TMPDATADIR)2
	cp pkgdata/icupkg.inc $(TMPDATADIR)2/icupkg.inc

# build the ICU and test data

build-local:

clean-pkgdata:
	-(cd $(TMPDATADIR); $(INVOKE) $(PKGDATA) -m dll -p $(ICUDATA_NAME) ./$(ICUDATA_NAME).lst --clean || echo '### Warning, cannot clean up icu/data if pkgdata is already gone.' )
	-(cd $(TMPDATADIR); $(INVOKE) $(PKGDATA) -m common -p testdat1  ./testdata.lst --clean || echo '### Warning, cannot clean up icu/data if pkgdata is already gone.' )
	-(cd $(TMPDATADIR)2; $(INVOKE) $(PKGDATA) -m common -p testdat2  ./testdata.lst --clean || echo '### Warning, cannot clean up icu/data if pkgdata is already gone.' )
	-$(RMV) $(TMPDATADIR)/$(ICUDATA_NAME).lst $(TMPDATADIR)/testdata.lst $(TMPDATADIR)/icupkg.inc $(TMPDATADIR)2/testdata.lst

check-local:

Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status
	cd $(top_builddir) \
	&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status

