]> rtime.felk.cvut.cz Git - omk.git/blob - snippets/nuttx-bin.omk
NuttX: extend kernel rules to support libraries.
[omk.git] / snippets / nuttx-bin.omk
1
2 # Final rules for NuttX binaries build requests preparation
3
4 # Interface to other rules:
5
6 # Input variables:
7 # bin_PROGRAMS     .. list of the require binary programs
8 # utils_PROGRAMS   .. list of the development utility programs
9 # USER_BIN_DIR     .. directory to store final executables
10 # USER_TESTS_DIR   .. directory to store test executables
11
12 # Defined variables
13 # USER_REGISTRY_DIR .. directory where registry for builtin applications is stored
14
15 USER_REGISTRY_DIR = $(USER_COMPILED_DIR_NAME)/registry
16
17 # Use same output directories for kernel modules as for user
18 KERN_INCLUDE_DIR := $(USER_INCLUDE_DIR)
19 KERN_LIB_DIR     := $(USER_LIB_DIR)
20 KERN_MODULES_DIR := $(OUTPUT_DIR)/$(COMPILED_DIR_NAME)/modules
21 KERN_BUILD_DIR   := $(OUTPUT_DIR)/$(BUILD_DIR_NAME)/kern
22 KERN_LINK_SUFFIX := .elf
23
24 $(eval $(call include-pass-template,$(KERN_INCLUDE_DIR),kernel))
25
26 $(foreach module,$(kernel_MODULES),$(eval $(call MODULE_kern_template,$(module),$(KERN_MODULES_DIR))))
27
28 $(foreach lib,$(kernel_LIBRARIES),$(eval $(call LIBRARY_kern_template,$(lib))))
29
30 KERN_SOURCES := $(sort $(KERN_SOURCES))
31
32 $(foreach src,$(filter %.c,$(KERN_SOURCES)),$(eval $(call COMPILE_c_o_kern_template,$(SOURCES_DIR)/$(src),$(src:%.c=%.o),)))
33 $(foreach src,$(filter %.cc,$(KERN_SOURCES)),$(eval $(call COMPILE_cc_o_kern_template,$(SOURCES_DIR)/$(src),$(src:%.cc=%.o),)))
34 $(foreach src,$(filter %.cxx,$(KERN_SOURCES)),$(eval $(call COMPILE_cc_o_kern_template,$(SOURCES_DIR)/$(src),$(src:%.cxx=%.o),)))
35 $(foreach src,$(filter %.cpp,$(KERN_SOURCES)),$(eval $(call COMPILE_cc_o_kern_template,$(SOURCES_DIR)/$(src),$(src:%.cpp=%.o),)))
36 $(foreach src,$(filter %.S,$(KERN_SOURCES)),$(eval $(call COMPILE_S_o_kern_template,$(SOURCES_DIR)/$(src),$(src:%.S=%.o),)))
37
38 check-dir::
39         @$(call mkdir_def,$(USER_REGISTRY_DIR))
40         @$(call mkdir_def,$(KERN_MODULES_DIR))
41         @$(call mkdir_def,$(KERN_BUILD_DIR))
42
43 $(foreach prog,$(bin_PROGRAMS),$(eval $(call ELF_template,$(prog),$(USER_BIN_DIR))))
44 $(foreach prog,$(test_PROGRAMS),$(eval $(call ELF_template,$(prog),$(USER_TESTS_DIR))))
45
46 binary-pass-local:  $(bin_PROGRAMS:%=$(USER_BIN_DIR)/%.elf) $(test_PROGRAMS:%=$(USER_TESTS_DIR)/%$(KERN_LINK_SUFFIX))
47
48 binary-pass-local:  $(kernel_MODULES:%=$(KERN_MODULES_DIR)/%$(KERN_LINK_SUFFIX))
49
50 $(foreach prog,$(bin_PROGRAMS),$(eval $(call PROGBUILTIN_template,$(prog),$(USER_REGISTRY_DIR),$(USER_REGISTRY_DIR))))
51
52 library-pass-local:  $(bin_PROGRAMS:%=$(USER_REGISTRY_DIR)/%.pbi)
53
54 library-pass-local: $(kernel_LIBRARIES:%=$(KERN_LIB_DIR)/lib%.a)
55
56 clean-local::
57         $(Q)rm -f $(bin_PROGRAMS:%=$(USER_REGISTRY_DIR)/%.*)