
CLEAN_TARGETS = gen_test_char test_char.h \
	ApacheCoreOS2.def httpd.exp export_files \
	exports.c export_vars.h

SUBDIRS = mpm

LTLIBRARY_NAME    = libmain.la
LTLIBRARY_SOURCES = \
	config.c log.c main.c vhost.c util.c util_fcgi.c \
	util_script.c util_md5.c util_cfgtree.c util_ebcdic.c util_time.c \
	connection.c listen.c util_mutex.c \
	mpm_common.c mpm_unix.c mpm_fdqueue.c \
	util_charset.c util_cookies.c util_debug.c util_xml.c \
	util_filter.c util_pcre.c util_regex.c exports.c \
	scoreboard.c error_bucket.c protocol.c core.c request.c ssl.c provider.c \
	eoc_bucket.c eor_bucket.c core_filters.c \
	util_expr_parse.c util_expr_scan.c util_expr_eval.c

LTLIBRARY_DEPENDENCIES = test_char.h

TARGETS = delete-exports $(LTLIBRARY_NAME) $(CORE_IMPLIB_FILE) export_vars.h httpd.exp

include $(top_builddir)/build/rules.mk
include $(top_srcdir)/build/library.mk

gen_test_char_OBJECTS = gen_test_char.lo
gen_test_char: $(gen_test_char_OBJECTS)
	$(LINK) $(EXTRA_LDFLAGS) $(gen_test_char_OBJECTS) $(EXTRA_LIBS)

test_char.h: gen_test_char
	./gen_test_char > test_char.h

util.lo: test_char.h

EXPORT_DIRS = $(top_srcdir)/include $(top_srcdir)/os/$(OS_DIR)
EXPORT_DIRS_APR = $(APR_INCLUDEDIR) $(APU_INCLUDEDIR)

# If export_files is a dependency here, but we remove it during this stage,
# when exports.c is generated, make will not detect that export_files is no
# longer here and deadlock.  So, export_files can't be a dependency of
# delete-exports.
delete-exports:
	@if test -f exports.c; then \
	    if test -f export_files; then \
	        files=`cat export_files`; \
	        headers="`find $$files -newer exports.c`"; \
	        if test -n "$$headers"; then \
	           echo Found newer headers. Will rebuild exports.c.; \
	           echo rm -f exports.c export_files; \
	           rm -f exports.c export_files; \
	        fi; \
	    else \
	        rm -f exports.c; \
	    fi; \
	fi

export_files:
	( for dir in $(EXPORT_DIRS); do \
	      ls $$dir/*.h ; \
	  done; \
	  echo "$(top_srcdir)/server/mpm_fdqueue.h"; \
	  for dir in $(EXPORT_DIRS_APR); do \
	      ls $$dir/ap[ru].h $$dir/ap[ru]_*.h 2>/dev/null; \
	  done; \
	) | sed -e s,//,/,g | sort -u > $@

exports.c: export_files
	$(AWK) -f $(top_srcdir)/build/make_exports.awk `cat $?` > $@

export_vars.h: export_files
	$(AWK) -f $(top_srcdir)/build/make_var_export.awk `cat $?` > $@

# Rule to make def file for OS/2 core dll
ApacheCoreOS2.def: exports.c export_vars.h $(top_srcdir)/os/$(OS_DIR)/core_header.def
	cat $(top_srcdir)/os/$(OS_DIR)/core_header.def > $@
	$(CPP) $< $(ALL_CPPFLAGS) $(ALL_INCLUDES) | grep "ap_hack_" | sed -e 's/^.*[)]\(.*\);$$/  "\1"/' >> $@
	$(CPP) $(ALL_CPPFLAGS) $(ALL_INCLUDES) export_vars.h | grep "^[a-z]" | sed -e 's/^\(.*\)$$/  "\1"/' >> $@

# Rule to make exp file for AIX DSOs
httpd.exp: exports.c export_vars.h
	@echo "#! ." > $@
	@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_" | grep -v apr_ | sed -e 's/^.*[)]\(.*\);$$/\1/' >> $@
	$(CPP) $(ALL_CPPFLAGS) $(ALL_INCLUDES) export_vars.h | grep -v apr_ | sed -e 's/^\#[^!]*//' | sed -e '/^$$/d' >> $@


#   developer stuff
#   (we really don't expect end users to use these targets!)
#
util_expr_scan.c util_expr_parse.c util_expr_parse.h: util_expr_scan.l util_expr_parse.y
	bison -pap_expr_yy --defines=$(builddir)/util_expr_parse.h \
	    -o $(builddir)/util_expr_parse.c $(srcdir)/util_expr_parse.y
	flex -Pap_expr_yy -o $(builddir)/util_expr_scan.c $(srcdir)/util_expr_scan.l
	set -e ; \
	for f in util_expr_scan.c util_expr_parse.c util_expr_parse.h ; do \
		sed -e "s|\"$(builddir)/|\"|g" < $(builddir)/$$f > \
			$(builddir)/$$f.$$$$ && \
		mv $(builddir)/$$f.$$$$ $(builddir)/$$f ; \
	done
	# work around flex bug
	# http://sourceforge.net/tracker/?func=detail&aid=3029024&group_id=97492&atid=618177
	perl -0777 -p -i -e 's,\n(void|int) ap_expr_yy[gs]et_column[^\n]+\)\n.*?\n\},,gs' \
		$(builddir)/util_expr_scan.c
