define COMPILE_c_o_kern_template $(2): $(1) @$(QUIET_CMD_ECHO) " CC [K] $$@" $(Q) if $$(c_o_kern_COMPILE) $$(kern_CC_DEPFLAGS) $(3) $(KERN_KBUILD_MODNAME) \ -D"KBUILD_BASENAME=$(KERN_MQ)$(notdir $(basename $(1)))$(KERN_MQ)" \ -o $$@ -c $$< ; \ then mv -f "$$@.d.tmp" "$$@.d" ; \ else rm -f "$$@.d.tmp" ; exit 1; \ fi endef define COMPILE_cc_o_kern_template $(2): $(1) @$(QUIET_CMD_ECHO) " CXX [K] $$@" $(Q) if $$(cc_o_kern_COMPILE) $$(kern_CC_DEPFLAGS) $(3) $(KERN_KBUILD_MODNAME) \ -D"KBUILD_BASENAME=$(KERN_MQ)$(notdir $(basename $(1)))$(KERN_MQ)" \ -o $$@ -c $$< ; \ then mv -f "$$@.d.tmp" "$$@.d" ; \ else rm -f "$$@.d.tmp" ; exit 1; \ fi endef define COMPILE_S_o_kern_template $(2): $(1) @$(QUIET_CMD_ECHO) " AS [K] $$@" $(Q) if $$(S_o_kern_COMPILE) $$(kern_CC_DEPFLAGS) $(3) $(KERN_KBUILD_MODNAME) \ -D"KBUILD_BASENAME=$(KERN_MQ)$(notdir $(basename $(1)))$(KERN_MQ)" \ -o $$@ -c $$< ; \ then mv -f "$$@.d.tmp" "$$@.d" ; \ else rm -f "$$@.d.tmp" ; exit 1; \ fi endef define MODULE_kern_template $(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.c=%.o)) $(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.cc=%.o)) $(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.cxx=%.o)) $(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.cpp=%.o)) $(1)_OBJS := $$(sort $$($(1)_OBJS)) KERN_OBJS += $$($(1)_OBJS) KERN_SOURCES += $$($(1)_SOURCES) # this is hack to build "__this_module" structure for 2.6.x kernels # modpost is used for that purpose now $$(warning $(1)_OBJS=$$($(1)_OBJS)) #$(eval $(call COMPILE_c_o_kern_template,$(1).mod.c,$(1).mod.o,-DKBUILD_MODNAME=$(1))) $$(warning $(2)/$(1)$(KERN_LINK_SUFFIX): $$($(1)_OBJS)) $(2)/$(1)$(KERN_LINK_SUFFIX): $$($(1)_OBJS) @$(QUIET_CMD_ECHO) " LD [K] $$@" $(Q) $(LINK) \ -r -e module_initialize -T $(NUTTX_EXPORT)/build/gnu-elf.ld \ -Map $(1)$(KERN_LINK_SUFFIX).map \ $$($(1)_OBJS) $$($(1)_MOREOBJS) $$(LOADLIBES) $$($(1)_LIBS:%=-l%) \ -o $$@ @echo "$(2)/$(1)$(KERN_LINK_SUFFIX): \\" >$(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).d @echo " $(NUTTX_EXPORT)/build/gnu-elf.ld \\" >>$(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).d @$(SED4OMK) -n -e 's|^LOAD \(.*\)$$$$| \1 \&|p' $(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).map|tr '&' '\134' >>$(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).d @echo >>$(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).d endef define LIBRARY_kern_template $(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.c=%.o)) $(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.cc=%.o)) $(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.cxx=%.o)) $(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.cpp=%.o)) $(1)_OBJS := $$(sort $$($(1)_OBJS)) KERN_OBJS += $$($(1)_OBJS) KERN_SOURCES += $$($(1)_SOURCES) $(KERN_LIB_DIR)/lib$(1).a: $$($(1)_OBJS) @$(QUIET_CMD_ECHO) " AR [K] $$@" $(Q) $(KERN_AR) rcs $$@ $$^ endef ifneq ($(kernel_MODULES),) binary-pass_REQUIRED=y endif