-CFGFILES =
-CFGFILES += $(shell test -f ../../../Makefile.cfg && echo ../../../Makefile.cfg)
-CFGFILES += $(shell test -f ../../Makefile.cfg && echo ../../Makefile.cfg)
-CFGFILES += $(shell test -f ../Makefile.cfg && echo ../Makefile.cfg)
-CFGFILES += $(shell test -f Makefile.cfg && echo Makefile.cfg)
--include $(CFGFILES)
-
-CPPFLAGS = -I$(ACESSDIR)/Kernel/include -I$(ACESSDIR)/Kernel/arch/$(ARCHDIR)/include -DARCH=$(ARCH) $(_CPPFLAGS)
-CFLAGS = -Wall -Werror -fno-stack-protector $(CPPFLAGS) -O3
-
-OBJ := $(addsuffix .$(ARCH),$(OBJ))
-ifeq ($(CATEGORY),)
- BIN := ../$(CATEGORY)_$(NAME).kmd.$(ARCH)
+-include $(dir $(lastword $(MAKEFILE_LIST)))../Makefile.cfg
+
+LIBINCLUDES := $(addprefix -I$(ACESSDIR)/Modules/,$(DEPS))
+LIBINCLUDES := $(addsuffix /include,$(LIBINCLUDES))
+
+CPPFLAGS := -I$(ACESSDIR)/Kernel/include -I$(ACESSDIR)/Kernel/arch/$(ARCHDIR)/include
+CPPFLAGS += -DARCH=$(ARCH) -DARCH_is_$(ARCH) -DARCHDIR_is_$(ARCHDIR)
+CPPFLAGS += $(_CPPFLAGS)
+CPPFLAGS += $(LIBINCLUDES)
+CFLAGS := -std=gnu99 -Wall -Werror -fno-stack-protector -g -O3
+
+ifneq ($(CATEGORY),)
+ FULLNAME := $(CATEGORY)_$(NAME)
+else
+ FULLNAME := $(NAME)
+endif
+
+CPPFLAGS += -D_MODULE_NAME_=\"$(FULLNAME)\"
+
+ifneq ($(BUILDTYPE),static)
+ _SUFFIX := dyn_$(ARCH)
+ BIN := ../$(FULLNAME).kmd.$(ARCH)
+ CFLAGS += $(DYNMOD_CFLAGS) -fPIC