So (Ben), what is it that breaks with "BSD make" when reverting the cruft that has been added to server/Makefile.in to use an absolute path to exports.c? This works for me with srcdir=builddir and srcdir!=builddir with the FreeBSD 4.2 make, and GNU make -j2 still works too.
The 2.0 branch still has half the cruft and is broken with a parallel make, since some of the targets use a relative path to exports.c, so I'd like to commit this then backport it. (PR 24643) Index: Makefile.in =================================================================== RCS file: /home/cvs/httpd-2.0/server/Makefile.in,v retrieving revision 1.86 diff -u -r1.86 Makefile.in --- Makefile.in 6 Apr 2003 19:59:02 -0000 1.86 +++ Makefile.in 2 Dec 2003 15:09:08 -0000 @@ -13,7 +13,7 @@ util_script.c util_md5.c util_cfgtree.c util_ebcdic.c util_time.c \ connection.c listen.c \ mpm_common.c util_charset.c util_debug.c util_xml.c \ - util_filter.c $(top_builddir)/server/exports.c buildmark.c \ + util_filter.c exports.c buildmark.c \ scoreboard.c error_bucket.c protocol.c core.c request.c provider.c TARGETS = delete-exports $(LTLIBRARY_NAME) $(CORE_IMPLIB_FILE) export_vars.h httpd.exp @@ -60,18 +60,11 @@ sort -u $$tmp > $@; \ rm -f $$tmp -# full path required to keep BSD make happy -$(top_builddir)/server/exports.c: export_files +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 $?` > $@ - -# wtf does this have to be explicit???? -exports.lo: exports.c - -# Needed to allow exports.c to be generated in a parallel build successfully -.NOTPARALLEL: $(top_builddir)/server/exports.c # 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