## -*-makefile-*-
#******************************************************************************
#   Copyright (C) 1999-2001, International Business Machines
#   Corporation and others.  All Rights Reserved.
# $Revision: 1.26 $
#******************************************************************************
# 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)data$(ICULIBSUFFIX)      \
			-l$(ICUPREFIX)i18n$(ICULIBSUFFIX)      \
			-l$(ICUPREFIX)uc$(ICULIBSUFFIX)        \
			-l$(ICUPREFIX)toolutil$(ICULIBSUFFIX)  \
			-lustdio$(ICULIBSUFFIX)
#TODO layout library probably wants to be added to ICULIBS.
#			-l$(ICUPREFIX)le$(ICULIBSSUFFIX)      

## Environment variable to set a runtime search path
#   (Overridden when necessary in -mh files)
LDLIBRARYPATH_ENVVAR = LD_LIBRARY_PATH

# Force removal [for make clean]
RMV = rm -rf

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@
AIX_SHLIB = @AIX_SHLIB@
AR = @AR@
RANLIB = @RANLIB@
# Commands to make a shared library
#   (Overridden when necessary in -mh files)
SHLIB.c=      $(CC) $(DEFS) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -shared
SHLIB.cc=     $(CXX) $(DEFS) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) -shared

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)$(ICULIBSUFFIX)/$(VERSION)
pkglibdir = $(libdir)/$(PACKAGE)$(ICULIBSUFFIX)/$(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)/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)
else
ifeq ($(PKGDATA_MODE),dll)
ICUDATA_DIR = $(pkgdatadir)
ICUPKGDATA_DIR = $(libdir)
else
ICUDATA_DIR = $(pkglibdir)
ICUPKGDATA_DIR = $(ICUDATA_DIR)
endif
endif

