-TARGET_EXPORTS = apache.exports
-CLEAN_TARGETS = gen_test_char test_char.h gen_uri_delims uri_delims.h \
- $(TARGET_EXPORTS) ApacheCoreOS2.def
-DISTCLEAN_TARGETS = httpd.exp
-EXTRACLEAN_TARGETS = exports.c export_vars.h
+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 = \
- test_char.h \
config.c log.c main.c vhost.c util.c \
- util_script.c util_md5.c util_cfgtree.c util_ebcdic.c \
- rfc1413.c connection.c listen.c \
- mpm_common.c util_charset.c util_debug.c util_xml.c \
- util_filter.c exports.c buildmark.c scoreboard.c \
- error_bucket.c protocol.c core.c request.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 \
+ 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 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_srcdir)/build/rules.mk
+include $(top_builddir)/build/rules.mk
include $(top_srcdir)/build/library.mk
-gen_test_char_OBJECTS = gen_test_char.lo util_debug.lo
+gen_test_char_OBJECTS = gen_test_char.lo
gen_test_char: $(gen_test_char_OBJECTS)
$(LINK) $(EXTRA_LDFLAGS) $(gen_test_char_OBJECTS) $(EXTRA_LIBS)
util.lo: test_char.h
-EXPORT_FILES = $(top_srcdir)/include/*.h \
- $(top_srcdir)/os/$(OS_DIR)/*.h \
- $(top_srcdir)/srclib/apr/include/*.h \
- $(top_srcdir)/srclib/apr-util/include/*.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 \
- headers="`find $(EXPORT_FILES) -newer exports.c`" ; \
- if test -n "$$headers"; then \
- echo Found newer headers. Will rebuild exports.c. ; \
- echo rm -f exports.c ; \
- rm -f exports.c ; \
- fi \
+ 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
-exports.c:
- $(AWK) -f $(top_srcdir)/build/make_exports.awk $(EXPORT_FILES) > $@
+export_files:
+ tmp=export_files_unsorted.txt; \
+ rm -f $$tmp && touch $$tmp; \
+ for dir in $(EXPORT_DIRS); do \
+ ls $$dir/*.h >> $$tmp; \
+ done; \
+ for dir in $(EXPORT_DIRS_APR); do \
+ (ls $$dir/ap[ru].h $$dir/ap[ru]_*.h >> $$tmp 2>/dev/null); \
+ done; \
+ sort -u $$tmp > $@; \
+ rm -f $$tmp
-export_vars.h:
- $(AWK) -f $(top_srcdir)/build/make_var_export.awk \
- $(top_srcdir)/include/*.h \
- $(top_srcdir)/os/$(OS_DIR)/*.h \
- $(top_srcdir)/srclib/apr/include/*.h \
- $(top_srcdir)/srclib/apr-util/include/*.h > $@
+exports.c: export_files
+ $(AWK) -f $(top_srcdir)/build/make_exports.awk `cat $?` > $@
-# wtf does this have to be explicit????
-exports.lo: exports.c
+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
@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_" | sed -e 's/^.*[)]\(.*\);$$/\1/' >> $@
- $(CPP) $(ALL_CPPFLAGS) $(ALL_INCLUDES) export_vars.h | sed -e 's/^\#[^!]*//' | sed -e '/^$$/d' >> $@
+ $(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