#******************************************************************************
#
#   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@

SHELL=@SHELL@
CFLAGS=@CFLAGS@ 
CPPFLAGS=@CPPFLAGS@ -I../../../source/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@


# begin host fragment
@host_frag@
# end host fragment

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

GENCCODE=../genccode/genccode
GENCMN=../gencmn/gencmn

LPATHS=../../source/common:../../source/i18n:../../source/tools/toolutil 
#LPATHS=../source/common:../source/i18n:../source/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
