# Generated automatically from Makefile.in by configure.
abs_srcdir=@api_srcdir@
abs_builddir=@api_builddir@
VPATH = @srcdir@

prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@

INCLUDES = @API_INCLUDES@ @APR_INCLUDES@

TARGET_LIB = libapriconv.la
SUBDIRS = .

EXPORT_FILES = $(abs_srcdir)/include/*.h $(abs_srcdir)/lib/*.h
TARGET_EXPORTS = apriconv.exports

CLEAN_TARGETS = exports.c

# May need to do something for apriconv.exports
TARGETS = iconv_module.lo iconv.lo iconv_int.lo iconv_uc.lo \
	iconv_ces.lo iconv_ces_euc.lo iconv_ces_iso2022.lo api_version.lo \
	exports.lo $(TARGET_LIB)

#OBJECTS=

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

$(TARGET_LIB):
	@objects="`find $(SUBDIRS) -name '*.@APR_SO_EXT@' -print`"; \
	tmpcmd="$(LINK) @APR_LIB_TARGET@"; \
	echo $$tmpcmd; \
	$$tmpcmd && touch $@

exports.c:
	$(AWK) -f $(abs_srcdir)/build/make_exports.awk $(EXPORT_FILES) > $@

export_vars.h:
	$(AWK) -f $(abs_srcdir)/build/make_var_export.awk $(EXPORT_FILES) > $@

$(TARGET_EXPORTS): exports.c export_vars.h
	@echo "#! lib@APR_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.h | sed -e 's/^\#[^!]*//' | sed -e '/^$$/d' >> $@
