diff --git a/src/modules/_Crypto/Makefile.in b/src/modules/_Crypto/Makefile.in
index cd9f478f6f25f473be4c313add9d9e7c0454c2f4..37e0c59273860da7aef5419c028c870ad6bc03b2 100644
--- a/src/modules/_Crypto/Makefile.in
+++ b/src/modules/_Crypto/Makefile.in
@@ -7,16 +7,8 @@ MODULE_SUBDIRS=lib
 @SET_MAKE@
 
 MODULE_CPPFLAGS= -I$(SRCDIR)/include -DPIKE
+MODULE_MAKE_FLAGS="EXTRA_CPP_FLAGS=-DPIKE -I$(SRCDIR)/../.. -I../../.."
 
 @dynamic_module_makefile@
 
-# Create library of algorithms
-lib/algorithms.a: FORCE
-	cd lib; $(MAKE) \
-		"CC=$(CC)" \
-                  "EXTRA_CPP_FLAGS=-DPIKE -g -I$(SRCDIR)/../.. -I../../.." \
-	          "EXTRA_CFLAGS= $(CFLAGS)" algorithms.a
-
-FORCE:
-
 @dependencies@
diff --git a/src/modules/_Crypto/lib/Makefile.in b/src/modules/_Crypto/lib/Makefile.in
index a1db220ca7a9d97294bba01b7c69363b35a62951..86e2c01c65d88b60d1207c09f739eb8c0855ef72 100644
--- a/src/modules/_Crypto/lib/Makefile.in
+++ b/src/modules/_Crypto/lib/Makefile.in
@@ -11,10 +11,10 @@ VPATH=$(SRCDIR):$(SRCDIR)/../include
 CRYPTO_INCLUDES=$(SRCDIR)/../include
 
 # Additional C preprocessor flags
-PREFLAGS= $(EXTRA_CPP_FLAGS) -I$(CRYPTO_INCLUDES) -I. -I$(SRCDIR)
+PREFLAGS=$(DEFINES) $(EXTRA_CPP_FLAGS) -I$(CRYPTO_INCLUDES) -I. -I$(SRCDIR)
 
 # The flags to generate a shared library
-CFLAGS= $(EXTRA_CFLAGS) $(PREFLAGS)
+CFLAGS=$(PREFLAGS) $(OTHER_FLAGS) $(EXTRA_CFLAGS)
 
 default: algorithms.a
 
diff --git a/src/modules/dynamic_module_makefile.in b/src/modules/dynamic_module_makefile.in
index 308d1fe61b998001611663c0391976861a0f8160..a8f6cb7b99e07b391c8227d468564f1ea20cd9b4 100644
--- a/src/modules/dynamic_module_makefile.in
+++ b/src/modules/dynamic_module_makefile.in
@@ -1,9 +1,12 @@
 PREFLAGS=$(DEFINES) -I. -I$(SRCDIR) -I$(SRCDIR)/../.. -I../.. -I. $(MODULE_CPPFLAGS)
 CFLAGS=$(PREFLAGS) $(OTHERFLAGS) @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)"
+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)
 
-all: module.@SO@ dummy
+all: subdirs module.@SO@ dummy
+
+subdirs:
+	for a in '' $(MODULE_SUBDIRS) ; do if test ! -z "$$a"; then echo making $$a ; ( cd $$a ; $(MAKE) $(MAKE_FLAGS) ) ; fi ; done
 
 dummy:	$(DUMMY) linker_options modlist_headers modlist_segment
 	tmp="$(INSTALL_NAME)" ; if test x$$tmp = x ; then tmp="$(MODNAME)"; fi ; $(INSTALL) module.so $(TMP_LIBDIR)/modules/$$tmp.so
@@ -42,7 +45,7 @@ verbose_verify: module_testsuite
 
 gdb_verify: module_testsuite
 	@echo >.gdbinit handle SIGUSR1 nostop noprint pass
-	@echo >>.gdbinit run -DNOT_INSTALLED -M.. -m $(SRCDIR)/../../../lib/master.pike $(PIKEOPTS) $(SRCDIR)/../../../bin/test_pike.pike module_testsuite -v -v -f
+	@echo >>.gdbinit run -DNOT_INSTALLED -m ../../lib/master.pike $(PIKEOPTS) $(SRCDIR)/../../../bin/test_pike.pike module_testsuite -v -v -f
 	gdb ../../pike
 	@rm .gdbinit
 
diff --git a/src/modules/static_module_makefile.in b/src/modules/static_module_makefile.in
index cea6f89e79788701886d380cdd58d5ed9b6f363b..27f65f4bf2ccdeb437b98c82eca0275c5b7cf602 100644
--- a/src/modules/static_module_makefile.in
+++ b/src/modules/static_module_makefile.in
@@ -1,9 +1,12 @@
 PREFLAGS=$(DEFINES) -I. -I$(SRCDIR) -I$(SRCDIR)/../.. -I../.. -I. -Dpike_module_init=pike_module_$(MODNAME)_init -Dpike_module_exit=pike_module_$(MODNAME)_exit $(MODULE_CPPFLAGS)
 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)"
+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)
 
-all: module.a dummy
+all: subdirs module.a dummy
+
+subdirs:
+	for a in '' $(MODULE_SUBDIRS) ; do if test ! -z "$$a"; then echo making $$a ; ( cd $$a ; $(MAKE) $(MAKE_FLAGS) ) ; fi ; done
 
 dummy:	linker_options modlist_headers modlist_segment module.pmod
 	tmp="$(INSTALL_NAME)" ; if test x$$tmp = x ; then tmp="$(MODNAME)"; fi ; $(INSTALL) module.pmod $(TMP_LIBDIR)/modules/$$tmp.pmod
@@ -46,7 +49,7 @@ verbose_verify: module_testsuite
 
 gdb_verify: module_testsuite
 	@echo >.gdbinit handle SIGUSR1 nostop noprint pass
-	@echo >>.gdbinit run -DNOT_INSTALLED -M.. -m $(SRCDIR)/../../../lib/master.pike $(PIKEOPTS) $(SRCDIR)/../../../bin/test_pike.pike module_testsuite -v -v -f
+	@echo >>.gdbinit run -DNOT_INSTALLED -m ../../lib/master.pike $(PIKEOPTS) $(SRCDIR)/../../../bin/test_pike.pike module_testsuite -v -v -f
 	gdb ../../pike
 	@rm .gdbinit