## -*-makefile-*-
#******************************************************************************
#   Copyright (C) 1999-2001, International Business Machines
#   Corporation and others.  All Rights Reserved.
# $Revision: 1.21 $
#******************************************************************************
# This Makefile is designed to be included into projects which make use
# of the ICU.

SHELL = @SHELL@
CFLAGS = @CFLAGS@ 
CPPFLAGS = @CPPFLAGS@ $(LIBCPPFLAGS) -I$(prefix)/include
CXXFLAGS = @CXXFLAGS@ 
FFLAGS = @FFLAGS@
DEFS = @DEFS@ 
ENABLE_RPATH = @ENABLE_RPATH@
ifeq ($(ENABLE_RPATH),YES)
RPATHLDFLAGS = $(LD_RPATH)$(LD_RPATH_PRE)$(libdir)
endif
LDFLAGS = @LDFLAGS@ $(RPATHLDFLAGS)
LIBS = @LIBS@ 
ICUPREFIX = icu
ICULIBSUFFIX = @ICULIBSUFFIX@
ICULIBS = $(LIBS) -L$(libdir) -l$(ICUPREFIX)i18n$(ICULIBSUFFIX) -l$(ICUPREFIX)uc$(ICULIBSUFFIX)
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@
LIB_VERSION = @LIB_VERSION@
LIB_VERSION_MAJOR = @LIB_VERSION_MAJOR@
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@

pkgdatadir = $(datadir)/$(PACKAGE)/$(VERSION)
pkglibdir = $(libdir)/$(PACKAGE)/$(VERSION)

MKINSTALLDIRS = $(SHELL) $(pkgdatadir)/mkinstalldirs

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 $(pkgdatadir)/$(VERSION)/config/@platform_make_fragment_name@

DEFAULT_MODE = @DATA_PACKAGING_MODE@

GENCCODE = $(sbindir)/genccode
GENCMN = $(sbindir)/gencmn

INVOKE = $(LDLIBRARYPATH_ENVVAR)=$(libdir):$$$(LDLIBRARYPATH_ENVVAR)

# Should be the same as U_ICUDATA_NAME
ICUDATA_NAME = icudt@LIB_VERSION_MAJOR@@ICUDATA_CHAR@
ifeq ($(strip $(PKGDATA_MODE)),)
PKGDATA_MODE=@DATA_PACKAGING_MODE@
endif
ifeq ($(PKGDATA_MODE),common)
ICUDATA_DIR = $(pkgdatadir)
ICUPKGDATA_DIR = $(ICUDATA_DIR)/$(VERSION)
else
ifeq ($(PKGDATA_MODE),dll)
ICUDATA_DIR = $(pkgdatadir)
ICUPKGDATA_DIR = $(libdir)
else
ICUDATA_DIR = $(pkglibdir)
ICUPKGDATA_DIR = $(ICUDATA_DIR)/$(VERSION)
endif
endif

