$(foreach src,$(filter %.cpp,$(KERN_SOURCES)),$(eval $(call COMPILE_cc_o_kern_template,$(SOURCES_DIR)/$(src),$(src:%.cpp=%.ko),)))
$(foreach src,$(filter %.S,$(KERN_SOURCES)),$(eval $(call COMPILE_S_o_kern_template,$(SOURCES_DIR)/$(src),$(src:%.S=%.ko),)))
+$(foreach romfs,$(EMBEDROMFS),$(eval $(call ROMFS_template,$(romfs),$(romfs)_img,$(SOURCES_DIR)/$(romfs))))
+
check-dir::
@$(call mkdir_def,$(USER_REGISTRY_DIR))
@$(call mkdir_def,$(KERN_MODULES_DIR))
$(1)_OBJS += $$(patsubst %$(notdir $(x)),%$(dir $(x)),$$(filter %$(notdir $(x)),\
$$($(1)_SOURCES) $$($(1)_GEN_SOURCES)))
)
+$(1)_OBJS += $$($(1)_EMBEDROMFS:%=%_img.o)
$(1)_OBJS := $$(sort $$($(1)_OBJS:%/=%))
SOURCES += $$($(1)_SOURCES)
+EMBEDROMFS += $$($(1)_EMBEDROMFS)
ifneq ($$($(1)_PROGBUILTIN),)
ifneq ($$($(1)_PROGBUILTIN),all)
$(1)_KMODBUILTIN_LIBS = $$(wildcard $$(KERN_MODULES_DIR)/lib*.ka)
endif
+
ifneq ($$($(1)_PROGBUILTIN_PDAT),)
$(1)_BUILTINTABLE = $(OBJS_DIR)/$(1)-builtintab.c
$(1)_OBJS += $$(patsubst %$(notdir $(x)),%$(dir $(x)),$$(filter %$(notdir $(x)),\
$$($(1)_SOURCES) $$($(1)_GEN_SOURCES)))
)
+$(1)_OBJS += $$($(1)_EMBEDROMFS:%=%_img.o)
$(1)_OBJS := $$(sort $$($(1)_OBJS:%/=%))
SOURCES += $$($(1)_SOURCES)
+EMBEDROMFS += $$($(1)_EMBEDROMFS)
$(LIB_DIR)/lib$(1).a: $$($(1)_OBJS)
@$(QUIET_CMD_ECHO) " AR $$@"
force_builtin_library_hook:
endif
+
+# Syntax: $(call ROMFS_template,<filename>,<filename2>,<directory>) FIXME: Is this correct?
+define ROMFS_template
+
+.PHONY: $(2)
+
+$(2):
+ $(Q) genromfs -f $(2).tmp -V $(1) -d $(3)
+ $(Q) if ( [ ! -e $(2) ] || ! cmp $(2).tmp $(2) ) ; then cp $(2).tmp $(2) ; fi
+
+$(2).o: $(2)
+ @$(QUIET_CMD_ECHO) " ROMFS $$@"
+ $(Q) $(LD) -r --accept-unknown-input-arch -b binary \
+ --defsym=$(2)_len=_binary_$(2)_size \
+ --defsym=$(2)=_binary_$(2)_start -o $$@.tmp $$^
+ $(Q) $(OBJCOPY) --rename-section .data=.rodata,alloc,load,readonly,data,contents \
+ $$@.tmp $$@
+
+endef