#
# Top-level Makefile for APRUTIL
#

TARGET_LIB = libaprutil.la
TARGET_EXPORTS = aprutil.exports

TARGETS = delete-lib $(TARGET_LIB) delete-exports $(TARGET_EXPORTS)

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

SUBDIRS = buckets crypto dbm encoding hooks uri xml
CLEAN_SUBDIRS = . test build

CLEAN_TARGETS = $(TARGET_EXPORTS)
DISTCLEAN_TARGETS = config.cache config.log config.status \
	include/private/apu_config.h include/private/apu_private.h \
	include/apu.h export_vars.sh
EXTRACLEAN_TARGETS = configure libtool aclocal.m4 \
	include/private/apu_config.h.in

### fix this up at some point (install location)
libdir = /usr/local/lib

delete-lib:
	@if test -f $(TARGET_LIB); then \
	    objects="`find $(SUBDIRS) -name '*.lo' -a -newer $(TARGET_LIB)`" ; \
	    if test -n "$$objects"; then \
		echo Found newer objects. Will relink $(TARGET_LIB). ; \
		echo $(RM) -f $(TARGET_LIB) ; \
		$(RM) -f $(TARGET_LIB) ; \
	    fi \
	fi

$(TARGET_LIB):
	@objects="`find $(SUBDIRS) -name '*.lo'`" ; \
	    echo $(LINK) $$objects ; \
	    $(LINK) -rpath $(libdir) $$objects

delete-exports:
	@if test -f $(TARGET_EXPORTS); then \
	    headers="`find include/*.h -newer $(TARGET_EXPORTS)`" ; \
	    if test -n "$$headers"; then \
		echo Found newer headers. Will rebuild $(TARGET_EXPORTS). ; \
		echo $(RM) -f $(TARGET_EXPORTS) ; \
		$(RM) -f $(TARGET_EXPORTS) ; \
	    fi \
	fi

$(TARGET_EXPORTS):
	$(AWK) -f @APR_SOURCE_DIR@/helpers/make_export.awk include/*.h > $@ ;

docs:
	mkdir ./docs
	perl @APR_SOURCE_DIR@/helpers/scandoc -i./build/default.pl -p./docs/ ./include/*.h


.PHONY: delete-lib delete-exports
