diff --git a/require-ess/tools/driver.makefile b/require-ess/tools/driver.makefile
index a495d49b1ae7b928edf3b2580b1e454d54adf220..55c6822ec51009d66fcc0d6d7552bcb052034a3e 100644
--- a/require-ess/tools/driver.makefile
+++ b/require-ess/tools/driver.makefile
@@ -291,6 +291,8 @@ debug::
 	@echo "ARCH_FILTER = ${ARCH_FILTER}"
 	@echo "EXCLUDE_ARCHS = ${EXCLUDE_ARCHS}"
 	@echo "LIBVERSION = ${LIBVERSION}"
+	@echo "E3_SITEMODS_PATH = ${E3_SITEMODS_PATH}"
+	@echo "EPICS_MODULES = ${EPICS_MODULES}"
 
 # Create e.g. build-$(T_A) rules for each architecture, so that we can just do
 #   build: build-arch1 build-arch2
@@ -538,6 +540,10 @@ ifneq ($(MODULELIB),)
 LIBOBJS += $(addsuffix $(OBJ),$(basename ${VERSIONFILE}))
 endif # MODULELIB
 
+MODULE_RULES = ${CFGS:%=../%}
+MODULE_RULES += $(foreach m,$(REQ),$(wildcard $(E3_SITEMODS_PATH)/$m/$($(m)_VERSION)/cfg/RULES*))
+MODULE_RULES += $(foreach m,$(REQ),$(wildcard $(EPICS_MODULES)/$m/$($(m)_VERSION)/cfg/RULES*))
+
 debug::
 	@echo "===================== Pass 3: Build directory ====================="
 	@echo "BUILDCLASSES = ${BUILDCLASSES}"
@@ -561,6 +567,7 @@ debug::
 	@echo "TEMPLS = ${TEMPLS}"
 	@echo "LIBVERSION = ${LIBVERSION}"
 	@echo "MODULE_LOCATION = ${MODULE_LOCATION}"
+	@echo "MODULE_RULES = ${MODULE_RULES}"
 
 build: MODULEINFOS
 build: ${MODULEDBD}
@@ -574,7 +581,10 @@ INSTALL_LOADABLE_SHRLIBS=
 # We ony want to include ${BASERULES} from EPICS base if we are /not/ in debug
 # mode. Including this causes all of the source files to be compiled!
 ifeq (,$(findstring debug,${MAKECMDGOALS}))
-include ${BASERULES}
+  include ${BASERULES}
+  ifneq ($(strip $(MODULE_RULES)),)
+    include $(MODULE_RULES)
+  endif
 endif
 
 # Fix incompatible release rules.