diff --git a/src/aclocal.m4 b/src/aclocal.m4
index 150ad9869ceb3578018a1633343f3a5191f81c52..0c27ce72e834e38a65016ef4edc50ce89493ce4c 100644
--- a/src/aclocal.m4
+++ b/src/aclocal.m4
@@ -1,4 +1,4 @@
-dnl $Id: aclocal.m4,v 1.38 2002/01/27 17:52:13 mast Exp $
+dnl $Id: aclocal.m4,v 1.39 2002/03/06 01:01:25 mast Exp $
 
 dnl Some compatibility with Autoconf 2.50+. Not complete.
 dnl newer autoconf call substr m4_substr
@@ -234,7 +234,7 @@ define(PIKE_FEATURE_OK,[
 
 define([AC_LOW_MODULE_INIT],
 [
-# $Id: aclocal.m4,v 1.38 2002/01/27 17:52:13 mast Exp $
+# $Id: aclocal.m4,v 1.39 2002/03/06 01:01:25 mast Exp $
 
 MY_AC_PROG_CC
 
@@ -305,26 +305,8 @@ ifdef([PIKE_INCLUDE_PATH],
 dynamic_module_makefile=PIKE_INCLUDE_PATH/dynamic_module_makefile
 static_module_makefile=PIKE_INCLUDE_PATH/dynamic_module_makefile
 ],[
-  AC_MSG_CHECKING([for the Pike module base directory])
-
-  counter=.
-
-  uplevels=../
-  while test ! -f "${uplevels}dynamic_module_makefile"
-  do
-    counter=.$counter
-    if test $counter = .......... ; then
-      AC_MSG_RESULT(failed)
-      exit 1
-    else
-      :
-    fi
-    uplevels=../$uplevels
-  done
-
-  dynamic_module_makefile=${uplevels}dynamic_module_makefile
-  static_module_makefile=${uplevels}static_module_makefile
-  AC_MSG_RESULT(${uplevels}.)
+dynamic_module_makefile=$BUILD_BASE/modules/dynamic_module_makefile
+static_module_makefile=$BUILD_BASE/modules/static_module_makefile
 ])
 
 ])
@@ -345,6 +327,10 @@ pushdef([AC_OUTPUT],
   export BINDIR
   AC_SUBST(BUILDDIR)
   export BUILDDIR
+  AC_SUBST(PIKE_SRC_DIR)
+  export PIKE_SRC_DIR
+  AC_SUBST(BUILD_BASE)
+  export BUILD_BASE
   AC_SUBST(INSTALL)
   export INSTALL
   AC_SUBST(AR)
diff --git a/src/configure.in b/src/configure.in
index 0f9d3612a274435e878ee336a2b378357f79565e..688e8287d589f405aa866bca1f8de4998cffc80b 100644
--- a/src/configure.in
+++ b/src/configure.in
@@ -1,4 +1,4 @@
-AC_REVISION("$Id: configure.in,v 1.566 2002/02/28 23:35:41 mast Exp $")
+AC_REVISION("$Id: configure.in,v 1.567 2002/03/06 01:01:25 mast Exp $")
 AC_INIT(interpret.c)
 AC_CONFIG_HEADER(machine.h)
 
@@ -5826,6 +5826,11 @@ export LDFLAGS CFLAGS CPPFLAGS LIBS
 export prefix exec_prefix OTHERFLAGS
 export TMP_BINDIR DEFINES INSTALL
 
+PIKE_SRC_DIR=$srcdir
+export PIKE_SRC_DIR
+BUILD_BASE=`pwd`
+export BUILD_BASE
+
 default_master=$prefix/pike/%d.%d.%d/lib/master.pike
 AC_DEFINE_UNQUOTED(DEFAULT_MASTER,"$default_master")
 
diff --git a/src/make_variables.in b/src/make_variables.in
index bf02743e4646bb10b2924152571a87876bf7e86c..eef45d3e0430a8b5fa697365d087059ef7daa75d 100644
--- a/src/make_variables.in
+++ b/src/make_variables.in
@@ -1,6 +1,6 @@
 # -*- Makefile -*-
 #
-# $Id: make_variables.in,v 1.7 2002/01/27 17:53:31 mast Exp $
+# $Id: make_variables.in,v 1.8 2002/03/06 01:08:13 mast Exp $
 #
 # Note: This template is actually used only for make_variables in the
 # subdirectories; the one created in the build base dir is just an
@@ -15,6 +15,8 @@ TMP_BUILDDIR=@BUILDDIR@
 TMP_BINDIR=@BINDIR@
 DEFINES=@CPPFLAGS@
 TMP_LIBDIR=$(TMP_BUILDDIR)/lib
+PIKE_SRC_DIR=@PIKE_SRC_DIR@
+BUILD_BASE=@BUILD_BASE@
 
 DEFAULT_RUNPIKE=$(TMP_BUILDDIR)/pike -DNOT_INSTALLED -m$(TMP_BUILDDIR)/master.pike $(PIKEOPTS)
 USE_TPIKE=$(TMP_BUILDDIR)/precompile.sh
diff --git a/src/modules/Image/encodings/Makefile.in b/src/modules/Image/encodings/Makefile.in
index 15705a2782cd162a005d6685e1947782a8085320..9237863b193acfd557f81faee3d35fdccd7c9dd7 100644
--- a/src/modules/Image/encodings/Makefile.in
+++ b/src/modules/Image/encodings/Makefile.in
@@ -1,4 +1,4 @@
-# $Id: Makefile.in,v 1.34 2002/02/04 14:49:15 nilsson Exp $
+# $Id: Makefile.in,v 1.35 2002/03/06 01:01:26 mast Exp $
 SRCDIR=@srcdir@
 VPATH=@srcdir@:@srcdir@/../../..:../../..
 OBJS = pnm.o x.o xwd.o png.o any.o bmp.o tga.o pcx.o xbm.o _xpm.o ilbm.o iff.o xcf.o hrz.o avs.o psd.o wbf.o ras.o pvr.o tim.o dsi.o
@@ -24,9 +24,9 @@ all: encodings.a
 	@echo "Compiling $<" ;\
 	if $(CC) $(CFLAGS) -c $< -o $@ ; then : ;\
 	else \
-	  echo "WARNING: Compiler failure! Trying without optimization!" >&2;\
-	  echo "echo $(CC) $(PREFLAGS) $(NOOPTFLAGS) -c $< -o $@" >&2;\
-	  NO_ULIMIT=yes $(CC) $(PREFLAGS) $(NOOPTFLAGS) -c $< -o $@ ;\
+	  echo "Compilation command was:" >&2;\
+	  echo "$(CC) $(CFLAGS) -c $< -o $@" >&2;\
+	  false;\
 	fi
 
 encodings.a : $(OBJS)
diff --git a/src/modules/Makefile.in b/src/modules/Makefile.in
index de4f03a6a8ac96be7124159c746491bc8e84e0a1..df41582af807d34f46dccf96fbd01d0c57e141a1 100644
--- a/src/modules/Makefile.in
+++ b/src/modules/Makefile.in
@@ -1,4 +1,4 @@
-# $Id: Makefile.in,v 1.39 2001/09/01 15:20:07 mast Exp $
+# $Id: Makefile.in,v 1.40 2002/03/06 01:01:26 mast Exp $
 
 @make_variables@
 
@@ -48,7 +48,7 @@ $(SRCDIR)/configure: $(SRCDIR)/configure.in $(SRCDIR)/../aclocal.m4
 	cd $(SRCDIR) && autoconf --localdir=$(SRCDIR)/..
 
 config.status: $(SRCDIR)/configure
-	CFLAGS="$(REAL_CFLAGS)" LDFLAGS="$(REAL_LDFLAGS)" CPPFLAGS="$(REAL_CPPFLAGS)" BUILDDIR="$(TMP_BUILDDIR)" BINDIR="$(TMP_BINDIR)" ./config.status --recheck
+	CFLAGS="$(REAL_CFLAGS)" LDFLAGS="$(REAL_LDFLAGS)" CPPFLAGS="$(REAL_CPPFLAGS)" BUILDDIR="$(TMP_BUILDDIR)" BINDIR="$(TMP_BINDIR)" PIKE_SRC_DIR="$(PIKE_SRC_DIR)" BUILD_BASE="$(BUILD_BASE)" ./config.status --recheck
 
 depend:
 	@for a in $(MODULES) ; do \
diff --git a/src/modules/_Crypto/lib/Makefile.in b/src/modules/_Crypto/lib/Makefile.in
index 4e8d90002da86c502936b1451568ae4da5fcfd2b..127d18772aae673be1ad2ad0a8ebfba739f746bf 100644
--- a/src/modules/_Crypto/lib/Makefile.in
+++ b/src/modules/_Crypto/lib/Makefile.in
@@ -1,4 +1,4 @@
-# $Id: Makefile.in,v 1.30 2002/02/26 16:54:20 marcus Exp $
+# $Id: Makefile.in,v 1.31 2002/03/06 01:01:26 mast Exp $
 #
 # Makefile for low-level crypto library
 
@@ -123,9 +123,9 @@ desdata_yes:	$(SRCDIR)/desdata.pike
 	@echo "Compiling $<" ;\
 	if $(CC) $(CFLAGS) -c $< -o $@ ; then : ;\
 	else \
-	  echo "WARNING: Compiler failure! Trying without optimization!" >&2;\
-	  echo "echo $(CC) $(PREFLAGS) $(NOOPTFLAGS) -c $< -o $@" >&2 ;\
-	  NO_ULIMIT=yes $(CC) $(PREFLAGS) $(NOOPTFLAGS) -c $< -o $@ ;\
+	  echo "Compilation command was:" >&2;\
+	  echo "$(CC) $(CFLAGS) -c $< -o $@" >&2;\
+	  false;\
 	fi
 
 # slowest to quickest
diff --git a/src/modules/dynamic_module_makefile.in b/src/modules/dynamic_module_makefile.in
index be73f4fe56e8b4b6fd34c05f2c74173f509b4d86..79ae6a7b03f62e1dd943283058b523f2514a7b02 100644
--- a/src/modules/dynamic_module_makefile.in
+++ b/src/modules/dynamic_module_makefile.in
@@ -1,5 +1,5 @@
 #
-# $Id: dynamic_module_makefile.in,v 1.82 2002/01/28 17:43:20 mast Exp $
+# $Id: dynamic_module_makefile.in,v 1.83 2002/03/06 01:01:26 mast Exp $
 #
 
 
@@ -12,12 +12,9 @@ REAL_CFLAGS=@CFLAGS@
 REAL_CPPFLAGS=@CPPFLAGS@
 LC_REQ=@LC_REQ@
 
-PIKE_SRC_DIR=$(SRCDIR)/../..
-BUILD_BASE=../..
-MODULE_BASE=..
-PIKE_INCLUDES=-I$(PIKE_SRC_DIR) -I$(BUILD_BASE)
+MODULE_BASE=$(BUILD_BASE)/modules
 
-PREFLAGS=-I. -I$(SRCDIR) $(PIKE_INCLUDES) -I. $(MODULE_CPPFLAGS) $(DEFINES)
+PREFLAGS=-I. -I$(SRCDIR) $(MODULE_CPPFLAGS) $(DEFINES)
 CFLAGS=$(MODULE_CFLAGS) $(PREFLAGS) $(OTHERFLAGS) @CCSHARED@ 
 NOOPT_CFLAGS=$(PREFLAGS) $(NOOPTFLAGS) @CCSHARED@ $(MODULE_CFLAGS)
 
@@ -97,7 +94,7 @@ $(SRCDIR)/configure: $(SRCDIR)/configure.in $(PIKE_SRC_DIR)/aclocal.m4
 	else :; fi
 
 config.status: $(SRCDIR)/configure
-	CFLAGS="$(REAL_CFLAGS)" LDFLAGS="$(REAL_LDFLAGS)" CPPFLAGS="$(REAL_CPPFLAGS)" BUILDDIR="$(TMP_BUILDDIR)" BINDIR="$(TMP_BINDIR)" ./config.status --recheck
+	CFLAGS="$(REAL_CFLAGS)" LDFLAGS="$(REAL_LDFLAGS)" CPPFLAGS="$(REAL_CPPFLAGS)" BUILDDIR="$(TMP_BUILDDIR)" BINDIR="$(TMP_BINDIR)" PIKE_SRC_DIR="$(PIKE_SRC_DIR)" BUILD_BASE="$(BUILD_BASE)" ./config.status --recheck
 
 
 module.so: $(OBJS)  $(MODULE_ARCHIVES)
diff --git a/src/modules/static_module_makefile.in b/src/modules/static_module_makefile.in
index b303e2fc18dbd5e80a52257384488a9f9148ae06..eea66abdba4c3bce34611a171645e143ed95a0fd 100644
--- a/src/modules/static_module_makefile.in
+++ b/src/modules/static_module_makefile.in
@@ -1,21 +1,19 @@
 #
-# $Id: static_module_makefile.in,v 1.73 2002/01/28 17:43:20 mast Exp $
+# $Id: static_module_makefile.in,v 1.74 2002/03/06 01:01:26 mast Exp $
 #
 
 
 CC=@CC@
 CPP=@CPP@
 AR=@AR@
-PIKE_SRC_DIR=$(SRCDIR)/../..
-BUILD_BASE=../..
-MODULE_BASE=..
-
 REAL_LDFLAGS=@LDFLAGS@
 REAL_CFLAGS=@CFLAGS@
 REAL_CPPFLAGS=@CPPFLAGS@
 
-PREFLAGS=-I. -I$(SRCDIR) -I$(SRCDIR)/../.. -I../.. -I. -Dpike_module_init=pike_module_$(MODNAME)_init -Dpike_module_exit=pike_module_$(MODNAME)_exit $(MODULE_CPPFLAGS) $(DEFINES) 
-CFLAGS=$(PREFLAGS) $(OTHERFLAGS) $(MODULE_CFLAGS)
+MODULE_BASE=$(BUILD_BASE)/modules
+
+PREFLAGS=-I. -I$(SRCDIR) -Dpike_module_init=pike_module_$(MODNAME)_init -Dpike_module_exit=pike_module_$(MODNAME)_exit $(MODULE_CPPFLAGS) $(DEFINES)
+CFLAGS=$(MODULE_CFLAGS) $(PREFLAGS) $(OTHERFLAGS)
 NOOPT_CFLAGS=$(PREFLAGS) $(NOOPTFLAGS) @CCSHARED@ $(MODULE_CFLAGS)
 
 MAKE_FLAGS = "prefix=$(prefix)" "exec_prefix=$(exec_prefix)" "CC=$(CC)" "OTHERFLAGS=$(OTHERFLAGS)" "TMP_BINDIR=$(TMP_BINDIR)" "DEFINES=$(DEFINES)" "TMP_LIBDIR=$(TMP_LIBDIR)" "RUNPIKE=$(RUNPIKE)" "INSTALL=$(INSTALL)" "AR=$(AR)" "NOOPTFLAGS=$(NOOPTFLAGS)" $(MODULE_MAKE_FLAGS)
@@ -96,7 +94,7 @@ $(SRCDIR)/configure: $(SRCDIR)/configure.in $(PIKE_SRC_DIR)/aclocal.m4
 	else :; fi
 
 config.status: $(SRCDIR)/configure
-	CFLAGS="$(REAL_CFLAGS)" LDFLAGS="$(REAL_LDFLAGS)" CPPFLAGS="$(REAL_CPPFLAGS)" BUILDDIR="$(TMP_BUILDDIR)" BINDIR="$(TMP_BINDIR)" ./config.status --recheck
+	CFLAGS="$(REAL_CFLAGS)" LDFLAGS="$(REAL_LDFLAGS)" CPPFLAGS="$(REAL_CPPFLAGS)" BUILDDIR="$(TMP_BUILDDIR)" BINDIR="$(TMP_BINDIR)" PIKE_SRC_DIR="$(PIKE_SRC_DIR)" BUILD_BASE="$(BUILD_BASE)" ./config.status --recheck
 
 module.pmod: Makefile
 	@echo "Making module.pmod" ; if [ -f $(SRCDIR)/module.pmod.in ]; then \
diff --git a/src/post_modules/Makefile.in b/src/post_modules/Makefile.in
index f285a83e99db6d682cd47faea5f93d7868fb8045..d93906455298b1c5a24ca222d2bc918d1ac27933 100644
--- a/src/post_modules/Makefile.in
+++ b/src/post_modules/Makefile.in
@@ -1,4 +1,4 @@
-# $Id: Makefile.in,v 1.6 2002/01/27 17:51:27 mast Exp $
+# $Id: Makefile.in,v 1.7 2002/03/06 01:01:27 mast Exp $
 
 @make_variables@
 
@@ -58,7 +58,7 @@ $(SRCDIR)/configure: $(SRCDIR)/configure.in $(SRCDIR)/../aclocal.m4
 	cd $(SRCDIR) && autoconf --localdir=$(SRCDIR)/..
 
 config.status: $(SRCDIR)/configure
-	CFLAGS="$(REAL_CFLAGS)" LDFLAGS="$(REAL_LDFLAGS)" CPPFLAGS="$(REAL_CPPFLAGS)" BUILDDIR="$(TMP_BUILDDIR)" BINDIR="$(TMP_BINDIR)" ./config.status --recheck
+	CFLAGS="$(REAL_CFLAGS)" LDFLAGS="$(REAL_LDFLAGS)" CPPFLAGS="$(REAL_CPPFLAGS)" BUILDDIR="$(TMP_BUILDDIR)" BINDIR="$(TMP_BINDIR)" PIKE_SRC_DIR="$(PIKE_SRC_DIR)" BUILD_BASE="$(BUILD_BASE)" ./config.status --recheck
 
 depend:
 	@for a in $(MODULES) no ; do \