#
# Top-level Makefile for APRICONV
#
abs_srcdir=@api_srcdir@
abs_builddir=@api_builddir@
VPATH = @srcdir@

# bring in rules.mk for standard functionality
@INCLUDE_RULES@

SUBDIRS = lib ccs ces util
CLEAN_SUBDIRS = . lib ccs ces util

TARGET_LIB = libapriconv-1.la

DISTCLEAN_TARGETS = config.cache config.log config.status
EXTRACLEAN_TARGETS = configure libtool aclocal.m4

### install location
prefix=@prefix@
exec_prefix=@prefix@/bin
lib_prefix=@prefix@/lib
include_prefix=@prefix@/include/@API_INCPATH@
libdir=@iconv_libdir@

API_CPPFLAGS=@API_CPPFLAGS@

INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
MKINSTALLDIRS=$(abs_srcdir)/build/mkdir.sh

install:
	if [ ! -d $(DESTDIR)$(lib_prefix) ]; then \
	    $(MKINSTALLDIRS) $(DESTDIR)$(lib_prefix); \
	fi;
	(cd lib; $(LIBTOOL) --mode=install cp $(TARGET_LIB) $(DESTDIR)$(lib_prefix))
	if [ ! -d $(DESTDIR)$(libdir) ]; then \
	    $(MKINSTALLDIRS) $(DESTDIR)$(libdir); \
	fi; \
	(cd ccs; for i in *.la; do $(LIBTOOL) --mode=install cp $$i $(DESTDIR)$(libdir); done)
	(cd ces; for i in *.la; do $(LIBTOOL) --mode=install cp $$i $(DESTDIR)$(libdir); done)
	if [ ! -d $(DESTDIR)$(include_prefix) ]; then \
	    $(MKINSTALLDIRS) $(DESTDIR)$(include_prefix); \
	fi;
	$(INSTALL_DATA) $(abs_srcdir)/include/api_version.h $(DESTDIR)$(include_prefix)
	$(INSTALL_DATA) $(abs_srcdir)/include/apr_iconv.h $(DESTDIR)$(include_prefix)
	if [ ! -d $(DESTDIR)$(exec_prefix) ]; then \
	    $(MKINSTALLDIRS) $(DESTDIR)$(exec_prefix); \
	fi; \
	(cd util; $(LIBTOOL) --mode=install cp apriconv $(DESTDIR)$(exec_prefix))

all:
	(cd lib;  $(MAKE) CPPFLAGS="$(API_CPPFLAGS) $(CPPFLAGS)")
	(cd ccs;  $(MAKE))
	(cd ces;  $(MAKE))
	(cd util; $(MAKE))

docs:
	mkdir ./docs
	perl $(abs_srcdir)/build/scandoc.pl -i./build/default.pl -p./docs/ ./lib/*.h

.PHONY: delete-lib
