3 KERN_OBJCOPY = $(OBJCOPY)
4 KERN_SOURCES2OBJS = .ko/.c .ko/.cc .ko/.cxx .ko/.S .ko/.s .ko/.ko
6 c_o_kern_COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(OMK_CPPFLAGS) \
7 $(CPPFLAGS) $(OMK_CFLAGS) $(CFLAGS)
9 cc_o_kern_COMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(OMK_CPPFLAGS) \
10 $(CPPFLAGS) $(CXXFLAGS) $(OMK_CFLAGS) $(CFLAGS)
12 S_o_kern_COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
13 $(CPPFLAGS) $(OMK_CFLAGS) $(CFLAGS) $(ASFLAGS)
15 kern_CC_DEPFLAGS = $(CC_DEPFLAGS)
17 define COMPILE_c_o_kern_template
20 @$(QUIET_CMD_ECHO) " CC [K] $$@"
21 $(Q) if $$(c_o_kern_COMPILE) $$(kern_CC_DEPFLAGS) $(3) $(KERN_KBUILD_MODNAME) \
22 -D"KBUILD_BASENAME=$(KERN_MQ)$(notdir $(basename $(1)))$(KERN_MQ)" \
24 then mv -f "$$@.d.tmp" "$$@.d" ; \
25 else rm -f "$$@.d.tmp" ; exit 1; \
31 define COMPILE_cc_o_kern_template
34 @$(QUIET_CMD_ECHO) " CXX [K] $$@"
35 $(Q) if $$(cc_o_kern_COMPILE) $$(kern_CC_DEPFLAGS) $(3) $(KERN_KBUILD_MODNAME) \
36 -D"KBUILD_BASENAME=$(KERN_MQ)$(notdir $(basename $(1)))$(KERN_MQ)" \
38 then mv -f "$$@.d.tmp" "$$@.d" ; \
39 else rm -f "$$@.d.tmp" ; exit 1; \
45 define COMPILE_S_o_kern_template
48 @$(QUIET_CMD_ECHO) " AS [K] $$@"
49 $(Q) if $$(S_o_kern_COMPILE) $$(kern_CC_DEPFLAGS) $(3) $(KERN_KBUILD_MODNAME) \
50 -D"KBUILD_BASENAME=$(KERN_MQ)$(notdir $(basename $(1)))$(KERN_MQ)" \
52 then mv -f "$$@.d.tmp" "$$@.d" ; \
53 else rm -f "$$@.d.tmp" ; exit 1; \
59 # Syntax: $(call MODULE_kern_template,<module-name>,<dir>
60 define MODULE_kern_template
61 $(foreach x, $(KERN_SOURCES2OBJS),
62 $(1)_OBJS += $$(patsubst %$(notdir $(x)),%$(dir $(x)),$$(filter %$(notdir $(x)),\
63 $$($(1)_SOURCES) $$($(1)_GEN_SOURCES)))
65 $(1)_OBJS := $$(sort $$($(1)_OBJS:%/=%))
67 KERN_OBJS += $$($(1)_OBJS)
68 KERN_SOURCES += $$($(1)_SOURCES)
70 $(2)/$(1)$(KERN_LINK_SUFFIX): $$($(1)_OBJS)
71 @$(QUIET_CMD_ECHO) " LD [K] $$@"
73 -r -e module_initialize -T $(ELF_FILE_LDSCRIPT) \
74 -Map $(1)$(KERN_LINK_SUFFIX).map \
75 $$($(1)_OBJS) $$($(1)_MOREOBJS) $$(LOADLIBES) $$($(1)_LIBS:%=-l%) \
77 @echo "$(2)/$(1)$(KERN_LINK_SUFFIX): \\" >$(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).d
78 @echo " $(ELF_FILE_LDSCRIPT) \\" >>$(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).d
79 @$(SED4OMK) -n -e 's|^LOAD \(.*\)$$$$| \1 \&|p' $(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).map|tr '&' '\134' >>$(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).d
80 @echo >>$(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).d
82 $(2)/lib$(1).ka: $$($(1)_OBJS)
83 @$(QUIET_CMD_ECHO) " AR [K] $$@"
84 $(Q) $(KERN_AR) rcs $(1).ka.tmp $$^
85 $(Q) $(KERN_OBJCOPY) --redefine-sym module_initialize=$(1)_module_initialize $(1).ka.tmp $$@
89 define LIBRARY_kern_template
90 $(foreach x, $(KERN_SOURCES2OBJS),
91 $(1)_OBJS += $$(patsubst %$(notdir $(x)),%$(dir $(x)),$$(filter %$(notdir $(x)),\
92 $$($(1)_SOURCES) $$($(1)_GEN_SOURCES)))
94 $(1)_OBJS := $$(sort $$($(1)_OBJS:%/=%))
96 KERN_OBJS += $$($(1)_OBJS)
97 KERN_SOURCES += $$($(1)_SOURCES)
99 $(KERN_LIB_DIR)/lib$(1).ka: $$($(1)_OBJS)
100 @$(QUIET_CMD_ECHO) " AR [K] $$@"
101 $(Q) $(KERN_AR) rcs $$@ $$^
104 ifneq ($(kernel_MODULES),)
105 binary-pass_REQUIRED=y
108 ifneq ($(kernel_LIBRARIES),)
109 library-pass_REQUIRED=y