diff --git a/.gitattributes b/.gitattributes
index 3f1caa5125a3a4caf605194b2b6cbf5dc389f274..9aaa7808af2eb0c4cfebdb57b9be738e3f8850d2 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -156,6 +156,7 @@ testfont binary
 /src/modules/_Crypto/test_crypto.pike foreign_ident
 /src/modules/call_out/call_out.c foreign_ident
 /src/modules/call_out/test_co.pike foreign_ident
+/src/modules/dynamic_module_makefile.in foreign_ident
 /src/modules/files/acconfig.h foreign_ident
 /src/modules/files/file.c foreign_ident
 /src/modules/files/socktest.pike foreign_ident
@@ -163,6 +164,7 @@ testfont binary
 /src/modules/spider/accesseddb.h foreign_ident
 /src/modules/spider/dumudp.c foreign_ident
 /src/modules/sprintf/sprintf.c foreign_ident
+/src/modules/static_module_makefile.in foreign_ident
 /src/modules/system/acconfig.h foreign_ident
 /src/modules/system/passwords.c foreign_ident
 /src/modules/system/syslog.c foreign_ident
diff --git a/src/modules/Image/Makefile.in b/src/modules/Image/Makefile.in
index 8e1971c8ade4deb08d641a830cb9792ebf16688c..3df582cef1487aeb491942f859a35924839247aa 100644
--- a/src/modules/Image/Makefile.in
+++ b/src/modules/Image/Makefile.in
@@ -12,10 +12,10 @@ MODULE_LDFLAGS=@LDFLAGS@
 @dynamic_module_makefile@
 
 pike: all
-	cd ../..; $(MAKE)
+	cd ../..; $(MAKE) "AR=$(AR)"
 
 pure: all
-	cd ../..; $(MAKE) pure
+	cd ../..; $(MAKE) "AR=$(AR)" pure
 
 
 @dependencies@
diff --git a/src/modules/Image/encodings/Makefile.in b/src/modules/Image/encodings/Makefile.in
index 8e435d6b7dd31b5da22bde0a63d02f0d3564f240..accd11f8d43dce4088e7d15e1b00910185c26a3f 100644
--- a/src/modules/Image/encodings/Makefile.in
+++ b/src/modules/Image/encodings/Makefile.in
@@ -8,6 +8,7 @@ OBJS=gif.a pnm.a
 
 CC=@CC@
 CPP=@CPP@
+AR=ar
 
 PREFLAGS=-I. -I$(SRCDIR) -I$(SRCDIR)/../../.. -I$(SRCDIR)/.. -I../../.. -I.. -I. $(MODULE_CPPFLAGS) $(DEFINES) 
 CFLAGS=$(PREFLAGS) $(OTHERFLAGS) $(MODULE_CFLAGS) #@CCSHARED@ 
@@ -16,11 +17,11 @@ all: $(OBJS)
 
 gif.a : $(GIF_OBJS)
 	rm -f gif.a
-	ar cq gif.a $(GIF_OBJS)
+	$(AR) cq gif.a $(GIF_OBJS)
 
 pnm.a : $(PNM_OBJS)
 	rm -f pnm.a
-	ar cq pnm.a $(PNM_OBJS)
+	$(AR) cq pnm.a $(PNM_OBJS)
 
 depend:
 	gcc -MM $(PREFLAGS) $(SRCDIR)/*.c | $(TMP_BINDIR)/fixdepends.sh $(SRCDIR)
diff --git a/src/modules/Makefile.in b/src/modules/Makefile.in
index 3085c46fe478defdf81783f6625c70851a640a3a..192ad293b68f87316a995ba91da42bcdfb467a8f 100644
--- a/src/modules/Makefile.in
+++ b/src/modules/Makefile.in
@@ -3,11 +3,13 @@
 CC=@CC@
 CPP=@CPP@
 
+AR=@AR@
+
 MODULES=@subdirs@
 MODULE_SEGMENTS=@MODULE_SEGMENTS@
 MODULE_LINKOPTS=@MODULE_LINKOPTS@
 
-MAKE_FLAGS = "prefix=$(prefix)" "exec_prefix=$(exec_prefix)" "CC=$(CC)" "OTHERFLAGS=$(OTHERFLAGS)" "TMP_BINDIR=$(TMP_BINDIR)" "TMP_LIBDIR=$(TMP_LIBDIR)" "RUNPIKE=$(RUNPIKE)" "DEFINES=$(DEFINES)" "INSTALL=$(INSTALL)"
+MAKE_FLAGS = "prefix=$(prefix)" "exec_prefix=$(exec_prefix)" "CC=$(CC)" "OTHERFLAGS=$(OTHERFLAGS)" "TMP_BINDIR=$(TMP_BINDIR)" "TMP_LIBDIR=$(TMP_LIBDIR)" "RUNPIKE=$(RUNPIKE)" "DEFINES=$(DEFINES)" "INSTALL=$(INSTALL)" "AR=$(AR)"
 
 all: modules
 
diff --git a/src/modules/_Crypto/lib/Makefile.in b/src/modules/_Crypto/lib/Makefile.in
index 07a1a693b0f6a536cb772b29cdc4449ce24030d5..f3750edd9561f3842a6c7da3b4fd2dfbf4071f90 100644
--- a/src/modules/_Crypto/lib/Makefile.in
+++ b/src/modules/_Crypto/lib/Makefile.in
@@ -3,6 +3,7 @@
 CC=@CC@
 CPP=@CPP@
 RANLIB=@RANLIB@
+AR=ar
 
 # Reset VPATH
 SRCDIR=@srcdir@
@@ -65,7 +66,7 @@ clean:
 depend:
 
 desCore.a:	$O
-		ar cru $@ $O
+		$(AR) cru $@ $O
 		$(RANLIB) $@
 
 desdata.o:	desinfo.h $(SRCDIR)/../include/des.h
@@ -140,5 +141,5 @@ OBJS = idea.o sha.o md5.o rc4.o cast.o $(O)
 
 algorithms.a: $(OBJS)
 	rm -f algorithms.a
-	ar cq algorithms.a $(OBJS)
+	$(AR) cq algorithms.a $(OBJS)
 	$(RANLIB) algorithms.a
diff --git a/src/modules/dynamic_module_makefile.in b/src/modules/dynamic_module_makefile.in
index bdae3214cd8963400ce2fc8d2c89341255bf7b4d..691c84edb860cac7b1f714bf49192580da777ce7 100644
--- a/src/modules/dynamic_module_makefile.in
+++ b/src/modules/dynamic_module_makefile.in
@@ -1,16 +1,21 @@
+#
+# $Id: dynamic_module_makefile.in,v 1.23 1997/11/04 22:46:27 grubba Exp $
+#
+
 
 CC=@CC@
 CPP=@CPP@
+AR=@AR@
 
 PREFLAGS=-I. -I$(SRCDIR) -I$(SRCDIR)/../.. -I../.. -I. $(MODULE_CPPFLAGS) $(DEFINES) 
 CFLAGS=$(PREFLAGS) $(OTHERFLAGS) @CCSHARED@ $(MODULE_CFLAGS)
 
-MAKE_FLAGS = "prefix=$(prefix)" "exec_prefix=$(exec_prefix)" "CC=$(CC)" "OTHERFLAGS=$(OTHERFLAGS) @CCSHARED@" "TMP_BINDIR=$(TMP_BINDIR)" "DEFINES=$(DEFINES)" "TMP_LIBDIR=$(TMP_LIBDIR)" "RUNPIKE=$(RUNPIKE)" "INSTALL=$(INSTALL)" $(MODULE_MAKE_FLAGS)
+MAKE_FLAGS = "prefix=$(prefix)" "exec_prefix=$(exec_prefix)" "CC=$(CC)" "OTHERFLAGS=$(OTHERFLAGS) @CCSHARED@" "TMP_BINDIR=$(TMP_BINDIR)" "DEFINES=$(DEFINES)" "TMP_LIBDIR=$(TMP_LIBDIR)" "RUNPIKE=$(RUNPIKE)" "INSTALL=$(INSTALL)" "AR=$(AR)" $(MODULE_MAKE_FLAGS)
 
 all: subdirs dummy
 
 subdirs:
-	for a in '' $(MODULE_SUBDIRS) ; do if test ! -z "$$a"; then echo making $$a ; ( cd $$a ; $(MAKE) $(MAKE_FLAGS) ) ; fi ; done
+	for a in '' $(MODULE_SUBDIRS) ; do if test ! -z "$$a"; then echo making $$a ; ( cd $$a && $(MAKE) $(MAKE_FLAGS) ) || exit $$? ; fi ; done
 
 dummy:	$(DUMMY) linker_options modlist_headers modlist_segment module.so
 	tmp="$(INSTALL_NAME)" ; \
diff --git a/src/modules/static_module_makefile.in b/src/modules/static_module_makefile.in
index 2b4139bf0f120fba93ef38f66f5e1353b4b839e7..c715916e5dcce42bc91dea94f1aee5b3752f030b 100644
--- a/src/modules/static_module_makefile.in
+++ b/src/modules/static_module_makefile.in
@@ -1,16 +1,21 @@
+#
+# $Id: static_module_makefile.in,v 1.18 1997/11/04 22:46:28 grubba Exp $
+#
+
 
 CC=@CC@
 CPP=@CPP@
+AR=@AR@
 
 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)
 
-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)" $(MODULE_MAKE_FLAGS)
+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)" $(MODULE_MAKE_FLAGS)
 
 all: subdirs dummy
 
 subdirs:
-	for a in '' $(MODULE_SUBDIRS) ; do if test ! -z "$$a"; then echo making $$a ; ( cd $$a ; $(MAKE) $(MAKE_FLAGS) ) ; fi ; done
+	for a in '' $(MODULE_SUBDIRS) ; do if test ! -z "$$a"; then echo making $$a ; ( cd $$a && $(MAKE) $(MAKE_FLAGS) ) || exit $$? ; fi ; done
 
 dummy:	linker_options modlist_headers modlist_segment module.pmod module.a
 	tmp="$(INSTALL_NAME)" ;\
@@ -41,7 +46,7 @@ module.pmod: Makefile
 
 module.a: $(OBJS)
 	-rm -f module.a
-	ar cq module.a $(OBJS)
+	$(AR) cq module.a $(OBJS)
 	-@RANLIB@ module.a
 	if test -f linker_options ; then touch linker_options ; fi