flatten the make system a little bit by providing only modules as a
compilation unit.

to add a module as a dependency of another, just add to the MODULE make
variable, instead of APPS/LIBS/DEVS
diff --git a/module.mk b/module.mk
new file mode 100644
index 0000000..3e07813
--- /dev/null
+++ b/module.mk
@@ -0,0 +1,21 @@
+# included from the main makefile to include a set of rules.mk to satisfy
+# the current MODULE list. If as a byproduct of including the rules.mk
+# more stuff shows up on the MODULE list, recurse
+
+# sort and filter out any modules that have already been included
+MODULES := $(sort $(MODULES))
+MODULES := $(filter-out $(ALLMODULES),$(MODULES))
+
+ifneq ($(MODULES),)
+
+ALLMODULES += $(MODULES)
+ALLMODULES := $(sort $(ALLMODULES))
+INCMODULES := $(MODULES)
+MODULES :=
+$(info including $(INCMODULES))
+include $(addsuffix /rules.mk,$(INCMODULES))
+
+include module.mk
+
+endif
+