#******************************************************************************
#
#   Copyright (C) 2000, International Business Machines
#   Corporation and others.  All Rights Reserved.
#
#******************************************************************************
# This Makefile is used to build the ICU's data.
# It is included with the -O option to pkgdata.

PLATFORM=@platform@

top_srcdir=@top_srcdir@
srcdir=@srcdir@
top_builddir=../..

SHELL=@SHELL@
CFLAGS=@CFLAGS@ 
CPPFLAGS=@CPPFLAGS@ -I$(top_builddir)/common -I$(top_srcdir)/common
CXXFLAGS=@CXXFLAGS@ 
FFLAGS=@FFLAGS@
DEFS=@DEFS@ 
# We're not linking anything with ICU libs
#LDFLAGS=@LDFLAGS@ -L$(prefix)/lib $(LD_RPATH)$(LD_RPATH_PRE)$(libdir)
LIBS=@LIBS@ 
ICULIBS=$(LIBS) -licu-uc -licu-i18n
exec_prefix=@exec_prefix@
prefix=@prefix@
program_transform_name=@program_transform_name@
bindir=@bindir@
sbindir=@sbindir@
libexecdir=@libexecdir@
datadir=@datadir@
sysconfdir=@sysconfdir@
sharedstatedir=@sharedstatedir@
localstatedir=@localstatedir@
libdir=@libdir@
includedir=@includedir@
oldincludedir=@oldincludedir@
infodir=@infodir@
mandir=@mandir@
PACKAGE=@PACKAGE@
VERSION=@VERSION@
CC=@CC@
CXX=@CXX@

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

INSTALL_PROGRAM=@INSTALL_PROGRAM@
INSTALL_SCRIPT=@INSTALL_SCRIPT@
INSTALL_DATA=@INSTALL_DATA@
AUTOCONF=@AUTOCONF@
host=@host@
host_alias=@host_alias@
host_cpu=@host_cpu@
host_vendor=@host_vendor@
host_os=@host_os@
LIB_M=@LIB_M@
CPP=@CPP@
U_HAVE_INTTYPES_H=@U_HAVE_INTTYPES_H@
U_IS_BIG_ENDIAN=@U_IS_BIG_ENDIAN@
HAVE_INT8_T=@HAVE_INT8_T@
HAVE_UINT8_T=@HAVE_UINT8_T@
HAVE_INT16_T=@HAVE_INT16_T@
HAVE_UINT16_T=@HAVE_UINT16_T@
HAVE_INT32_T=@HAVE_INT32_T@
HAVE_UINT32_T=@HAVE_UINT32_T@
HAVE_BOOL_T=@HAVE_BOOL_T@
EXTRAS_TRUE=@EXTRAS_TRUE@
EXTRAS_FALSE=@EXTRAS_FALSE@
TESTS_TRUE=@TESTS_TRUE@
TESTS_FALSE=@TESTS_FALSE@
SAMPLES_TRUE=@SAMPLES_TRUE@
SAMPLES_FALSE=@SAMPLES_FALSE@
platform=@platform@


ld_rpath_suf=@ld_rpath_suf@

include @platform_make_fragment@

top_builddir = ../..
subdir = tools/tmp

##### Add the following to source/config/Makefile.in

GENCCODE=$(top_builddir)/tools/genccode/genccode
GENCMN=$(top_builddir)/tools/gencmn/gencmn

LPATHS=$(top_builddir)/common:$(top_builddir)/i18n:$(top_builddir)/tools/toolutil

TOOL=env LD_LIBRARY_PATH=$(LPATHS) LIBPATH=$(LPATHS) 

ifeq ($(strip $(PLATFORM)),OS390)
  TOOL=
endif

ifeq ($(strip $(PLATFORM)),AIX)
  TOOL=env LIBPATH=$(LPATHS)
endif

ifeq ($(strip $(PLATFORM)),HPUX)
  TOOL=env LD_LIBRARY_PATH=$(LPATHS)
endif

ifeq ($(strip $(PLATFORM)),U_LINUX)
  TOOL=env LD_LIBRARY_PATH=$(LPATHS)
endif
