# Final rules for NuttX binaries build requests preparation # Interface to other rules: # Input variables: # bin_PROGRAMS .. list of the require binary programs # utils_PROGRAMS .. list of the development utility programs # USER_BIN_DIR .. directory to store final executables # USER_TESTS_DIR .. directory to store test executables # Defined variables # USER_REGISTRY_DIR .. directory where registry for builtin applications is stored 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_MODULES_DIR := $(OUTPUT_DIR)/$(COMPILED_DIR_NAME)/modules 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=%.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)) @$(call mkdir_def,$(KERN_MODULES_DIR)) @$(call mkdir_def,$(KERN_BUILD_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)))) 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 binary-pass-local: $(kernel_MODULES:%=$(KERN_MODULES_DIR)/lib%.ka) $(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)/%.*) $(Q)rm -f $(USER_OBJS_DIR)/*.pbo $(USER_OBJS_DIR)/*.ko $(USER_OBJS_DIR)/*.tmp