]> rtime.felk.cvut.cz Git - omk.git/blob - snippets/nuttx-kernel.omk
503c2da126ea91993c51fb82a952ed99bce48c2e
[omk.git] / snippets / nuttx-kernel.omk
1 define COMPILE_c_o_kern_template
2
3 $(2): $(1)
4         @$(QUIET_CMD_ECHO) "  CC [K]  $$@"
5         $(Q) if $$(c_o_kern_COMPILE) $$(kern_CC_DEPFLAGS) $(3) $(KERN_KBUILD_MODNAME) \
6         -D"KBUILD_BASENAME=$(KERN_MQ)$(notdir $(basename $(1)))$(KERN_MQ)" \
7         -o $$@ -c $$< ; \
8         then mv -f "$$@.d.tmp" "$$@.d" ; \
9         else rm -f "$$@.d.tmp" ; exit 1; \
10         fi
11 endef
12
13
14
15 define COMPILE_cc_o_kern_template
16
17 $(2): $(1)
18         @$(QUIET_CMD_ECHO) "  CXX [K] $$@"
19         $(Q) if $$(cc_o_kern_COMPILE) $$(kern_CC_DEPFLAGS) $(3) $(KERN_KBUILD_MODNAME) \
20         -D"KBUILD_BASENAME=$(KERN_MQ)$(notdir $(basename $(1)))$(KERN_MQ)" \
21         -o $$@ -c $$< ; \
22         then mv -f "$$@.d.tmp" "$$@.d" ; \
23         else rm -f "$$@.d.tmp" ; exit 1; \
24         fi
25 endef
26
27
28
29 define COMPILE_S_o_kern_template
30
31 $(2): $(1)
32         @$(QUIET_CMD_ECHO) "  AS [K]  $$@"
33         $(Q) if $$(S_o_kern_COMPILE) $$(kern_CC_DEPFLAGS) $(3) $(KERN_KBUILD_MODNAME) \
34         -D"KBUILD_BASENAME=$(KERN_MQ)$(notdir $(basename $(1)))$(KERN_MQ)" \
35         -o $$@ -c $$< ; \
36         then mv -f "$$@.d.tmp" "$$@.d" ; \
37         else rm -f "$$@.d.tmp" ; exit 1; \
38         fi
39 endef
40
41
42
43 define MODULE_kern_template
44 $(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.c=%.o))
45 $(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.cc=%.o))
46 $(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.cxx=%.o))
47 $(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.cpp=%.o))
48 $(1)_OBJS := $$(sort $$($(1)_OBJS))
49
50 KERN_OBJS  += $$($(1)_OBJS)
51 KERN_SOURCES += $$($(1)_SOURCES)
52
53 # this is hack to build "__this_module" structure for 2.6.x kernels
54 # modpost is used for that purpose now
55
56 $$(warning $(1)_OBJS=$$($(1)_OBJS))
57
58 #$(eval $(call COMPILE_c_o_kern_template,$(1).mod.c,$(1).mod.o,-DKBUILD_MODNAME=$(1)))
59
60 $$(warning $(2)/$(1)$(KERN_LINK_SUFFIX): $$($(1)_OBJS))
61 $(2)/$(1)$(KERN_LINK_SUFFIX): $$($(1)_OBJS)
62         @$(QUIET_CMD_ECHO) "  LD [K]  $$@"
63         $(Q) $(LINK) \
64           -r -e module_initialize -T $(NUTTX_EXPORT)/build/gnu-elf.ld \
65           -Map $(1)$(KERN_LINK_SUFFIX).map \
66           $$($(1)_OBJS) $$($(1)_MOREOBJS) $$(LOADLIBES) $$($(1)_LIBS:%=-l%) \
67           -o $$@
68         @echo "$(2)/$(1)$(KERN_LINK_SUFFIX): \\" >$(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).d
69         @echo "  $(NUTTX_EXPORT)/build/gnu-elf.ld \\" >>$(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).d
70         @$(SED4OMK) -n -e 's|^LOAD \(.*\)$$$$|  \1  \&|p' $(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).map|tr '&' '\134'  >>$(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).d
71         @echo >>$(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).d
72 endef
73
74 define LIBRARY_kern_template
75 $(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.c=%.o))
76 $(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.cc=%.o))
77 $(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.cxx=%.o))
78 $(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.cpp=%.o))
79 $(1)_OBJS := $$(sort $$($(1)_OBJS))
80
81 KERN_OBJS  += $$($(1)_OBJS)
82 KERN_SOURCES += $$($(1)_SOURCES)
83
84 $(KERN_LIB_DIR)/lib$(1).a: $$($(1)_OBJS)
85         @$(QUIET_CMD_ECHO) "  AR [K]  $$@"
86         $(Q) $(KERN_AR) rcs $$@ $$^
87 endef
88
89 ifneq ($(kernel_MODULES),)
90 binary-pass_REQUIRED=y
91 endif