]> rtime.felk.cvut.cz Git - omk.git/blobdiff - snippets/nuttx-bin.omk
NuttX: use ELF_FILE_LDSCRIPT for ldscript for loadable ELF applications and modules.
[omk.git] / snippets / nuttx-bin.omk
index d3752eaef48b0c3aebc53bdec579f373feebcf03..f77234cf5b8d9d07cc1535dccfc106955319fd6a 100644 (file)
@@ -16,20 +16,26 @@ USER_REGISTRY_DIR = $(USER_COMPILED_DIR_NAME)/registry
 
 # Use same output directories for kernel modules as for user
 KERN_INCLUDE_DIR := $(USER_INCLUDE_DIR)
-KERN_LIB_DIR     := $(USER_LIB_DIR)
 KERN_MODULES_DIR := $(OUTPUT_DIR)/$(COMPILED_DIR_NAME)/modules
-KERN_BUILD_DIR   := $(OUTPUT_DIR)/$(BUILD_DIR_NAME)/kern
-KERN_LINK_SUFFIX := .elf
+KERN_LIB_DIR     := $(KERN_MODULES_DIR)
+KERN_BUILD_DIR   := $(OUTPUT_DIR)/$(BUILD_DIR_NAME)
+KERN_LINK_SUFFIX := .klm
 
 $(eval $(call include-pass-template,$(KERN_INCLUDE_DIR),kernel))
 
+$(foreach module,$(kernel_MODULES),$(eval $(call MODULE_kern_template,$(module),$(KERN_MODULES_DIR))))
+
+$(foreach lib,$(kernel_LIBRARIES),$(eval $(call LIBRARY_kern_template,$(lib))))
+
 KERN_SOURCES := $(sort $(KERN_SOURCES))
 
-$(foreach src,$(filter %.c,$(KERN_SOURCES)),$(eval $(call COMPILE_c_o_kern_template,$(SOURCES_DIR)/$(src),$(src:%.c=%.o),)))
-$(foreach src,$(filter %.cc,$(KERN_SOURCES)),$(eval $(call COMPILE_cc_o_kern_template,$(SOURCES_DIR)/$(src),$(src:%.cc=%.o),)))
-$(foreach src,$(filter %.cxx,$(KERN_SOURCES)),$(eval $(call COMPILE_cc_o_kern_template,$(SOURCES_DIR)/$(src),$(src:%.cxx=%.o),)))
-$(foreach src,$(filter %.cpp,$(KERN_SOURCES)),$(eval $(call COMPILE_cc_o_kern_template,$(SOURCES_DIR)/$(src),$(src:%.cpp=%.o),)))
-$(foreach src,$(filter %.S,$(KERN_SOURCES)),$(eval $(call COMPILE_S_o_kern_template,$(SOURCES_DIR)/$(src),$(src:%.S=%.o),)))
+$(foreach src,$(filter %.c,$(KERN_SOURCES)),$(eval $(call COMPILE_c_o_kern_template,$(SOURCES_DIR)/$(src),$(src:%.c=%.ko),)))
+$(foreach src,$(filter %.cc,$(KERN_SOURCES)),$(eval $(call COMPILE_cc_o_kern_template,$(SOURCES_DIR)/$(src),$(src:%.cc=%.ko),)))
+$(foreach src,$(filter %.cxx,$(KERN_SOURCES)),$(eval $(call COMPILE_cc_o_kern_template,$(SOURCES_DIR)/$(src),$(src:%.cxx=%.ko),)))
+$(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))
@@ -39,15 +45,18 @@ check-dir::
 $(foreach prog,$(bin_PROGRAMS),$(eval $(call ELF_template,$(prog),$(USER_BIN_DIR))))
 $(foreach prog,$(test_PROGRAMS),$(eval $(call ELF_template,$(prog),$(USER_TESTS_DIR))))
 
-binary-pass-local:  $(bin_PROGRAMS:%=$(USER_BIN_DIR)/%.elf) $(test_PROGRAMS:%=$(USER_TESTS_DIR)/%$(KERN_LINK_SUFFIX))
-
+ifneq ($(ELF_FILE_LDSCRIPT),)
+binary-pass-local:  $(bin_PROGRAMS:%=$(USER_BIN_DIR)/%.elf) $(test_PROGRAMS:%=$(USER_TESTS_DIR)/%.elf)
 binary-pass-local:  $(kernel_MODULES:%=$(KERN_MODULES_DIR)/%$(KERN_LINK_SUFFIX))
+endif
 
-$(foreach prog,$(bin_PROGRAMS),$(eval $(call PROGBUILTIN_template,$(prog),$(USER_REGISTRY_DIR),$(USER_REGISTRY_DIR))))
+binary-pass-local:  $(kernel_MODULES:%=$(KERN_MODULES_DIR)/lib%.ka)
 
-$(foreach module,$(kernel_MODULES),$(eval $(call MODULE_kern_template,$(module),$(KERN_MODULES_DIR))))
+$(foreach prog,$(bin_PROGRAMS),$(eval $(call PROGBUILTIN_template,$(prog),$(USER_REGISTRY_DIR),$(USER_REGISTRY_DIR))))
 
 library-pass-local:  $(bin_PROGRAMS:%=$(USER_REGISTRY_DIR)/%.pbi)
 
+library-pass-local: $(kernel_LIBRARIES:%=$(KERN_LIB_DIR)/lib%.ka)
+
 clean-local::
        $(Q)rm -f $(bin_PROGRAMS:%=$(USER_REGISTRY_DIR)/%.*)