#******************************************************************************
#
#   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 -I$(prefix)/include
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@
HAVE_INTTYPES_H=@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=../source/tools/genccode/genccode
GENCMN=../source/tools/gencmn/gencmn

TOOL=env LD_LIBRARY_PATH=../source/common:../source/i18n:../source/tools/toolutil LIBPATH=../source/common:../source/i18n:../source/tools/toolutil 

ifeq ($(strip $(PLATFORM)),AIX)
  TOOL=env LIBPATH=../source/common:../source/i18n:../source/tools/toolutil
endif

ifeq ($(strip $(PLATFORM)),HPUX)
  TOOL=env LD_LIBRARY_PATH=../source/common:../source/i18n:../source/tools/toolutil
endif

ifeq ($(strip $(PLATFORM)),LINUX)
  TOOL=env LD_LIBRARY_PATH=../source/common:../source/i18n:../source/tools/toolutil
endif
