#
# Top-level Makefile for APRUTIL
#
CPP = @CPP@

# gets substituted into some targets
APRUTIL_MAJOR_VERSION=@APRUTIL_MAJOR_VERSION@
APRUTIL_DOTTED_VERSION=@APRUTIL_DOTTED_VERSION@

srcdir = @srcdir@
VPATH = @srcdir@

INCLUDES = @APRUTIL_PRIV_INCLUDES@ @APR_INCLUDES@ @APRUTIL_INCLUDES@
APRUTIL_LDFLAGS = @APRUTIL_LDFLAGS@
APRUTIL_LIBS = @APRUTIL_LIBS@

TARGET_LIB = lib@APRUTIL_LIBNAME@.la
INSTALL_SUBDIRS = @APR_ICONV_DIR@ @APR_XML_DIR@
EXTRA_SOURCE_DIRS = @APR_ICONV_DIR@ @APR_XML_DIR@
APRUTIL_PCFILE = apr-util-$(APRUTIL_MAJOR_VERSION).pc
APU_CONFIG = apu-$(APRUTIL_MAJOR_VERSION)-config
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@

APU_MODULES = @APU_MODULES@
LINK_MODULE = $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(LT_LDFLAGS) $(ALL_CFLAGS) $(ALL_LDFLAGS) $(APRUTIL_LDFLAGS) -release $(APRUTIL_MAJOR_VERSION) -module -rpath $(APU_DSO_LIBDIR)
APU_DSO_LIBDIR = @APU_DSO_LIBDIR@

LT_VERSION = @APU_LTVERSION@

EXTRA_OBJECTS = @EXTRA_OBJECTS@

LDADD_dbd_pgsql = @LDADD_dbd_pgsql@
LDADD_dbd_oracle = @LDADD_dbd_oracle@
LDADD_dbd_sqlite2 = @LDADD_dbd_sqlite2@
LDADD_dbd_sqlite3 = @LDADD_dbd_sqlite3@
LDADD_dbd_mysql = @LDADD_dbd_mysql@
LDADD_dbd_freetds = @LDADD_dbd_freetds@
LDADD_dbd_odbc = @LDADD_dbd_odbc@
LDADD_dbm_db = @LDADD_dbm_db@
LDADD_dbm_gdbm = @LDADD_dbm_gdbm@
LDADD_dbm_ndbm = @LDADD_dbm_ndbm@
LDADD_ldap = @LDADD_ldap@

TARGETS = $(TARGET_LIB) aprutil.exp apu-config.out $(APU_MODULES)

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

CLEAN_SUBDIRS = test @APR_ICONV_DIR@ @APR_XML_DIR@

CLEAN_TARGETS = exports.c export_vars.c aprutil.exp .make.dirs apu-config.out
DISTCLEAN_TARGETS = config.cache config.log config.status libtool \
	include/private/apu_config.h include/private/apu_private.h \
	include/private/apu_select_dbm.h include/apr_ldap.h include/apu.h \
	export_vars.sh $(APU_CONFIG) build/rules.mk include/apu_want.h \
	apr-util.pc build/pkg/pkginfo
EXTRACLEAN_TARGETS = configure aclocal.m4 include/private/apu_config.h.in \
	exports.c build-outputs.mk \
	build/apr_common.m4 build/find_apr.m4 build/install.sh \
	build/config.guess build/config.sub

prefix=@prefix@
exec_prefix=@exec_prefix@
bindir=@bindir@
libdir=@libdir@
includedir=@includedir@
top_srcdir=@abs_srcdir@
top_blddir=@abs_builddir@

# Create apu-config script suitable for the install tree
apu-config.out: $(APU_CONFIG)
	sed 's,^\(location=\).*$$,\1installed,' < $(APU_CONFIG) > $@

install: $(TARGETS) install-modules
	$(APR_MKDIR) $(DESTDIR)$(includedir) $(DESTDIR)$(libdir)/pkgconfig \
		     $(DESTDIR)$(libdir) $(DESTDIR)$(bindir)
	for f in $(top_srcdir)/include/*.h $(top_blddir)/include/*.h; do \
		$(INSTALL_DATA) $${f} $(DESTDIR)$(includedir); \
	done
	$(INSTALL_DATA) apr-util.pc $(DESTDIR)$(libdir)/pkgconfig/$(APRUTIL_PCFILE)
	list='$(INSTALL_SUBDIRS)'; for i in $$list; do \
		( cd $$i ; $(MAKE) DESTDIR=$(DESTDIR) install ); \
	done
	$(LIBTOOL) --mode=install $(INSTALL) -m 755 $(TARGET_LIB) $(DESTDIR)$(libdir)
	$(INSTALL_DATA) aprutil.exp $(DESTDIR)$(libdir)
	$(INSTALL) -m 755 apu-config.out $(DESTDIR)$(bindir)/$(APU_CONFIG)

$(TARGET_LIB): $(OBJECTS) $(EXTRA_OBJECTS)
	$(LINK) @lib_target@ $(EXTRA_OBJECTS) $(ALL_LIBS) $(APRUTIL_LDFLAGS) $(APRUTIL_LIBS)

install-modules: install-modules-@APU_HAVE_MODULES@

install-modules-no:

install-modules-yes: $(APU_MODULES)
	$(APR_MKDIR) $(DESTDIR)$(APU_DSO_LIBDIR)
	@for m in $(APU_MODULES); do $(LIBTOOL) $(LT_LTFLAGS) $(LTFLAGS) --mode=install $(INSTALL) -m 755 $$m $(DESTDIR)$(APU_DSO_LIBDIR); done

exports.c: $(HEADERS)
	$(APR_MKEXPORT) $(HEADERS) > $@

export_vars.c: $(HEADERS)
	$(APR_MKVAREXPORT) $(HEADERS) > $@

aprutil.exp: exports.c export_vars.c
	@echo "#! lib@APRUTIL_LIBNAME@.so" > $@
	@echo "* This file was AUTOGENERATED at build time." >> $@
	@echo "* Please do not edit by hand." >> $@
	$(CPP) $(ALL_CPPFLAGS) $(ALL_INCLUDES) exports.c | grep "ap_hack_" | sed -e 's/^.*[)]\(.*\);$$/\1/' >> $@
	$(CPP) $(ALL_CPPFLAGS) $(ALL_INCLUDES) export_vars.c | sed -e 's/^\#[^!]*//' | sed -e '/^$$/d' >> $@

dox:
	doxygen $(top_srcdir)/docs/doxygen.conf

test: check
check: $(TARGET_LIB)
	cd test && $(MAKE) all check

.PHONY: install-modules install-modules-yes install-modules-no dox test check
