From ab37fa65c4216330e62b247232c5f22e68512866 Mon Sep 17 00:00:00 2001 From: Pavel Pisa Date: Mon, 9 Sep 2019 23:53:52 +0200 Subject: [PATCH] NuttX: extend kernel rules to support libraries. Signed-off-by: Pavel Pisa --- snippets/nuttx-bin.omk | 8 ++++++-- snippets/nuttx-kernel.omk | 38 ++++++++++++++++++++++++++++---------- 2 files changed, 34 insertions(+), 12 deletions(-) diff --git a/snippets/nuttx-bin.omk b/snippets/nuttx-bin.omk index d3752ea..516efb8 100644 --- a/snippets/nuttx-bin.omk +++ b/snippets/nuttx-bin.omk @@ -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)/%.*) diff --git a/snippets/nuttx-kernel.omk b/snippets/nuttx-kernel.omk index 6f6f213..dff7e1a 100644 --- a/snippets/nuttx-kernel.omk +++ b/snippets/nuttx-kernel.omk @@ -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 -- 2.39.2