KERN_MQ=\" KERN_AR = $(AR) KERN_ARFLAGS = $(ARFLAGS) KERN_OBJCOPY = $(OBJCOPY) KERN_SOURCES2OBJS = .ko/.c .ko/.cc .ko/.cxx .ko/.S .ko/.s .ko/.ko c_o_kern_COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(OMK_CPPFLAGS) \ $(CPPFLAGS) $(OMK_CFLAGS) $(CFLAGS) cc_o_kern_COMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(OMK_CPPFLAGS) \ $(CPPFLAGS) $(CXXFLAGS) $(OMK_CFLAGS) $(CFLAGS) S_o_kern_COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(CPPFLAGS) $(OMK_CFLAGS) $(CFLAGS) $(ASFLAGS) kern_CC_DEPFLAGS = $(CC_DEPFLAGS) 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 # Syntax: $(call MODULE_kern_template,, define MODULE_kern_template $(foreach x, $(KERN_SOURCES2OBJS), $(1)_OBJS += $$(patsubst %$(notdir $(x)),%$(dir $(x)),$$(filter %$(notdir $(x)),\ $$($(1)_SOURCES) $$($(1)_GEN_SOURCES))) ) $(1)_OBJS := $$(sort $$($(1)_OBJS:%/=%)) KERN_OBJS += $$($(1)_OBJS) KERN_SOURCES += $$($(1)_SOURCES) $(2)/$(1)$(KERN_LINK_SUFFIX): $$($(1)_OBJS) @$(QUIET_CMD_ECHO) " LD [K] $$@" $(Q) $(LD_RAW) \ -r -e module_initialize -T $(ELF_FILE_LDSCRIPT) \ -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 " $(ELF_FILE_LDSCRIPT) \\" >>$(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).d @$(SED4OMK) -n -e 's|^LOAD \(.*\)$$$$| \1 \&|p' $(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).map|tr '&' '\134' | grep -v '^ linker [^ ]' >>$(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).d @echo >>$(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).d $(2)/lib$(1).ka: $$($(1)_OBJS) @$(QUIET_CMD_ECHO) " AR [K] $$@" $(Q) $(KERN_AR) $(KERN_ARFLAGS) $(1).ka.tmp $$^ $(Q) $(KERN_OBJCOPY) --redefine-sym module_initialize=$(1)_module_initialize $(1).ka.tmp $$@ endef define LIBRARY_kern_template $(foreach x, $(KERN_SOURCES2OBJS), $(1)_OBJS += $$(patsubst %$(notdir $(x)),%$(dir $(x)),$$(filter %$(notdir $(x)),\ $$($(1)_SOURCES) $$($(1)_GEN_SOURCES))) ) $(1)_OBJS := $$(sort $$($(1)_OBJS:%/=%)) KERN_OBJS += $$($(1)_OBJS) KERN_SOURCES += $$($(1)_SOURCES) $(KERN_LIB_DIR)/lib$(1).ka: $$($(1)_OBJS) @$(QUIET_CMD_ECHO) " AR [K] $$@" $(Q) $(KERN_AR) $(KERN_ARFLAGS) $$@ $$^ endef ifneq ($(kernel_MODULES),) binary-pass_REQUIRED=y endif ifneq ($(kernel_LIBRARIES),) library-pass_REQUIRED=y endif