
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_etag.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_DOT_C) \
	scoreboard.c error_bucket.c protocol.c core.c request.c ssl.c provider.c \
	eoc_bucket.c eor_bucket.c headers_bucket.c core_filters.c \
	util_expr_parse.c util_expr_scan.c util_expr_eval.c \
	apreq_cookie.c apreq_error.c apreq_module.c \
	apreq_module_cgi.c apreq_module_custom.c apreq_param.c \
	apreq_parser.c apreq_parser_header.c apreq_parser_multipart.c \
	apreq_parser_urlencoded.c apreq_util.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

ifdef CC_FOR_BUILD
gen_test_char: gen_test_char.c
	$(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) -DCROSS_COMPILE -o $@ $<
else
gen_test_char_OBJECTS = gen_test_char.lo
gen_test_char: $(gen_test_char_OBJECTS)
	$(LINK) $(EXTRA_LDFLAGS) $(gen_test_char_OBJECTS) $(EXTRA_LIBS)
endif

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/core.h"; \
	  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 ; \
	builddir_uc=$$(echo "$(builddir)"|tr a-z/.- A-Z___ ) ; \
	for f in util_expr_scan.c util_expr_parse.c util_expr_parse.h ; do \
		sed -e "s|\"$(builddir)/|\"|g" -e "s|$$builddir_uc||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
