_rules-kmod.mk 1.2 KB

1234567891011121314151617181920212223242526272829303132333435
  1. ifdef KMOD_TARGET
  2. KMOD_NAME := $(subst .o,,$(obj-m))
  3. KMOD_OBJS := $(foreach mod, $(KMOD_NAME), $($(mod)-objs))
  4. KMOD_SRCS := $(subst .o,.c,$(KMOD_OBJS))
  5. KMOD_BUILD_DIR := $(CURDIR)/build-$(shell $(SHELL_DBG) basename $(CURDIR))-kmod
  6. KMOD_MAKEFILE := $(KMOD_BUILD_DIR)/Makefile
  7. $(firstword $(KMOD_TARGET)): $(KMOD_SRCS)
  8. $(Q)rm -rf $(KMOD_BUILD_DIR) && mkdir -p $(KMOD_BUILD_DIR)
  9. $(Q)cp -f $(KMOD_SRCS) $(KMOD_BUILD_DIR)
  10. $(Q)echo "EXTRA_CFLAGS += " \
  11. "-I$(CURDIR)" \
  12. "$(INTERNAL_INCLUDES)" \
  13. | $(SED) 's/-I/\\\n -I/g' \
  14. >> $(KMOD_MAKEFILE)
  15. $(Q)echo "" >> $(KMOD_MAKEFILE)
  16. $(Q)echo "obj-m := $(obj-m)" >> $(KMOD_MAKEFILE)
  17. $(Q)echo "" >> $(KMOD_MAKEFILE)
  18. $(Q) \
  19. $(foreach mod, $(KMOD_NAME), \
  20. echo "$(mod)-objs := $($(mod)-objs)" \
  21. | $(SED) 's/ [_a-z]*\.o/ \\\n &/g' \
  22. >> $(KMOD_MAKEFILE); \
  23. echo "" >> $(KMOD_MAKEFILE); \
  24. )
  25. @$(call Brief_Log,"CC",$(KMOD_TARGET))
  26. $(Q) \
  27. LDFLAGS=""; \
  28. $(MAKE) -C $(KERNEL_DIR) M=$(KMOD_BUILD_DIR) CROSS_COMPILE=$(CROSS_PREFIX) modules
  29. $(Q)cp -f $(KMOD_BUILD_DIR)/*.ko $(CURDIR)
  30. $(Q)mkdir -p $(SYSROOT_LIB)
  31. $(Q)install -m 0755 $(KMOD_BUILD_DIR)/*.ko $(SYSROOT_LIB)
  32. endif # ifdef KMOD_TARGET