diff --git a/Makefile b/Makefile
index 9b817b6d496cea7e1e83522f2a7f7a09fbe67091..1c4dbe49a249783c86adc8cf1e624b49581d82e0 100644
--- a/Makefile
+++ b/Makefile
@@ -1,9 +1,21 @@
 #
-# $Id: Makefile,v 1.140 2004/04/04 12:37:47 grubba Exp $
+# $Id: Makefile,v 1.141 2004/05/01 13:36:32 mast Exp $
 #
 # Meta Makefile
 #
 
+# Use this to pass arguments to configure. Leave empty to keep previous args.
+CONFIGUREARGS=
+
+# Set this to any generic make options you'd otherwise would have to
+# pass on the command line.
+#MAKEFLAGS=-j2 --no-print-directory
+
+# Set to a flag for parallelizing make, e.g. -j2. It's given to make
+# at the level where it's most effective. (Don't use when the make
+# program has smart job control, e.g. GNU make.)
+MAKE_PARALLEL=
+
 VPATH=.
 OS=`uname -s -r -m|sed \"s/ /-/g\"|tr \"[A-Z]\" \"[a-z]\"|tr \"/()\" \"___\"`
 BUILDDIR=build/$(OS)
@@ -14,21 +26,13 @@ METATARGET=
 # Priority is $(MAKE) before ${MAKE} before make.
 MAKE_CMD=`if [ "x$(MAKE)" = "x" ]; then echo "$${MAKE-make}"; else echo "$(MAKE)"; fi`
 
-# Evaluates to $(MAKE_CMD) and sets ${MAKE} and $(MAKE)
-DO_MAKE=MAKE="$(MAKE_CMD)" export MAKE && "$${MAKE}" "MAKE=$${MAKE}"
-
-# Use this to pass arguments to configure. Leave empty to keep previous args.
-CONFIGUREARGS=
-
-# Set to a flag for parallelizing make, e.g. -j2. It's given to make
-# at the level where it's most effective.
-MAKE_PARALLEL=
+# Used internally in this file to start a submake to expand
+# $(BUILDDIR), $(MAKE_CMD) etc.
+DO_MAKE=MAKE="$(MAKE_CMD)" export MAKE && "$${MAKE}" "MAKE=$${MAKE}" "CONFIGUREARGS=$(CONFIGUREARGS)" "BUILDDIR=$(BUILDDIR)"
 
 # Used to avoid make compatibility problems.
 BIN_TRUE=":"
 
-MAKE_FLAGS="CONFIGUREARGS=$(CONFIGUREARGS)" "BUILDDIR=$(BUILDDIR)"
-
 all: bin/pike compile
 	-@$(BIN_TRUE)
 
@@ -43,7 +47,7 @@ force_autoconfig:
 
 force_configure:
 	-rm -f "$(BUILDDIR)/Makefile"
-	@$(DO_MAKE) $(MAKE_FLAGS) configure
+	@$(DO_MAKE) configure
 
 configure_help: src/configure
 	cd src && ./configure --help
@@ -157,7 +161,7 @@ compile: configure
 # FIXME: The refdoc stuff ought to use $(BUILDDIR) too.
 
 documentation:
-	@$(DO_MAKE) $(MAKE_FLAGS) "METATARGET=documentation"
+	@$(DO_MAKE) "METATARGET=documentation"
 
 doc: documentation
 
@@ -182,38 +186,38 @@ bin/pike: force
 
 # This skips the modules.
 pike: bin/pike
-	@$(DO_MAKE) $(MAKE_FLAGS) "METATARGET=pike"
+	@$(DO_MAKE) "METATARGET=pike"
 
 install: bin/pike
-	@$(DO_MAKE) $(MAKE_FLAGS) "METATARGET=install"
+	@$(DO_MAKE) "METATARGET=install"
 
 install_nodoc: bin/pike
-	@$(DO_MAKE) $(MAKE_FLAGS) "METATARGET=install_nodoc"
+	@$(DO_MAKE) "METATARGET=install_nodoc"
 
 install_interactive: bin/pike
-	@$(DO_MAKE) $(MAKE_FLAGS) "METATARGET=install_interactive"
+	@$(DO_MAKE) "METATARGET=install_interactive"
 
 install_interactive_nodoc: bin/pike
-	@$(DO_MAKE) $(MAKE_FLAGS) "METATARGET=install_interactive_nodoc"
+	@$(DO_MAKE) "METATARGET=install_interactive_nodoc"
 
 tinstall: bin/pike
-	@$(DO_MAKE) $(MAKE_FLAGS) "METATARGET=tinstall"
+	@$(DO_MAKE) "METATARGET=tinstall"
 
 testsuites:
-	@$(DO_MAKE) $(MAKE_FLAGS) "METATARGET=testsuites"
-	@$(DO_MAKE) $(MAKE_FLAGS) "METATARGET=testsuite"
+	@$(DO_MAKE) "METATARGET=testsuites"
+	@$(DO_MAKE) "METATARGET=testsuite"
 
 just_verify:
-	@$(DO_MAKE) $(MAKE_FLAGS) "METATARGET=just_verify"
+	@$(DO_MAKE) "METATARGET=just_verify"
 
 valgrind_verify:
-	@$(DO_MAKE) $(MAKE_FLAGS) "METATARGET=valgrind_verify"
+	@$(DO_MAKE) "METATARGET=valgrind_verify"
 
 verify:
-	@$(DO_MAKE) $(MAKE_FLAGS) "METATARGET=verify"
+	@$(DO_MAKE) "METATARGET=verify"
 
 verify_installed:
-	@$(DO_MAKE) $(MAKE_FLAGS) "METATARGET=verify_installed"
+	@$(DO_MAKE) "METATARGET=verify_installed"
 
 check: verify
 	-@$(BIN_TRUE)
@@ -222,25 +226,25 @@ sure: verify
 	-@$(BIN_TRUE)
 
 verbose_verify:
-	@$(DO_MAKE) $(MAKE_FLAGS) "METATARGET=verbose_verify"
+	@$(DO_MAKE) "METATARGET=verbose_verify"
 
 gdb_verify:
-	@$(DO_MAKE) $(MAKE_FLAGS) "METATARGET=gdb_verify"
+	@$(DO_MAKE) "METATARGET=gdb_verify"
 
 dump_modules:
-	@$(DO_MAKE) $(MAKE_FLAGS) "METATARGET=dump_modules"
+	@$(DO_MAKE) "METATARGET=dump_modules"
 
 force_dump_modules:
-	@$(DO_MAKE) $(MAKE_FLAGS) "METATARGET=force_dump_modules"
+	@$(DO_MAKE) "METATARGET=force_dump_modules"
 
 delete_dumped_modules:
-	@$(DO_MAKE) $(MAKE_FLAGS) "METATARGET=delete_dumped_modules"
+	@$(DO_MAKE) "METATARGET=delete_dumped_modules"
 
 undump_modules:
-	@$(DO_MAKE) $(MAKE_FLAGS) "METATARGET=undump_modules"
+	@$(DO_MAKE) "METATARGET=undump_modules"
 
 run_hilfe:
-	@$(DO_MAKE) $(MAKE_FLAGS) "METATARGET=run_hilfe"
+	@$(DO_MAKE) "METATARGET=run_hilfe"
 
 source:
 	@$(DO_MAKE) "CONFIGUREARGS=--disable-binary $(CONFIGUREARGS)" \
@@ -275,10 +279,10 @@ xenofarm_export:
 	@echo Export done
 
 bin_export:
-	@$(DO_MAKE) $(MAKE_FLAGS) "METATARGET=bin_export"
+	@$(DO_MAKE) "METATARGET=bin_export"
 
 feature_list:
-	@$(DO_MAKE) $(MAKE_FLAGS) "METATARGET=feature_list"
+	@$(DO_MAKE) "METATARGET=feature_list"
 
 solaris_pkg_configure:
 	@$(DO_MAKE) "CONFIGUREARGS=--prefix=/opt $(CONFIGUREARGS)" \
@@ -307,7 +311,7 @@ xenofarm:
 	gzip -f9 xenofarm_result.tar
 
 benchmark:
-	@$(DO_MAKE) $(MAKE_FLAGS) "METATARGET=run_bench"
+	@$(DO_MAKE) "METATARGET=run_bench"
 
 clean:
 	-cd "$(BUILDDIR)" && test -f Makefile && $(DO_MAKE) clean || { \