ifdef KMOD_TARGET
KMOD_NAME := $(subst .o,,$(obj-m))
KMOD_OBJS := $(foreach mod, $(KMOD_NAME), $($(mod)-objs))
KMOD_SRCS := $(subst .o,.c,$(KMOD_OBJS))
KMOD_BUILD_DIR := $(CURDIR)/build-$(shell $(SHELL_DBG) basename $(CURDIR))-kmod
KMOD_MAKEFILE := $(KMOD_BUILD_DIR)/Makefile

$(firstword $(KMOD_TARGET)): $(KMOD_SRCS)
	$(Q)rm -rf $(KMOD_BUILD_DIR) && mkdir -p $(KMOD_BUILD_DIR)
	$(Q)cp -f $(KMOD_SRCS) $(KMOD_BUILD_DIR)
	$(Q)echo "EXTRA_CFLAGS += " \
	         "-I$(CURDIR)" \
	         "$(INTERNAL_INCLUDES)" \
	         | sed 's/-I/\\\n    -I/g' \
	         >> $(KMOD_MAKEFILE)
	$(Q)echo "" >> $(KMOD_MAKEFILE)
	$(Q)echo "obj-m := $(obj-m)" >> $(KMOD_MAKEFILE)
	$(Q)echo "" >> $(KMOD_MAKEFILE)
	$(Q) \
	$(foreach mod, $(KMOD_NAME), \
	    echo "$(mod)-objs := $($(mod)-objs)" \
	    | sed 's/ [_a-z]*\.o/ \\\n   &/g' \
	    >> $(KMOD_MAKEFILE); \
	    echo "" >> $(KMOD_MAKEFILE); \
	)
	$(call Brief_Log,"CC",$(KMOD_TARGET))
	$(Q) \
	LDFLAGS=""; \
	    $(MAKE) -C $(KERNEL_DIR) M=$(KMOD_BUILD_DIR) CROSS_COMPILE=$(CROSS_PREFIX) modules
	$(Q)cp -f $(KMOD_BUILD_DIR)/*.ko $(CURDIR)
	$(Q)mkdir -p $(SYSROOT_LIB)
	$(Q)install -m 0755 $(KMOD_BUILD_DIR)/*.ko $(SYSROOT_LIB)

endif   # ifdef KMOD_TARGET

