## Makefile.in for ICU - tools/gencnval
## Copyright (c) 1999, International Business Machines Corporation and
## others. All Rights Reserved.
## Steven R. Loomi

## Shell to use
SHELL = @SHELL@
VERSION = @VERSION@

ICUDATADIR=$(top_builddir)/../data/
CONVRTRSFILE=$(top_builddir)/../data/convrtrs.txt

## Install directory information
srcdir = @srcdir@
top_srcdir = @top_srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@

bindir = @bindir@
sbindir = @sbindir@
datadir = @datadir@
libdir = @libdir@
includedir = @includedir@

pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@

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

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

## Compiler/tools information
CC = @CC@
CXX = @CXX@
PACKAGE = @PACKAGE@
VERSION = @VERSION@

## Platform-specific setup
@host_frag@

## Build directory information
top_builddir = ../..
subdir = tools/gencnval

## Extra files to remove for 'make clean'
CLEANFILES = *~

## Target information
TARGET = gencnval

DEFS = @DEFS@
CPPFLAGS = @CPPFLAGS@ -I$(top_srcdir)/common -I../toolutil
CFLAGS = @CFLAGS@
CXXFLAGS = @CXXFLAGS@
LDFLAGS = @LDFLAGS@ \
$(LD_RPATH)$(LD_RPATH_PRE)$(libdir)@ld_rpath_suf@$(LD_RPATH_PRE)$(top_builddir)/common@ld_rpath_suf@$(LD_RPATH_PRE)$(top_builddir)/tools/toolutil
LIBS = $(LIBICU-UC)  @LIBS@ @LIB_M@  $(LIBICU-TOOLUTIL)

OBJECTS = gencnval.o

DEPS = $(OBJECTS:.o=.d)


## List of phony targets
.PHONY : all all-local install install-local clean clean-local		\
distclean distclean-local target-clean-local dist dist-local check	\
check-local build-data

## Clear suffix list
.SUFFIXES :

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

all-local: $(TARGET) build-data

install-local: target-clean-local all-local build-data
	$(mkinstalldirs) $(sbindir)
	$(INSTALL) $(TARGET) $(sbindir)/$(TARGET)

build-data: $(ICUDATADIR)/cnvalias.dat

# we set the ICU_DATA directory here so that unames.dat ends up in 
# icu/data rather than PREFIX/share/icu/VERSION/
$(ICUDATADIR)/cnvalias.dat: $(CONVRTRSFILE) $(TARGET)
	ICU_DATA=$(ICUDATADIR) ./$(TARGET)

dist-local:

target-clean-local:
	rm -f $(TARGET)

clean-local: target-clean-local
	test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
	rm -f $(OBJECTS)

distclean-local: clean-local
	rm -f Makefile $(DEPS) $(RES_FILES) $(TEST_FILES)

check-local:

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

$(TARGET) : $(OBJECTS)
	$(LINK.cc) -o $@ $^ $(LIBS) 

ifneq ($(MAKECMDGOALS),distclean)
-include $(DEPS)
endif


