1 define COMPILE_c_o_kern_template
4 @$(QUIET_CMD_ECHO) " CC [K] $$@"
5 $(Q) if $$(c_o_kern_COMPILE) $$(kern_CC_DEPFLAGS) $(3) $(KERN_KBUILD_MODNAME) \
6 -D"KBUILD_BASENAME=$(KERN_MQ)$(notdir $(basename $(1)))$(KERN_MQ)" \
8 then mv -f "$$@.d.tmp" "$$@.d" ; \
9 else rm -f "$$@.d.tmp" ; exit 1; \
15 define COMPILE_cc_o_kern_template
18 @$(QUIET_CMD_ECHO) " CXX [K] $$@"
19 $(Q) if $$(cc_o_kern_COMPILE) $$(kern_CC_DEPFLAGS) $(3) $(KERN_KBUILD_MODNAME) \
20 -D"KBUILD_BASENAME=$(KERN_MQ)$(notdir $(basename $(1)))$(KERN_MQ)" \
22 then mv -f "$$@.d.tmp" "$$@.d" ; \
23 else rm -f "$$@.d.tmp" ; exit 1; \
29 define COMPILE_S_o_kern_template
32 @$(QUIET_CMD_ECHO) " AS [K] $$@"
33 $(Q) if $$(S_o_kern_COMPILE) $$(kern_CC_DEPFLAGS) $(3) $(KERN_KBUILD_MODNAME) \
34 -D"KBUILD_BASENAME=$(KERN_MQ)$(notdir $(basename $(1)))$(KERN_MQ)" \
36 then mv -f "$$@.d.tmp" "$$@.d" ; \
37 else rm -f "$$@.d.tmp" ; exit 1; \
43 define MODULE_kern_template
44 $(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.c=%.o))
45 $(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.cc=%.o))
46 $(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.cxx=%.o))
47 $(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.cpp=%.o))
48 $(1)_OBJS := $$(sort $$($(1)_OBJS))
50 KERN_OBJS += $$($(1)_OBJS)
51 KERN_SOURCES += $$($(1)_SOURCES)
53 # this is hack to build "__this_module" structure for 2.6.x kernels
54 # modpost is used for that purpose now
56 $$(warning $(1)_OBJS=$$($(1)_OBJS))
58 #$(eval $(call COMPILE_c_o_kern_template,$(1).mod.c,$(1).mod.o,-DKBUILD_MODNAME=$(1)))
60 $$(warning $(2)/$(1)$(KERN_LINK_SUFFIX): $$($(1)_OBJS))
61 $(2)/$(1)$(KERN_LINK_SUFFIX): $$($(1)_OBJS)
62 @$(QUIET_CMD_ECHO) " LD [K] $$@"
64 -r -e module_initialize -T $(NUTTX_EXPORT)/build/gnu-elf.ld \
65 -Map $(1)$(KERN_LINK_SUFFIX).map \
66 $$($(1)_OBJS) $$($(1)_MOREOBJS) $$(LOADLIBES) $$($(1)_LIBS:%=-l%) \
68 @echo "$(2)/$(1)$(KERN_LINK_SUFFIX): \\" >$(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).d
69 @echo " $(NUTTX_EXPORT)/build/gnu-elf.ld \\" >>$(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).d
70 @$(SED4OMK) -n -e 's|^LOAD \(.*\)$$$$| \1 \&|p' $(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).map|tr '&' '\134' >>$(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).d
71 @echo >>$(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).d
74 define LIBRARY_kern_template
75 $(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.c=%.o))
76 $(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.cc=%.o))
77 $(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.cxx=%.o))
78 $(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.cpp=%.o))
79 $(1)_OBJS := $$(sort $$($(1)_OBJS))
81 KERN_OBJS += $$($(1)_OBJS)
82 KERN_SOURCES += $$($(1)_SOURCES)
84 $(KERN_LIB_DIR)/lib$(1).a: $$($(1)_OBJS)
85 @$(QUIET_CMD_ECHO) " AR [K] $$@"
86 $(Q) $(KERN_AR) rcs $$@ $$^
89 ifneq ($(kernel_MODULES),)
90 binary-pass_REQUIRED=y