]> rtime.felk.cvut.cz Git - omk.git/commitdiff
NuttX: extend kernel rules to support libraries.
authorPavel Pisa <ppisa@pikron.com>
Mon, 9 Sep 2019 21:53:52 +0000 (23:53 +0200)
committerPavel Pisa <ppisa@pikron.com>
Mon, 9 Sep 2019 21:53:52 +0000 (23:53 +0200)
Signed-off-by: Pavel Pisa <ppisa@pikron.com>
snippets/nuttx-bin.omk
snippets/nuttx-kernel.omk

index d3752eaef48b0c3aebc53bdec579f373feebcf03..516efb8d56d2a891ec200f33cd11c2c5f0907229 100644 (file)
@@ -23,6 +23,10 @@ KERN_LINK_SUFFIX := .elf
 
 $(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),)))
@@ -45,9 +49,9 @@ binary-pass-local:  $(kernel_MODULES:%=$(KERN_MODULES_DIR)/%$(KERN_LINK_SUFFIX))
 
 $(foreach prog,$(bin_PROGRAMS),$(eval $(call PROGBUILTIN_template,$(prog),$(USER_REGISTRY_DIR),$(USER_REGISTRY_DIR))))
 
-$(foreach module,$(kernel_MODULES),$(eval $(call MODULE_kern_template,$(module),$(KERN_MODULES_DIR))))
-
 library-pass-local:  $(bin_PROGRAMS:%=$(USER_REGISTRY_DIR)/%.pbi)
 
+library-pass-local: $(kernel_LIBRARIES:%=$(KERN_LIB_DIR)/lib%.a)
+
 clean-local::
        $(Q)rm -f $(bin_PROGRAMS:%=$(USER_REGISTRY_DIR)/%.*)
index 6f6f213646e0aae7132325b44254fab1eadc135b..dff7e1aec419cd66426e57f7476741a2cb4ea2cb 100644 (file)
@@ -1,3 +1,17 @@
+KERN_MQ=\"
+KERN_AR = $(CROSS_COMPILE)ar
+
+c_o_kern_COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(OMK_CPPFLAGS) \
+       $(CPPFLAGS) $(OMK_CFLAGS) $(CFLAGS)
+
+cc_o_kern_COMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(OMK_CPPFLAGS) \
+       $(CPPFLAGS) $(CXXFLAGS) $(OMK_CFLAGS) $(CFLAGS)
+
+S_o_kern_COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+       $(CPPFLAGS) $(OMK_CFLAGS) $(CFLAGS) $(ASFLAGS)
+
+kern_CC_DEPFLAGS = $(CC_DEPFLAGS)
+
 define COMPILE_c_o_kern_template
 
 $(2): $(1)
@@ -41,11 +55,11 @@ endef
 
 
 define MODULE_kern_template
-$(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.c=%.o))
-$(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.cc=%.o))
-$(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.cxx=%.o))
-$(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.cpp=%.o))
-$(1)_OBJS := $$(sort $$($(1)_OBJS))
+$(foreach x, $(SOURCES2OBJS),
+$(1)_OBJS += $$(patsubst %$(notdir $(x)),%$(dir $(x)),$$(filter %$(notdir $(x)),\
+               $$($(1)_SOURCES) $$($(1)_GEN_SOURCES)))
+)
+$(1)_OBJS := $$(sort $$($(1)_OBJS:%/=%))
 
 KERN_OBJS  += $$($(1)_OBJS)
 KERN_SOURCES += $$($(1)_SOURCES)
@@ -64,11 +78,11 @@ $(2)/$(1)$(KERN_LINK_SUFFIX): $$($(1)_OBJS)
 endef
 
 define LIBRARY_kern_template
-$(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.c=%.o))
-$(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.cc=%.o))
-$(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.cxx=%.o))
-$(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.cpp=%.o))
-$(1)_OBJS := $$(sort $$($(1)_OBJS))
+$(foreach x, $(SOURCES2OBJS),
+$(1)_OBJS += $$(patsubst %$(notdir $(x)),%$(dir $(x)),$$(filter %$(notdir $(x)),\
+               $$($(1)_SOURCES) $$($(1)_GEN_SOURCES)))
+)
+$(1)_OBJS := $$(sort $$($(1)_OBJS:%/=%))
 
 KERN_OBJS  += $$($(1)_OBJS)
 KERN_SOURCES += $$($(1)_SOURCES)
@@ -81,3 +95,7 @@ endef
 ifneq ($(kernel_MODULES),)
 binary-pass_REQUIRED=y
 endif
+
+ifneq ($(kernel_LIBRARIES),)
+library-pass_REQUIRED=y
+endif